diff --git a/README.md b/README.md index adf3fa9c405..c624cc075b4 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ OpenAPI Generator allows generation of API client libraries (SDK generation), se | | Languages/Frameworks | | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **API clients** | **ActionScript**, **Ada**, **Apex**, **Bash**, **C**, **C#** (.net 2.0, 3.5 or later, .NET Standard 1.3 - 2.1, .NET Core 3.1, .NET 5.0. Libraries: RestSharp, GenericHost, HttpClient), **C++** (Arduino, cpp-restsdk, Qt5, Tizen, Unreal Engine 4), **Clojure**, **Crystal**, **Dart**, **Elixir**, **Elm**, **Eiffel**, **Erlang**, **Go**, **Groovy**, **Haskell** (http-client, Servant), **Java** (Apache HttpClient, Jersey1.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured, Spring 5 Web Client, MicroProfile Rest Client), **k6**, **Kotlin**, **Lua**, **Nim**, **Node.js/JavaScript** (ES5, ES6, AngularJS with Google Closure Compiler annotations, Flow types, Apollo GraphQL DataStore), **Objective-C**, **OCaml**, **Perl**, **PHP**, **PowerShell**, **Python**, **R**, **Ruby**, **Rust** (hyper, reqwest, rust-server), **Scala** (akka, http4s, scalaz, sttp, swagger-async-httpclient), **Swift** (2.x, 3.x, 4.x, 5.x), **Typescript** (AngularJS, Angular (2.x - 11.x), Aurelia, Axios, Fetch, Inversify, jQuery, Nestjs, Node, redux-query, Rxjs) | -| **Server stubs** | **Ada**, **C#** (ASP.NET Core, NancyFx, Azure Functions), **C++** (Pistache, Restbed, Qt5 QHTTPEngine), **Erlang**, **F#** (Giraffe), **Go** (net/http, Gin, Echo), **Haskell** (Servant, Yesod), **Java** (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, Jersey, RestEasy, Play Framework, [PKMST](https://github.com/ProKarma-Inc/pkmst-getting-started-examples), [Vert.x](https://vertx.io/), [Apache Camel](https://camel.apache.org/)), **Kotlin** (Spring Boot, Ktor, Vertx), **PHP** (Laravel, Lumen, [Mezzio (fka Zend Expressive)](https://github.com/mezzio/mezzio), Slim, Silex, [Symfony](https://symfony.com/)), **Python** (FastAPI, Flask), **NodeJS**, **Ruby** (Sinatra, Rails5), **Rust** (rust-server), **Scala** (Akka, [Finch](https://github.com/finagle/finch), [Lagom](https://github.com/lagom/lagom), [Play](https://www.playframework.com/), Scalatra) | +| **Server stubs** | **Ada**, **C#** (ASP.NET Core, Azure Functions), **C++** (Pistache, Restbed, Qt5 QHTTPEngine), **Erlang**, **F#** (Giraffe), **Go** (net/http, Gin, Echo), **Haskell** (Servant, Yesod), **Java** (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, Jersey, RestEasy, Play Framework, [PKMST](https://github.com/ProKarma-Inc/pkmst-getting-started-examples), [Vert.x](https://vertx.io/), [Apache Camel](https://camel.apache.org/)), **Kotlin** (Spring Boot, Ktor, Vertx), **PHP** (Laravel, Lumen, [Mezzio (fka Zend Expressive)](https://github.com/mezzio/mezzio), Slim, Silex, [Symfony](https://symfony.com/)), **Python** (FastAPI, Flask), **NodeJS**, **Ruby** (Sinatra, Rails5), **Rust** (rust-server), **Scala** (Akka, [Finch](https://github.com/finagle/finch), [Lagom](https://github.com/lagom/lagom), [Play](https://www.playframework.com/), Scalatra) | | **API documentation generators** | **HTML**, **Confluence Wiki**, **Asciidoc**, **Markdown**, **PlantUML** | | **Configuration files** | [**Apache2**](https://httpd.apache.org/) | | **Others** | **GraphQL**, **JMeter**, **Ktorm**, **MySQL Schema**, **Protocol Buffer**, **WSDL** | @@ -949,7 +949,6 @@ Here is a list of template creators: * C# ASP.NET Core 3.0: @A-Joshi * C# APS.NET Core 3.1: @phatcher * C# Azure functions: @Abrhm7786 - * C# NancyFX: @mstefaniuk * C++ (Qt5 QHttpEngine): @etherealjoy * C++ Pistache: @sebymiano * C++ Restbed: @stkrwork diff --git a/docs/faq-generators.md b/docs/faq-generators.md index 7f21a93860c..370130dbe11 100644 --- a/docs/faq-generators.md +++ b/docs/faq-generators.md @@ -5,7 +5,7 @@ title: "FAQ: Generators" ### What are some server generator use cases? -We have around 40+ server generators, with more added regularly. Some of these include Spring in your choice of Java or Kotlin, the Finch and Scalatra frameworks using Scala, and C# generators for NancyFX and WebAPI (to name only a few). +We have around 40+ server generators, with more added regularly. Some of these include Spring in your choice of Java or Kotlin, the Finch and Scalatra frameworks using Scala, and C# generators for ASP.NET and Azure Functions (to name only a few). Besides generating the server code as a starting point to implement the API backend, here are some use cases of the server generators: diff --git a/docs/generators.md b/docs/generators.md index 595a9e804af..4dda7bc557f 100644 --- a/docs/generators.md +++ b/docs/generators.md @@ -82,7 +82,6 @@ The following generators are available: * [cpp-pistache-server](generators/cpp-pistache-server.md) * [cpp-qt-qhttpengine-server](generators/cpp-qt-qhttpengine-server.md) * [cpp-restbed-server](generators/cpp-restbed-server.md) -* [csharp-nancyfx-deprecated (deprecated)](generators/csharp-nancyfx-deprecated.md) * [csharp-netcore-functions (beta)](generators/csharp-netcore-functions.md) * [erlang-server](generators/erlang-server.md) * [fsharp-functions (beta)](generators/fsharp-functions.md) diff --git a/docs/generators/README.md b/docs/generators/README.md index 8f6ee8a7f15..648de9673e7 100644 --- a/docs/generators/README.md +++ b/docs/generators/README.md @@ -67,7 +67,6 @@ The following generators are available: * [cpp-pistache-server](cpp-pistache-server.md) * [cpp-qt5-qhttpengine-server](cpp-qt5-qhttpengine-server.md) * [cpp-restbed-server](cpp-restbed-server.md) -* [csharp-nancyfx](csharp-nancyfx.md) * [erlang-server](erlang-server.md) * [fsharp-functions (beta)](fsharp-functions.md) * [fsharp-giraffe-server (beta)](fsharp-giraffe-server.md) diff --git a/docs/generators/csharp-nancyfx-deprecated.md b/docs/generators/csharp-nancyfx-deprecated.md deleted file mode 100644 index 519edc27307..00000000000 --- a/docs/generators/csharp-nancyfx-deprecated.md +++ /dev/null @@ -1,209 +0,0 @@ ---- -title: Documentation for the csharp-nancyfx-deprecated Generator ---- - -## METADATA - -| Property | Value | Notes | -| -------- | ----- | ----- | -| generator name | csharp-nancyfx-deprecated | pass this to the generate command after -g | -| generator stability | DEPRECATED | | -| generator type | SERVER | | -| generator language | C# | | -| generator default templating engine | mustache | | -| helpTxt | Generates a C# NancyFX Web API server (deprecated). | | - -## CONFIG OPTIONS -These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details. - -| Option | Description | Values | Default | -| ------ | ----------- | ------ | ------- | -|asyncServer|Set to true to enable the generation of async routes/endpoints.| |false| -|immutable|Enabled by default. If disabled generates model classes with setters| |true| -|interfacePrefix|Prefix interfaces with a community standard or widely accepted prefix.| || -|optionalProjectFile|Generate {PackageName}.csproj.| |true| -|packageContext|Optionally overrides the PackageContext which determines the namespace (namespace=packageName.packageContext). If not set, packageContext will default to basePath.| |null| -|packageGuid|The GUID that will be associated with the C# project| |null| -|packageName|C# package name (convention: Title.Case).| |Org.OpenAPITools| -|packageVersion|C# package version.| |1.0.0| -|returnICollection|Return ICollection<T> instead of the concrete type.| |false| -|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| -|sourceFolder|source folder for generated code| |src| -|useCollection|Deserialize array types to Collection<T> instead of List<T>.| |false| -|useDateTimeOffset|Use DateTimeOffset to model date-time properties| |false| -|writeModulePath|Enabled by default. If disabled, module paths will not mirror api base path| |true| - -## IMPORT MAPPING - -| Type/Alias | Imports | -| ---------- | ------- | - - -## INSTANTIATION TYPES - -| Type/Alias | Instantiated By | -| ---------- | --------------- | -|array|List| -|list|List| -|map|Dictionary| - - -## LANGUAGE PRIMITIVES - - - -## RESERVED WORDS - - - -## FEATURE SET - - -### Client Modification Feature -| Name | Supported | Defined By | -| ---- | --------- | ---------- | -|BasePath|✗|ToolingExtension -|Authorizations|✗|ToolingExtension -|UserAgent|✗|ToolingExtension -|MockServer|✗|ToolingExtension - -### Data Type Feature -| Name | Supported | Defined By | -| ---- | --------- | ---------- | -|Custom|✗|OAS2,OAS3 -|Int32|✓|OAS2,OAS3 -|Int64|✓|OAS2,OAS3 -|Float|✓|OAS2,OAS3 -|Double|✓|OAS2,OAS3 -|Decimal|✓|ToolingExtension -|String|✓|OAS2,OAS3 -|Byte|✓|OAS2,OAS3 -|Binary|✓|OAS2,OAS3 -|Boolean|✓|OAS2,OAS3 -|Date|✓|OAS2,OAS3 -|DateTime|✓|OAS2,OAS3 -|Password|✓|OAS2,OAS3 -|File|✓|OAS2 -|Array|✓|OAS2,OAS3 -|Maps|✓|ToolingExtension -|CollectionFormat|✓|OAS2 -|CollectionFormatMulti|✓|OAS2 -|Enum|✓|OAS2,OAS3 -|ArrayOfEnum|✓|ToolingExtension -|ArrayOfModel|✓|ToolingExtension -|ArrayOfCollectionOfPrimitives|✓|ToolingExtension -|ArrayOfCollectionOfModel|✓|ToolingExtension -|ArrayOfCollectionOfEnum|✓|ToolingExtension -|MapOfEnum|✓|ToolingExtension -|MapOfModel|✓|ToolingExtension -|MapOfCollectionOfPrimitives|✓|ToolingExtension -|MapOfCollectionOfModel|✓|ToolingExtension -|MapOfCollectionOfEnum|✓|ToolingExtension - -### Documentation Feature -| Name | Supported | Defined By | -| ---- | --------- | ---------- | -|Readme|✗|ToolingExtension -|Model|✓|ToolingExtension -|Api|✓|ToolingExtension - -### Global Feature -| Name | Supported | Defined By | -| ---- | --------- | ---------- | -|Host|✓|OAS2,OAS3 -|BasePath|✓|OAS2,OAS3 -|Info|✓|OAS2,OAS3 -|Schemes|✗|OAS2,OAS3 -|PartialSchemes|✓|OAS2,OAS3 -|Consumes|✓|OAS2 -|Produces|✓|OAS2 -|ExternalDocumentation|✓|OAS2,OAS3 -|Examples|✓|OAS2,OAS3 -|XMLStructureDefinitions|✗|OAS2,OAS3 -|MultiServer|✗|OAS3 -|ParameterizedServer|✗|OAS3 -|ParameterStyling|✗|OAS3 -|Callbacks|✗|OAS3 -|LinkObjects|✗|OAS3 - -### Parameter Feature -| Name | Supported | Defined By | -| ---- | --------- | ---------- | -|Path|✓|OAS2,OAS3 -|Query|✓|OAS2,OAS3 -|Header|✓|OAS2,OAS3 -|Body|✓|OAS2 -|FormUnencoded|✓|OAS2 -|FormMultipart|✓|OAS2 -|Cookie|✗|OAS3 - -### Schema Support Feature -| Name | Supported | Defined By | -| ---- | --------- | ---------- | -|Simple|✓|OAS2,OAS3 -|Composite|✓|OAS2,OAS3 -|Polymorphism|✓|OAS2,OAS3 -|Union|✗|OAS3 - -### Security Feature -| Name | Supported | Defined By | -| ---- | --------- | ---------- | -|BasicAuth|✗|OAS2,OAS3 -|ApiKey|✗|OAS2,OAS3 -|OpenIDConnect|✗|OAS3 -|BearerToken|✗|OAS3 -|OAuth2_Implicit|✗|OAS2,OAS3 -|OAuth2_Password|✗|OAS2,OAS3 -|OAuth2_ClientCredentials|✗|OAS2,OAS3 -|OAuth2_AuthorizationCode|✗|OAS2,OAS3 - -### Wire Format Feature -| Name | Supported | Defined By | -| ---- | --------- | ---------- | -|JSON|✓|OAS2,OAS3 -|XML|✓|OAS2,OAS3 -|PROTOBUF|✗|ToolingExtension -|Custom|✗|OAS2,OAS3 diff --git a/docs/migration-from-swagger-codegen.md b/docs/migration-from-swagger-codegen.md index f4bd36b6d33..85232ebb91b 100644 --- a/docs/migration-from-swagger-codegen.md +++ b/docs/migration-from-swagger-codegen.md @@ -130,7 +130,6 @@ All languages of `swagger-codegen` have been migrated to `openapi-generator`, bu | `lumen` | `php-lumen` | | `slim` | `php-slim` | | `ze-ph` | `php-mezzio-ph` | -| `nancyfx` | `csharp-nancyfx` | We provide a temporary mapping in code for these old values. You'll receive a warning with instructions to migrate to the new names. diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNancyFXServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNancyFXServerCodegen.java deleted file mode 100644 index 280d26f7a16..00000000000 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNancyFXServerCodegen.java +++ /dev/null @@ -1,441 +0,0 @@ -/* - * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) - * Copyright 2018 SmartBear Software - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.openapitools.codegen.languages; - -import com.google.common.base.Predicate; -import com.google.common.collect.*; -import io.swagger.v3.oas.models.OpenAPI; -import io.swagger.v3.oas.models.media.Schema; -import org.openapitools.codegen.*; -import org.openapitools.codegen.meta.features.*; -import org.openapitools.codegen.meta.GeneratorMetadata; -import org.openapitools.codegen.meta.Stability; -import org.openapitools.codegen.utils.ModelUtils; -import org.openapitools.codegen.utils.URLPathUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.net.URL; -import java.util.*; -import java.util.Map.Entry; - -import static com.google.common.base.Strings.isNullOrEmpty; -import static java.util.Arrays.asList; -import static java.util.UUID.randomUUID; -import static org.apache.commons.lang3.StringUtils.capitalize; -import static org.openapitools.codegen.CodegenConstants.*; -import static org.openapitools.codegen.CodegenType.SERVER; -import static org.openapitools.codegen.utils.StringUtils.camelize; - -public class CSharpNancyFXServerCodegen extends AbstractCSharpCodegen { - private final Logger LOGGER = LoggerFactory.getLogger(CSharpNancyFXServerCodegen.class); - - private static final String API_NAMESPACE = "Modules"; - private static final String MODEL_NAMESPACE = "Models"; - private static final String IMMUTABLE_OPTION = "immutable"; - private static final String USE_BASE_PATH = "writeModulePath"; - private static final String PACKAGE_CONTEXT = "packageContext"; - private static final String ASYNC_SERVER = "asyncServer"; - - private static final Map> propertyToOpenAPITypeMapping = - createPropertyToOpenAPITypeMapping(); - - private String packageGuid = "{" + randomUUID().toString().toUpperCase(Locale.ROOT) + "}"; - - private final Map dependencies = new HashMap<>(); - private final Set parentModels = new HashSet<>(); - private final Multimap childrenByParent = ArrayListMultimap.create(); - private final BiMap modelNameMapping = HashBiMap.create(); - - /** - * If set to true, we will generate c# async endpoints and service interfaces - */ - private boolean asyncServer = false; - - public CSharpNancyFXServerCodegen() { - super(); - - modifyFeatureSet(features -> features - .excludeDocumentationFeatures(DocumentationFeature.Readme) - .securityFeatures(EnumSet.noneOf(SecurityFeature.class)) - .excludeGlobalFeatures( - GlobalFeature.XMLStructureDefinitions, - GlobalFeature.Callbacks, - GlobalFeature.LinkObjects, - GlobalFeature.ParameterStyling - ) - .includeSchemaSupportFeatures( - SchemaSupportFeature.Polymorphism - ) - .excludeParameterFeatures( - ParameterFeature.Cookie - ) - ); - - generatorMetadata = GeneratorMetadata.newBuilder(generatorMetadata) - .stability(Stability.DEPRECATED) - .build(); - - outputFolder = "generated-code" + File.separator + getName(); - apiTemplateFiles.put("api.mustache", ".cs"); - - // Early versions use no prefix for interfaces. Defaulting to I- common practice would break existing users. - setInterfacePrefix(""); - - // contextually reserved words - setReservedWordsLowerCase( - asList("var", "async", "await", "dynamic", "yield") - ); - - cliOptions.clear(); - - // CLI options - addOption(PACKAGE_NAME, "C# package name (convention: Title.Case).", packageName); - addOption(PACKAGE_VERSION, "C# package version.", packageVersion); - addOption(SOURCE_FOLDER, SOURCE_FOLDER_DESC, sourceFolder); - addOption(INTERFACE_PREFIX, INTERFACE_PREFIX_DESC, interfacePrefix); - addOption(OPTIONAL_PROJECT_GUID, OPTIONAL_PROJECT_GUID_DESC, null); - addOption(PACKAGE_CONTEXT, "Optionally overrides the PackageContext which determines the namespace (namespace=packageName.packageContext). If not set, packageContext will default to basePath.", null); - - // CLI Switches - addSwitch(SORT_PARAMS_BY_REQUIRED_FLAG, SORT_PARAMS_BY_REQUIRED_FLAG_DESC, sortParamsByRequiredFlag); - addSwitch(OPTIONAL_PROJECT_FILE, OPTIONAL_PROJECT_FILE_DESC, optionalProjectFileFlag); - addSwitch(USE_DATETIME_OFFSET, USE_DATETIME_OFFSET_DESC, useDateTimeOffsetFlag); - addSwitch(USE_COLLECTION, USE_COLLECTION_DESC, useCollection); - addSwitch(RETURN_ICOLLECTION, RETURN_ICOLLECTION_DESC, returnICollection); - addSwitch(IMMUTABLE_OPTION, "Enabled by default. If disabled generates model classes with setters", true); - addSwitch(USE_BASE_PATH, "Enabled by default. If disabled, module paths will not mirror api base path", true); - addSwitch(ASYNC_SERVER, "Set to true to enable the generation of async routes/endpoints.", this.asyncServer); - typeMapping.putAll(nodaTimeTypesMappings()); - languageSpecificPrimitives.addAll(nodaTimePrimitiveTypes()); - } - - @Override - public CodegenType getTag() { - return SERVER; - } - - @Override - public String getName() { - return "csharp-nancyfx-deprecated"; - } - - @Override - public String getHelp() { - return "Generates a C# NancyFX Web API server (deprecated)."; - } - - @Override - public void processOpts() { - super.processOpts(); - - apiPackage = isNullOrEmpty(packageName) ? API_NAMESPACE : packageName + "." + API_NAMESPACE; - modelPackage = isNullOrEmpty(packageName) ? MODEL_NAMESPACE : packageName + "." + MODEL_NAMESPACE; - - supportingFiles.add(new SupportingFile("gitignore", "", ".gitignore")); - supportingFiles.add(new SupportingFile("parameters.mustache", sourceFile("Utils"), "Parameters.cs")); - supportingFiles.add(new SupportingFile("localDateConverter.mustache", sourceFile("Utils"), "LocalDateConverter.cs")); - supportingFiles.add(new SupportingFile("packages.config.mustache", sourceFolder(), "packages.config")); - supportingFiles.add(new SupportingFile("nuspec.mustache", sourceFolder(), packageName + ".nuspec")); - - if (optionalProjectFileFlag) { - supportingFiles.add(new SupportingFile("Solution.mustache", "", packageName + ".sln")); - supportingFiles.add(new SupportingFile("Project.mustache", sourceFolder(), packageName + ".csproj")); - } - - if (additionalProperties.containsKey(OPTIONAL_PROJECT_GUID)) { - setPackageGuid((String) additionalProperties.get(OPTIONAL_PROJECT_GUID)); - } - - if (additionalProperties.containsKey(ASYNC_SERVER)) { - setAsyncServer(convertPropertyToBooleanAndWriteBack(ASYNC_SERVER)); - } else { - additionalProperties.put(ASYNC_SERVER, this.asyncServer); - } - - additionalProperties.put("packageGuid", packageGuid); - - setupModelTemplate(); - processImportedMappings(); - appendDependencies(); - } - - private void setupModelTemplate() { - final Object immutableOption = additionalProperties.get(IMMUTABLE_OPTION); - if (immutableOption != null && "false".equalsIgnoreCase(immutableOption.toString())) { - LOGGER.info("Using mutable model template"); - modelTemplateFiles.put("modelMutable.mustache", ".cs"); - } else { - LOGGER.info("Using immutable model template"); - modelTemplateFiles.put("model.mustache", ".cs"); - } - } - - private void processImportedMappings() { - for (final Entry entry : ImmutableSet.copyOf(importMapping.entrySet())) { - final String model = entry.getKey(); - final String[] namespaceInfo = entry.getValue().split("\\s"); - final String[] namespace = (namespaceInfo.length > 0 ? namespaceInfo[0].trim() : "").split(":"); - final String namespaceName = namespace.length > 0 ? namespace[0].trim() : null; - final String modelClass = namespace.length > 1 ? namespace[1].trim() : null; - final String assembly = namespaceInfo.length > 1 ? namespaceInfo[1].trim() : null; - final String assemblyVersion = namespaceInfo.length > 2 ? namespaceInfo[2].trim() : null; - final String assemblyFramework = namespaceInfo.length > 3 ? namespaceInfo[3].trim() : "net45"; - - if (isNullOrEmpty(model) || isNullOrEmpty(namespaceName)) { - LOGGER.warn(String.format(Locale.ROOT, "Could not import: '%s' - invalid namespace: '%s'", model, entry.getValue())); - importMapping.remove(model); - } else { - LOGGER.info(String.format(Locale.ROOT, "Importing: '%s' from '%s' namespace.", model, namespaceName)); - importMapping.put(model, namespaceName); - } - if (!isNullOrEmpty(modelClass)) { - LOGGER.info(String.format(Locale.ROOT, "Mapping: '%s' class to '%s'", model, modelClass)); - modelNameMapping.put(model, modelClass); - } - if (assembly != null && assemblyVersion != null) { - LOGGER.info(String.format(Locale.ROOT, "Adding dependency: '%s', version: '%s', framework: '%s'", - assembly, assemblyVersion, assemblyVersion)); - dependencies.put(assembly, new DependencyInfo(assemblyVersion, assemblyFramework)); - } - } - } - - private void appendDependencies() { - final List> listOfDependencies = new ArrayList<>(); - for (final Entry dependency : dependencies.entrySet()) { - final Map dependencyInfo = new HashMap<>(); - dependencyInfo.put("dependency", dependency.getKey()); - dependencyInfo.put("dependencyVersion", dependency.getValue().version); - dependencyInfo.put("dependencyFramework", dependency.getValue().framework); - listOfDependencies.add(dependencyInfo); - } - additionalProperties.put("dependencies", listOfDependencies); - } - - private String sourceFolder() { - return "src" + File.separator + packageName; - } - - private String sourceFile(final String fileName) { - return sourceFolder() + File.separator + fileName; - } - - public void setPackageGuid(String packageGuid) { - this.packageGuid = packageGuid; - } - - public void setAsyncServer(boolean asyncServer) { - this.asyncServer = asyncServer; - } - - @Override - public String apiFileFolder() { - return outputFolder + File.separator + sourceFolder() + File.separator + API_NAMESPACE; - } - - @Override - public String modelFileFolder() { - return outputFolder + File.separator + sourceFolder() + File.separator + MODEL_NAMESPACE; - } - - @Override - protected void processOperation(final CodegenOperation operation) { - super.processOperation(operation); - if (!isNullOrEmpty(operation.path) && operation.path.contains("?")) { - operation.path = operation.path.replace("?", "/"); - } - if (!isNullOrEmpty(operation.httpMethod)) { - operation.httpMethod = capitalize(operation.httpMethod.toLowerCase(Locale.ROOT)); - } - } - - @Override - public Map postProcessAllModels(final Map models) { - final Map processed = super.postProcessAllModels(models); - postProcessParentModels(models); - return processed; - } - - private void postProcessParentModels(final Map models) { - LOGGER.debug("Processing parents: {}", parentModels); - for (final String parent : parentModels) { - final CodegenModel parentModel = ModelUtils.getModelByName(parent, models); - if (parentModel != null) { - parentModel.hasChildren = true; - final Collection childrenModels = childrenByParent.get(parent); - for (final CodegenModel child : childrenModels) { - processParentPropertiesInChildModel(parentModel, child); - } - } - } - } - - private void processParentPropertiesInChildModel(final CodegenModel parent, final CodegenModel child) { - final Map childPropertiesByName = new HashMap<>(child.vars.size()); - for (final CodegenProperty property : child.vars) { - childPropertiesByName.put(property.name, property); - } - CodegenProperty previousParentVar = null; - for (final CodegenProperty property : parent.vars) { - final CodegenProperty duplicatedByParent = childPropertiesByName.get(property.name); - if (duplicatedByParent != null) { - LOGGER.info(String.format(Locale.ROOT, "Property: '%s' in '%s' model is inherited from '%s'", - property.name, child.classname, parent.classname)); - duplicatedByParent.isInherited = true; - final CodegenProperty parentVar = duplicatedByParent.clone(); - child.parentVars.add(parentVar); - previousParentVar = parentVar; - } - } - } - - @Override - public void postProcessModelProperty(final CodegenModel model, final CodegenProperty property) { - super.postProcessModelProperty(model, property); - if (!isNullOrEmpty(model.parent)) { - parentModels.add(model.parent); - if (!childrenByParent.containsEntry(model.parent, model)) { - childrenByParent.put(model.parent, model); - } - } - } - - @Override - public String toEnumVarName(final String name, final String datatype) { - if (name.length() == 0) { - return "Empty"; - } - - final String enumName = camelize( - sanitizeName(name) - .replaceFirst("^_", "") - .replaceFirst("_$", "") - .replaceAll("-", "_")); - final String result; - if (enumName.matches("\\d.*")) { - result = "_" + enumName; - } else { - result = enumName; - } - LOGGER.debug(String.format(Locale.ROOT, "toEnumVarName('%s', %s) = '%s'", name, datatype, enumName)); - return result; - } - - @Override - public String toApiName(final String name) { - final String apiName; - if (isNullOrEmpty(name)) { - apiName = "Default"; - } else { - apiName = capitalize(name); - } - LOGGER.debug(String.format(Locale.ROOT, "toApiName('%s') = '%s'", name, apiName)); - return apiName; - } - - @Override - public String toApiFilename(final String name) { - return super.toApiFilename(name) + "Module"; - } - - @Override - public String toModelImport(final String name) { - final String result; - if (modelNameMapping.containsValue(name)) { - final String modelName = modelNameMapping.inverse().get(name); - result = importMapping.containsKey(modelName) ? - importMapping.get(modelName) : super.toModelImport(name); - } else if (importMapping.containsKey(name)) { - result = importMapping.get(name); - } else { - result = null; - } - LOGGER.debug(String.format(Locale.ROOT, "toModelImport('%s') = '%s'", name, result)); - return result; - } - - @Override - public String toModelName(final String name) { - final String modelName = super.toModelName(name); - final String mappedModelName = modelNameMapping.get(modelName); - return isNullOrEmpty(mappedModelName) ? modelName : mappedModelName; - } - - @Override - public void preprocessOpenAPI(final OpenAPI openAPI) { - URL url = URLPathUtils.getServerURL(openAPI, serverVariableOverrides()); - String path = URLPathUtils.getPath(url, "/"); - final String packageContextOption = (String) additionalProperties.get(PACKAGE_CONTEXT); - additionalProperties.put("packageContext", packageContextOption == null ? sanitizeName(path) : packageContextOption); - final Object basePathOption = additionalProperties.get(USE_BASE_PATH); - additionalProperties.put("baseContext", basePathOption == null ? path : "/"); - } - - @Override - public String toEnumName(final CodegenProperty property) { - return sanitizeName(camelize(property.name)) + "Enum"; - } - - @Override - public String getSchemaType(final Schema property) { - for (Entry> entry : propertyToOpenAPITypeMapping.entrySet()) { - if (entry.getValue().apply(property)) { - return entry.getKey(); - } - } - return super.getSchemaType(property); - } - - private static Map> createPropertyToOpenAPITypeMapping() { - final ImmutableMap.Builder> mapping = ImmutableMap.builder(); - mapping.put("time", timeProperty()); - return mapping.build(); - } - - private static Predicate timeProperty() { - return new Predicate() { - @Override - public boolean apply(Schema property) { - return ModelUtils.isStringSchema(property) && "time".equalsIgnoreCase(property.getFormat()); - } - }; - } - - private static Map nodaTimeTypesMappings() { - return ImmutableMap.of( - "time", "LocalTime?", - "date", "LocalDate?", - "datetime", "ZonedDateTime?"); - } - - private static Set nodaTimePrimitiveTypes() { - return ImmutableSet.of("LocalTime?", "LocalDate?", "ZonedDateTime?"); - } - - private static class DependencyInfo { - private final String version; - private final String framework; - - private DependencyInfo(final String version, final String framework) { - this.version = version; - this.framework = framework; - } - } -} diff --git a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig index daa315be174..0b6c579e434 100644 --- a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig +++ b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig @@ -22,7 +22,6 @@ org.openapitools.codegen.languages.CppUE4ClientCodegen org.openapitools.codegen.languages.CSharpClientCodegen org.openapitools.codegen.languages.CSharpNetCoreClientCodegen org.openapitools.codegen.languages.CSharpDotNet2ClientCodegen -org.openapitools.codegen.languages.CSharpNancyFXServerCodegen org.openapitools.codegen.languages.CsharpNetcoreFunctionsServerCodegen org.openapitools.codegen.languages.DartClientCodegen org.openapitools.codegen.languages.DartDioClientCodegen diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/Project.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/Project.mustache deleted file mode 100644 index 0b24e4c020a..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/Project.mustache +++ /dev/null @@ -1,79 +0,0 @@ - - - - Debug - AnyCPU - {{packageGuid}} - Library - Properties - {{packageName}}.{{packageContext}} - {{packageName}} - {{^supportsUWP}} - v4.5 - {{/supportsUWP}} - {{#supportsUWP}} - UAP - 10.0.10240.0 - 10.0.10240.0 - 14 - {{/supportsUWP}} - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - bin\Debug\{{packageName}}.XML - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - bin\Release\{{packageName}}.XML - - - - ..\..\packages\Nancy.1.4.3\lib\net40\Nancy.dll - True - - - ..\..\packages\NodaTime.1.3.1\lib\net35-Client\NodaTime.dll - True - - - ..\..\packages\Sharpility.1.2.2\lib\net45\Sharpility.dll - True - - - ..\..\packages\System.Collections.Immutable.1.1.37\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll - True - {{#dependencies}} - - ..\..\packages\{{dependency}}.{{dependencyVersion}}\lib\{{dependencyFramework}}\{{dependency}}.dll - True - - {{/dependencies}} - - - - - - - - - - - - - - - - - diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/Solution.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/Solution.mustache deleted file mode 100644 index 7f2d34e366e..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/Solution.mustache +++ /dev/null @@ -1,25 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -VisualStudioVersion = 12.0.0.0 -MinimumVisualStudioVersion = 10.0.0.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "{{packageName}}", "src\{{packageName}}\{{packageName}}.csproj", "{{packageGuid}}" -EndProject -Global -GlobalSection(SolutionConfigurationPlatforms) = preSolution -Debug|Any CPU = Debug|Any CPU -Release|Any CPU = Release|Any CPU -EndGlobalSection -GlobalSection(ProjectConfigurationPlatforms) = postSolution -{{packageGuid}}.Debug|Any CPU.ActiveCfg = Debug|Any CPU -{{packageGuid}}.Debug|Any CPU.Build.0 = Debug|Any CPU -{{packageGuid}}.Release|Any CPU.ActiveCfg = Release|Any CPU -{{packageGuid}}.Release|Any CPU.Build.0 = Release|Any CPU -{19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU -{19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.Build.0 = Debug|Any CPU -{19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.ActiveCfg = Release|Any CPU -{19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.Build.0 = Release|Any CPU -EndGlobalSection -GlobalSection(SolutionProperties) = preSolution -HideSolutionNode = FALSE -EndGlobalSection -EndGlobal \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/api.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/api.mustache deleted file mode 100644 index c680c47a114..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/api.mustache +++ /dev/null @@ -1,78 +0,0 @@ -using System; -using Nancy; -using Nancy.ModelBinding; -using System.Collections.Generic; -using Sharpility.Base; -using {{packageName}}.{{packageContext}}.Models; -using {{packageName}}.{{packageContext}}.Utils; -using NodaTime;{{#asyncServer}} -using System.Threading.Tasks;{{/asyncServer}} - -namespace {{packageName}}.{{packageContext}}.Modules -{ {{#operations}}{{#operation}}{{#allParams}}{{#isEnum}} - {{>innerApiEnum}}{{/isEnum}}{{/allParams}}{{/operation}} - - /// - /// Module processing requests of {{classname}} domain. - /// - public sealed class {{classname}}Module : NancyModule - { - /// - /// Sets up HTTP methods mappings. - /// - /// Service handling requests - public {{classname}}Module({{interfacePrefix}}{{classname}}Service service) : base("{{{baseContext}}}") - { {{#operation}} - {{httpMethod}}["{{{path}}}"{{#asyncServer}}, true{{/asyncServer}}] = {{#asyncServer}}async (parameters, ct){{/asyncServer}}{{^asyncServer}}parameters{{/asyncServer}} => - { - {{#allParams}}{{#isBodyParam}}var {{paramName}} = this.Bind<{{&dataType}}>();{{/isBodyParam}}{{^isBodyParam}}{{#isEnum}}var {{paramName}} = Parameters.ValueOf<{{>innerApiEnumName}}?>({{>innerParameterValueOfArgs}});{{/isEnum}}{{^isEnum}}var {{paramName}} = Parameters.ValueOf<{{&dataType}}>({{>innerParameterValueOfArgs}});{{/isEnum}}{{^-last}} - {{/-last}}{{/isBodyParam}}{{/allParams}}{{#allParams}}{{#required}} - Preconditions.IsNotNull({{paramName}}, "Required parameter: '{{paramName}}' is missing at '{{operationId}}'"); - {{/required}}{{/allParams}} - {{#returnType}}return {{/returnType}}{{#asyncServer}}await {{/asyncServer}}service.{{operationId}}(Context{{#allParams.0}}, {{/allParams.0}}{{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}){{#returnType}}{{#isArray}}.ToArray(){{/isArray}}{{/returnType}};{{^returnType}} - return new Response { ContentType = "{{produces.0.mediaType}}"};{{/returnType}} - }; -{{/operation}} - } - } - - /// - /// Service handling {{classname}} requests. - /// - public interface {{interfacePrefix}}{{classname}}Service - { - {{#operation}}/// - /// {{notes}} - /// - /// Context of request - {{#allParams}}/// {{description}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}}{{#isDeprecated}} (deprecated){{/isDeprecated}} - {{/allParams}}/// {{returnType}} - {{#isDeprecated}} - [Obsolete] - {{/isDeprecated}} - {{#asyncServer}}{{#returnType}}Task<{{{.}}}>{{/returnType}}{{^returnType}}Task{{/returnType}}{{/asyncServer}}{{^asyncServer}}{{#returnType}}{{&returnType}}{{/returnType}}{{^returnType}}void{{/returnType}}{{/asyncServer}} {{operationId}}(NancyContext context{{#allParams.0}}, {{/allParams.0}}{{>paramsList}});{{^-last}} - - {{/-last}}{{/operation}} - } - - /// - /// Abstraction of {{classname}}Service. - /// - public abstract class Abstract{{classname}}Service: {{interfacePrefix}}{{classname}}Service - { - {{#operation}}{{#isDeprecated}}[Obsolete] - {{/isDeprecated}}public virtual {{#asyncServer}}{{#returnType}}Task<{{{.}}}>{{/returnType}}{{^returnType}}Task{{/returnType}}{{/asyncServer}}{{^asyncServer}}{{#returnType}}{{&returnType}}{{/returnType}}{{^returnType}}void{{/returnType}}{{/asyncServer}} {{operationId}}(NancyContext context{{#allParams.0}}, {{/allParams.0}}{{>paramsList}}) - { - {{^asyncServer}}{{#returnType}}return {{/returnType}}{{/asyncServer}}{{#asyncServer}}return {{/asyncServer}}{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}); - }{{^-last}} - - {{/-last}}{{/operation}} - - {{#operation}}{{#isDeprecated}}[Obsolete] - {{/isDeprecated}}protected abstract {{#asyncServer}}{{#returnType}}Task<{{{.}}}>{{/returnType}}{{^returnType}}Task{{/returnType}}{{/asyncServer}}{{^asyncServer}}{{#returnType}}{{&returnType}}{{/returnType}}{{^returnType}}void{{/returnType}}{{/asyncServer}} {{operationId}}({{>paramsList}});{{^-last}} - - {{/-last}}{{/operation}} - } - -{{/operations}} -} diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/gitignore b/modules/openapi-generator/src/main/resources/csharp-nancyfx/gitignore deleted file mode 100644 index 1ee53850b84..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/gitignore +++ /dev/null @@ -1,362 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*.json -coverage*.xml -coverage*.info - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/innerApiEnum.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/innerApiEnum.mustache deleted file mode 100644 index eb456ababf9..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/innerApiEnum.mustache +++ /dev/null @@ -1,10 +0,0 @@ -/// - /// {{description}}{{^description}}{{classname}}{{/description}} - /// - public enum {{>innerApiEnumName}} - { - {{#allowableValues}} -{{#values}} {{&.}}{{^isInteger}} = {{-index}}{{/isInteger}}{{^-last}}, {{/-last}} -{{/values}} - {{/allowableValues}} - }; diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/innerApiEnumName.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/innerApiEnumName.mustache deleted file mode 100644 index f2b90daa144..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/innerApiEnumName.mustache +++ /dev/null @@ -1 +0,0 @@ -{{#datatypeWithEnum}}{{operationId}}{{^isContainer}}{{.}}{{/isContainer}}{{#isContainer}}{{{items.datatypeWithEnum}}}{{/isContainer}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/innerModelEnum.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/innerModelEnum.mustache deleted file mode 100644 index 3fd8e401dcf..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/innerModelEnum.mustache +++ /dev/null @@ -1 +0,0 @@ -public enum {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} { {{#allowableValues}}{{#enumVars}}{{{name}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}} }; \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/innerParameterType.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/innerParameterType.mustache deleted file mode 100644 index c9a8cb66449..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/innerParameterType.mustache +++ /dev/null @@ -1 +0,0 @@ -{{#isQueryParam}}ParameterType.Query{{/isQueryParam}}{{#isPathParam}}ParameterType.Path{{/isPathParam}}{{#isHeaderParam}}ParameterType.Header{{/isHeaderParam}}{{^isQueryParam}}{{^isPathParam}}{{^isHeaderParam}}ParameterType.Undefined{{/isHeaderParam}}{{/isPathParam}}{{/isQueryParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/innerParameterValueOfArgs.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/innerParameterValueOfArgs.mustache deleted file mode 100644 index 2aca302eecf..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/innerParameterValueOfArgs.mustache +++ /dev/null @@ -1 +0,0 @@ -parameters, Context.Request, "{{paramName}}", {{>innerParameterType}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/localDateConverter.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/localDateConverter.mustache deleted file mode 100644 index d709c22cc1b..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/localDateConverter.mustache +++ /dev/null @@ -1,55 +0,0 @@ -using Nancy.Bootstrapper; -using Nancy.Json; -using NodaTime; -using NodaTime.Text; -using System; -using System.Collections.Generic; - -namespace {{packageName}}.{{packageContext}}.Utils -{ - /// - /// (De)serializes a to a string using - /// the RFC3339 - /// full-date format. - /// - public class LocalDateConverter : JavaScriptPrimitiveConverter, IApplicationStartup - { - public override IEnumerable SupportedTypes - { - get - { - yield return typeof(LocalDate); - yield return typeof(LocalDate?); - } - } - - public void Initialize(IPipelines pipelines) - { - JsonSettings.PrimitiveConverters.Add(new LocalDateConverter()); - } - - - public override object Serialize(object obj, JavaScriptSerializer serializer) - { - if (obj is LocalDate) - { - LocalDate localDate = (LocalDate)obj; - return LocalDatePattern.IsoPattern.Format(localDate); - } - return null; - } - - public override object Deserialize(object primitiveValue, Type type, JavaScriptSerializer serializer) - { - if ((type == typeof(LocalDate) || type == typeof(LocalDate?)) && primitiveValue is string) - { - try - { - return LocalDatePattern.IsoPattern.Parse(primitiveValue as string).GetValueOrThrow(); - } - catch { } - } - return null; - } - } -} diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/model.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/model.mustache deleted file mode 100644 index 7765632abdb..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/model.mustache +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Text; -using Sharpility.Extensions; -using NodaTime; - -namespace {{packageName}}.{{packageContext}}.Models -{ -{{#models}} -{{#model}} -{{#isEnum}}{{>modelEnum}}{{/isEnum}}{{^isEnum}}{{>modelGeneric}}{{/isEnum}} -{{/model}} -{{/models}} -} diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/modelEnum.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/modelEnum.mustache deleted file mode 100644 index 01c5ec32aa1..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/modelEnum.mustache +++ /dev/null @@ -1,15 +0,0 @@ - /// - /// {{description}}{{^description}}Defines {{{name}}}{{/description}} - /// - {{#description}} - /// {{.}} - {{/description}} - public enum {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} - { - {{#allowableValues}}{{#enumVars}} - /// - /// Enum {{name}} - /// - {{name}}{{#isInteger}} = {{{value}}}{{/isInteger}}{{^isInteger}} = {{-index}}{{/isInteger}}{{^-last}}, - {{/-last}}{{/enumVars}}{{/allowableValues}} - } diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/modelGeneric.mustache deleted file mode 100644 index 8bb564a7971..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/modelGeneric.mustache +++ /dev/null @@ -1,156 +0,0 @@ - /// - /// {{description}}{{^description}}{{classname}}{{/description}} - /// - public {{^hasChildren}}sealed {{/hasChildren}}class {{classname}}: {{#parent}}{{{.}}}, {{/parent}} IEquatable<{{classname}}> - { {{#vars}}{{^isInherited}} - /// - /// {{description}}{{^description}}{{{name}}}{{/description}} - /// - public {{>nullableDataType}} {{name}} { get; private set; } -{{/isInherited}}{{/vars}} - - /// - /// Empty constructor required by some serializers. - /// Use {{classname}}.Builder() for instance creation instead. - /// - [Obsolete] - public {{classname}}(){{#parent}} : base({{/parent}}{{#parentVars}}null{{^-last}}, {{/-last}}{{/parentVars}}{{#parent}}){{/parent}} - { - } - - {{#hasChildren}}protected{{/hasChildren}}{{^hasChildren}}private{{/hasChildren}} {{classname}}({{#vars}}{{>nullableDataType}} {{name}}{{^-last}}, {{/-last}}{{/vars}}){{#parent}} : base({{#parentVars}}{{name}}{{^-last}}, {{/-last}}{{/parentVars}}){{/parent}} - { - {{#vars}}{{^isInherited}} - this.{{name}} = {{name}}; - {{/isInherited}}{{/vars}} - } - - /// - /// Returns builder of {{classname}}. - /// - /// {{classname}}Builder - public static {{#parent}}new {{/parent}}{{classname}}Builder Builder() - { - return new {{classname}}Builder(); - } - - /// - /// Returns {{classname}}Builder with properties set. - /// Use it to change properties. - /// - /// {{classname}}Builder - public {{#parent}}new {{/parent}}{{classname}}Builder With() - { - return Builder() - {{#vars}} - .{{name}}({{name}}){{^-last}} -{{/-last}}{{/vars}}; - } - - public override string ToString() - { - return this.PropertiesToString(); - } - - public override bool Equals(object obj) - { - return this.EqualsByProperties(obj); - } - - public bool Equals({{classname}} other) - { - return Equals((object) other); - } - - public override int GetHashCode() - { - return this.PropertiesHash(); - } - - /// - /// Implementation of == operator for ({{classname}}. - /// - /// Compared ({{classname}} - /// Compared ({{classname}} - /// true if compared items are equals, false otherwise - public static bool operator == ({{classname}} left, {{classname}} right) - { - return Equals(left, right); - } - - /// - /// Implementation of != operator for ({{classname}}. - /// - /// Compared ({{classname}} - /// Compared ({{classname}} - /// true if compared items are not equals, false otherwise - public static bool operator != ({{classname}} left, {{classname}} right) - { - return !Equals(left, right); - } - - /// - /// Builder of {{classname}}. - /// - public sealed class {{classname}}Builder - { - {{#vars}} - private {{>nullableDataType}} _{{name}}; - {{/vars}} - - internal {{classname}}Builder() - { - SetupDefaults(); - } - - private void SetupDefaults() - { - {{#vars}} - {{^required}} - {{#defaultValue}} - _{{name}} = {{{defaultValue}}}; - {{/defaultValue}} - {{/required}} - {{/vars}} - } - - {{#vars}} - /// - /// Sets value for {{classname}}.{{{name}}} property. - /// - /// {{description}}{{^description}}{{{name}}}{{/description}} - public {{classname}}Builder {{name}}({{>nullableDataType}} value) - { - _{{name}} = value; - return this; - } - - {{/vars}} - - /// - /// Builds instance of {{classname}}. - /// - /// {{classname}} - public {{classname}} Build() - { - Validate(); - return new {{classname}}( - {{#vars}} - {{name}}: _{{name}}{{^-last}},{{/-last}} - {{/vars}} - ); - } - - private void Validate() - { {{#vars}}{{#required}} - if (_{{name}} == null) - { - throw new ArgumentException("{{name}} is a required property for {{classname}} and cannot be null"); - } {{/required}}{{/vars}} - } - } - - {{#vars}}{{#isEnum}}{{^parent}} - {{>innerModelEnum}}{{/parent}}{{/isEnum}}{{#items.isEnum}} - {{#items}}{{>innerModelEnum}}{{/items}}{{/items.isEnum}}{{/vars}} - } \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/modelMutable.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/modelMutable.mustache deleted file mode 100644 index 3ab64e3b06e..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/modelMutable.mustache +++ /dev/null @@ -1,72 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Text; -using Sharpility.Extensions; -using NodaTime; -{{#imports}}using {{import}}; -{{/imports}} - -{{#models}} -{{#model}} -namespace {{packageName}}.{{packageContext}}.Models -{ {{#vars}}{{#isEnum}}{{^parent}} - {{>innerModelEnum}}{{/parent}}{{/isEnum}}{{#items.isEnum}} - {{#items}}{{>innerModelEnum}}{{/items}}{{/items.isEnum}}{{/vars}} - -/// - /// {{description}}{{^description}}{{classname}}{{/description}} - /// - public {{^hasChildren}}sealed {{/hasChildren}}class {{classname}}: {{#parent}}{{{.}}}, {{/parent}} IEquatable<{{classname}}> - { {{#vars}}{{^isInherited}} - /// - /// {{description}}{{^description}}{{{name}}}{{/description}} - /// - public {{>nullableDataType}} {{name}} { get; set; } -{{/isInherited}}{{/vars}} - - public override string ToString() - { - return this.PropertiesToString(); - } - - public override bool Equals(object obj) - { - return this.EqualsByProperties(obj); - } - - public bool Equals({{classname}} other) - { - return Equals((object) other); - } - - public override int GetHashCode() - { - return this.PropertiesHash(); - } - - /// - /// Implementation of == operator for ({{classname}}. - /// - /// Compared ({{classname}} - /// Compared ({{classname}} - /// true if compared items are equals, false otherwise - public static bool operator == ({{classname}} left, {{classname}} right) - { - return Equals(left, right); - } - - /// - /// Implementation of != operator for ({{classname}}. - /// - /// Compared ({{classname}} - /// Compared ({{classname}} - /// true if compared items are not equals, false otherwise - public static bool operator != ({{classname}} left, {{classname}} right) - { - return !Equals(left, right); - } - } -{{/model}} -{{/models}} -} diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/nullableDataType.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/nullableDataType.mustache deleted file mode 100644 index c999b870119..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/nullableDataType.mustache +++ /dev/null @@ -1 +0,0 @@ -{{&datatypeWithEnum}}{{#isEnum}}?{{/isEnum}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/nuspec.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/nuspec.mustache deleted file mode 100644 index 65912590d19..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/nuspec.mustache +++ /dev/null @@ -1,14 +0,0 @@ - - - - {{packageName}} - {{packageName}} - {{{version}}} - openapi-generator - openapi-generator - false - NancyFx {{packageName}} API{{#termsOfService}} - {{.}}{{/termsOfService}}{{#licenseUrl}} - {{.}}{{/licenseUrl}} - - \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/packages.config.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/packages.config.mustache deleted file mode 100644 index c511c50acc8..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/packages.config.mustache +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - {{#dependencies}} - - {{/dependencies}} - \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/parameters.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/parameters.mustache deleted file mode 100644 index 61caaf25f56..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/parameters.mustache +++ /dev/null @@ -1,450 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Linq; -using Nancy; -using NodaTime; -using NodaTime.Text; -using Sharpility.Base; -using Sharpility.Extensions; -using Sharpility.Util; - -namespace {{packageName}}.{{packageContext}}.Utils -{ - internal static class Parameters - { - private static readonly IDictionary> Parsers = CreateParsers(); - - internal static TValue ValueOf(dynamic parameters, Request request, string name, ParameterType parameterType) - { - var valueType = typeof(TValue); - var valueUnderlyingType = Nullable.GetUnderlyingType(valueType); - var isNullable = default(TValue) == null; - string value = RawValueOf(parameters, request, name, parameterType); - Preconditions.Evaluate(!string.IsNullOrEmpty(value) || isNullable, string.Format("Required parameter: '{0}' is missing", name)); - if (value == null && isNullable) - { - return default(TValue); - } - if (valueType.IsEnum || (valueUnderlyingType != null && valueUnderlyingType.IsEnum)) - { - return EnumValueOf(name, value); - } - return ValueOf(parameters, name, value, valueType, request, parameterType); - } - - private static string RawValueOf(dynamic parameters, Request request, string name, ParameterType parameterType) - { - try - { - switch (parameterType) - { - case ParameterType.Query: - string querValue = request.Query[name]; - return querValue; - case ParameterType.Path: - string pathValue = parameters[name]; - return pathValue; - case ParameterType.Header: - var headerValue = request.Headers[name]; - return headerValue != null ? string.Join(",", headerValue) : null; - } - } - catch (Exception e) - { - throw new InvalidOperationException(string.Format("Could not obtain value of '{0}' parameter", name), e); - } - throw new InvalidOperationException(string.Format("Parameter with type: {0} is not supported", parameterType)); - } - - private static TValue EnumValueOf(string name, string value) - { - var valueType = typeof(TValue); - var enumType = valueType.IsEnum ? valueType : Nullable.GetUnderlyingType(valueType); - Preconditions.IsNotNull(enumType, () => new InvalidOperationException( - string.Format("Could not parse parameter: '{0}' to enum. Type {1} is not enum", name, valueType))); - var values = Enum.GetValues(enumType); - foreach (var entry in values) - { - if (entry.ToString().EqualsIgnoreCases(value) - || ((int)entry).ToString().EqualsIgnoreCases(value)) - { - return (TValue)entry; - } - } - throw new ArgumentException(string.Format("Parameter: '{0}' value: '{1}' is not supported. Expected one of: {2}", - name, value, Strings.ToString(values))); - } - - private static TValue ValueOf(dynamic parameters, string name, string value, Type valueType, Request request, ParameterType parameterType) - { - var parser = Parsers.GetIfPresent(valueType); - if (parser != null) - { - return ParseValueUsing(name, value, valueType, parser); - } - if (parameterType == ParameterType.Path) - { - return DynamicValueOf(parameters, name); - } - if (parameterType == ParameterType.Query) - { - return DynamicValueOf(request.Query, name); - } - throw new InvalidOperationException(string.Format("Could not get value for {0} with type {1}", name, valueType)); - } - - private static TValue ParseValueUsing(string name, string value, Type valueType, Func parser) - { - var result = parser(Parameter.Of(name, value)); - try - { - return (TValue)result; - } - catch (InvalidCastException) - { - throw new InvalidOperationException( - string.Format("Could not parse parameter: '{0}' with value: '{1}'. " + - "Received: '{2}', expected: '{3}'.", - name, value, result.GetType(), valueType)); - } - } - - private static TValue DynamicValueOf(dynamic parameters, string name) - { - string value = parameters[name]; - try - { - TValue result = parameters[name]; - return result; - } - catch (InvalidCastException) - { - throw new InvalidOperationException(Strings.Format("Parameter: '{0}' value: '{1}' could not be parsed. " + - "Expected type: '{2}' is not supported", - name, value, typeof(TValue))); - } - catch (Exception e) - { - throw new InvalidOperationException(string.Format("Could not get '{0}' value of '{1}' type dynamically", - name, typeof(TValue)), e); - } - } - - private static IDictionary> CreateParsers() - { - var parsers = ImmutableDictionary.CreateBuilder>(); - parsers.Put(typeof(string), value => value.Value); - parsers.Put(typeof(bool), SafeParse(bool.Parse)); - parsers.Put(typeof(bool?), SafeParse(bool.Parse)); - parsers.Put(typeof(byte), SafeParse(byte.Parse)); - parsers.Put(typeof(sbyte?), SafeParse(sbyte.Parse)); - parsers.Put(typeof(short), SafeParse(short.Parse)); - parsers.Put(typeof(short?), SafeParse(short.Parse)); - parsers.Put(typeof(ushort), SafeParse(ushort.Parse)); - parsers.Put(typeof(ushort?), SafeParse(ushort.Parse)); - parsers.Put(typeof(int), SafeParse(int.Parse)); - parsers.Put(typeof(int?), SafeParse(int.Parse)); - parsers.Put(typeof(uint), SafeParse(uint.Parse)); - parsers.Put(typeof(uint?), SafeParse(uint.Parse)); - parsers.Put(typeof(long), SafeParse(long.Parse)); - parsers.Put(typeof(long?), SafeParse(long.Parse)); - parsers.Put(typeof(ulong), SafeParse(ulong.Parse)); - parsers.Put(typeof(ulong?), SafeParse(ulong.Parse)); - parsers.Put(typeof(float), SafeParse(float.Parse)); - parsers.Put(typeof(float?), SafeParse(float.Parse)); - parsers.Put(typeof(double), SafeParse(double.Parse)); - parsers.Put(typeof(double?), SafeParse(double.Parse)); - parsers.Put(typeof(decimal), SafeParse(decimal.Parse)); - parsers.Put(typeof(decimal?), SafeParse(decimal.Parse)); - parsers.Put(typeof(DateTime), SafeParse(DateTime.Parse)); - parsers.Put(typeof(DateTime?), SafeParse(DateTime.Parse)); - parsers.Put(typeof(TimeSpan), SafeParse(TimeSpan.Parse)); - parsers.Put(typeof(TimeSpan?), SafeParse(TimeSpan.Parse)); - parsers.Put(typeof(ZonedDateTime), SafeParse(ParseZonedDateTime)); - parsers.Put(typeof(ZonedDateTime?), SafeParse(ParseZonedDateTime)); - parsers.Put(typeof(LocalDate), SafeParse(ParseLocalDate)); - parsers.Put(typeof(LocalDate?), SafeParse(ParseLocalDate)); - parsers.Put(typeof(LocalTime), SafeParse(ParseLocalTime)); - parsers.Put(typeof(LocalTime?), SafeParse(ParseLocalTime)); - - parsers.Put(typeof(IEnumerable), ImmutableListParse(value => value)); - parsers.Put(typeof(ICollection), ImmutableListParse(value => value)); - parsers.Put(typeof(IList), ImmutableListParse(value => value)); - parsers.Put(typeof(List), ListParse(value => value)); - parsers.Put(typeof(ISet), ImmutableListParse(value => value)); - parsers.Put(typeof(HashSet), SetParse(value => value)); - - parsers.Put(typeof(IEnumerable), NullableImmutableListParse(bool.Parse)); - parsers.Put(typeof(ICollection), NullableImmutableListParse(bool.Parse)); - parsers.Put(typeof(IList), NullableImmutableListParse(bool.Parse)); - parsers.Put(typeof(List), NullableListParse(bool.Parse)); - parsers.Put(typeof(ISet), NullableImmutableSetParse(bool.Parse)); - parsers.Put(typeof(HashSet), NullableSetParse(bool.Parse)); - - parsers.Put(typeof(IEnumerable), ImmutableListParse(byte.Parse)); - parsers.Put(typeof(ICollection), ImmutableListParse(byte.Parse)); - parsers.Put(typeof(IList), ImmutableListParse(byte.Parse)); - parsers.Put(typeof(List), ListParse(byte.Parse)); - parsers.Put(typeof(ISet), ImmutableSetParse(byte.Parse)); - parsers.Put(typeof(HashSet), SetParse(byte.Parse)); - - parsers.Put(typeof(IEnumerable), ImmutableListParse(sbyte.Parse)); - parsers.Put(typeof(ICollection), ImmutableListParse(sbyte.Parse)); - parsers.Put(typeof(IList), ImmutableListParse(sbyte.Parse)); - parsers.Put(typeof(List), ListParse(sbyte.Parse)); - parsers.Put(typeof(ISet), ImmutableSetParse(sbyte.Parse)); - parsers.Put(typeof(HashSet), SetParse(sbyte.Parse)); - - parsers.Put(typeof(IEnumerable), ImmutableListParse(short.Parse)); - parsers.Put(typeof(ICollection), ImmutableListParse(short.Parse)); - parsers.Put(typeof(IList), ImmutableListParse(short.Parse)); - parsers.Put(typeof(List), ListParse(short.Parse)); - parsers.Put(typeof(ISet), ImmutableSetParse(short.Parse)); - parsers.Put(typeof(HashSet), SetParse(short.Parse)); - - parsers.Put(typeof(IEnumerable), ImmutableListParse(ushort.Parse)); - parsers.Put(typeof(ICollection), ImmutableListParse(ushort.Parse)); - parsers.Put(typeof(IList), ImmutableListParse(ushort.Parse)); - parsers.Put(typeof(List), ListParse(ushort.Parse)); - parsers.Put(typeof(ISet), ImmutableSetParse(ushort.Parse)); - parsers.Put(typeof(HashSet), SetParse(ushort.Parse)); - - parsers.Put(typeof(IEnumerable), NullableImmutableListParse(int.Parse)); - parsers.Put(typeof(ICollection), NullableImmutableListParse(int.Parse)); - parsers.Put(typeof(IList), NullableImmutableListParse(int.Parse)); - parsers.Put(typeof(List), NullableListParse(int.Parse)); - parsers.Put(typeof(ISet), NullableImmutableSetParse(int.Parse)); - parsers.Put(typeof(HashSet), NullableSetParse(int.Parse)); - - parsers.Put(typeof(IEnumerable), ImmutableListParse(uint.Parse)); - parsers.Put(typeof(ICollection), ImmutableListParse(uint.Parse)); - parsers.Put(typeof(IList), ImmutableListParse(uint.Parse)); - parsers.Put(typeof(List), ListParse(uint.Parse)); - parsers.Put(typeof(ISet), ImmutableSetParse(uint.Parse)); - parsers.Put(typeof(HashSet), SetParse(uint.Parse)); - - parsers.Put(typeof(IEnumerable), NullableImmutableListParse(long.Parse)); - parsers.Put(typeof(ICollection), NullableImmutableListParse(long.Parse)); - parsers.Put(typeof(IList), NullableImmutableListParse(long.Parse)); - parsers.Put(typeof(List), NullableListParse(long.Parse)); - parsers.Put(typeof(ISet), NullableImmutableSetParse(long.Parse)); - parsers.Put(typeof(HashSet), NullableSetParse(long.Parse)); - - parsers.Put(typeof(IEnumerable), ImmutableListParse(ulong.Parse)); - parsers.Put(typeof(ICollection), ImmutableListParse(ulong.Parse)); - parsers.Put(typeof(IList), ImmutableListParse(ulong.Parse)); - parsers.Put(typeof(List), ListParse(ulong.Parse)); - parsers.Put(typeof(ISet), ImmutableSetParse(ulong.Parse)); - parsers.Put(typeof(HashSet), SetParse(ulong.Parse)); - - parsers.Put(typeof(IEnumerable), NullableImmutableListParse(float.Parse)); - parsers.Put(typeof(ICollection), NullableImmutableListParse(float.Parse)); - parsers.Put(typeof(IList), NullableImmutableListParse(float.Parse)); - parsers.Put(typeof(List), NullableListParse(float.Parse)); - parsers.Put(typeof(ISet), NullableImmutableSetParse(float.Parse)); - parsers.Put(typeof(HashSet), NullableSetParse(float.Parse)); - - parsers.Put(typeof(IEnumerable), NullableImmutableListParse(double.Parse)); - parsers.Put(typeof(ICollection), NullableImmutableListParse(double.Parse)); - parsers.Put(typeof(IList), NullableImmutableListParse(double.Parse)); - parsers.Put(typeof(List), NullableListParse(double.Parse)); - parsers.Put(typeof(ISet), NullableImmutableSetParse(double.Parse)); - parsers.Put(typeof(HashSet), NullableSetParse(double.Parse)); - - parsers.Put(typeof(IEnumerable), NullableImmutableListParse(decimal.Parse)); - parsers.Put(typeof(ICollection), NullableImmutableListParse(decimal.Parse)); - parsers.Put(typeof(IList), NullableImmutableListParse(decimal.Parse)); - parsers.Put(typeof(List), NullableListParse(decimal.Parse)); - parsers.Put(typeof(ISet), NullableImmutableSetParse(decimal.Parse)); - parsers.Put(typeof(HashSet), NullableSetParse(decimal.Parse)); - - parsers.Put(typeof(IEnumerable), NullableImmutableListParse(DateTime.Parse)); - parsers.Put(typeof(ICollection), NullableImmutableListParse(DateTime.Parse)); - parsers.Put(typeof(IList), NullableImmutableListParse(DateTime.Parse)); - parsers.Put(typeof(List), NullableListParse(DateTime.Parse)); - parsers.Put(typeof(ISet), NullableImmutableSetParse(DateTime.Parse)); - parsers.Put(typeof(HashSet), NullableSetParse(DateTime.Parse)); - - parsers.Put(typeof(IEnumerable), ImmutableListParse(TimeSpan.Parse)); - parsers.Put(typeof(ICollection), ImmutableListParse(TimeSpan.Parse)); - parsers.Put(typeof(IList), ImmutableListParse(TimeSpan.Parse)); - parsers.Put(typeof(List), ListParse(TimeSpan.Parse)); - parsers.Put(typeof(ISet), ImmutableSetParse(TimeSpan.Parse)); - parsers.Put(typeof(HashSet), SetParse(TimeSpan.Parse)); - - return parsers.ToImmutableDictionary(); - } - - private static Func SafeParse(Func parse) - { - return parameter => - { - try - { - return parse(parameter.Value); - } - catch (OverflowException) - { - throw ParameterOutOfRange(parameter, typeof(T)); - } - catch (FormatException) - { - throw InvalidParameterFormat(parameter, typeof(T)); - } - catch (Exception e) - { - throw new InvalidOperationException(Strings.Format("Unable to parse parameter: '{0}' with value: '{1}' to {2}", - parameter.Name, parameter.Value, typeof(T)), e); - } - }; - } - - private static Func NullableListParse(Func itemParser) where T: struct - { - return ListParse(it => it.ToNullable(itemParser)); - } - - private static Func ListParse(Func itemParser) - { - return parameter => - { - if (string.IsNullOrEmpty(parameter.Value)) - { - return new List(); - } - return ParseCollection(parameter.Value, itemParser).ToList(); - }; - } - - private static Func NullableImmutableListParse(Func itemParser) where T: struct - { - return ImmutableListParse(it => it.ToNullable(itemParser)); - } - - private static Func ImmutableListParse(Func itemParser) - { - return parameter => - { - if (string.IsNullOrEmpty(parameter.Value)) - { - return Lists.EmptyList(); - } - return ParseCollection(parameter.Value, itemParser).ToImmutableList(); - }; - } - - private static Func NullableSetParse(Func itemParser) where T: struct - { - return SetParse(it => it.ToNullable(itemParser)); - } - - private static Func SetParse(Func itemParser) - { - return parameter => - { - if (string.IsNullOrEmpty(parameter.Value)) - { - return new HashSet(); - } - return ParseCollection(parameter.Value, itemParser).ToSet(); - }; - } - - private static Func NullableImmutableSetParse(Func itemParser) where T: struct - { - return ImmutableSetParse(it => it.ToNullable(itemParser)); - } - - private static Func ImmutableSetParse(Func itemParser) - { - return parameter => - { - if (string.IsNullOrEmpty(parameter.Value)) - { - return Sets.EmptySet(); - } - return ParseCollection(parameter.Value, itemParser).ToImmutableHashSet(); - }; - } - - private static ZonedDateTime ParseZonedDateTime(string value) - { - var dateTime = DateTime.Parse(value); - return new ZonedDateTime(Instant.FromDateTimeUtc(dateTime.ToUniversalTime()), DateTimeZone.Utc); - } - - private static LocalDate ParseLocalDate(string value) - { - return LocalDatePattern.IsoPattern.Parse(value).Value; - } - - private static LocalTime ParseLocalTime(string value) - { - return LocalTimePattern.ExtendedIsoPattern.Parse(value).Value; - } - - private static ArgumentException ParameterOutOfRange(Parameter parameter, Type type) - { - return new ArgumentException(Strings.Format("Query: '{0}' value: '{1}' is out of range for: '{2}'", - parameter.Name, parameter.Value, type)); - } - - private static ArgumentException InvalidParameterFormat(Parameter parameter, Type type) - { - return new ArgumentException(Strings.Format("Query '{0}' value: '{1}' format is invalid for: '{2}'", - parameter.Name, parameter.Value, type)); - } - - private static IEnumerable ParseCollection(string value, Func itemParser) - { - var results = value.Split(new[] { ',' }, StringSplitOptions.None) - .Where(it => it != null) - .Select(it => it.Trim()) - .Select(itemParser); - return results; - } - - public static T? ToNullable(this string s, Func itemParser) where T : struct - { - T? result = new T?(); - try - { - if (!string.IsNullOrEmpty(s) && s.Trim().Length > 0) - { - result = itemParser(s); - } - } - catch (Exception e) - { - throw new InvalidOperationException(Strings.Format("Unable to parse value: '{0}' to nullable: '{1}'", s, typeof(T).ToString()), e); - } - return result; - } - - private class Parameter - { - internal string Name { get; private set; } - internal string Value { get; private set; } - - private Parameter(string name, string value) - { - Name = name; - Value = value; - } - - internal static Parameter Of(string name, string value) - { - return new Parameter(name, value); - } - } - } - - internal enum ParameterType - { - Undefined, - Query, - Path, - Header - } -} diff --git a/modules/openapi-generator/src/main/resources/csharp-nancyfx/paramsList.mustache b/modules/openapi-generator/src/main/resources/csharp-nancyfx/paramsList.mustache deleted file mode 100644 index 47e502dded9..00000000000 --- a/modules/openapi-generator/src/main/resources/csharp-nancyfx/paramsList.mustache +++ /dev/null @@ -1 +0,0 @@ -{{#allParams}}{{#isEnum}}{{>innerApiEnumName}}?{{/isEnum}}{{^isEnum}}{{&dataType}}{{/isEnum}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}} \ No newline at end of file diff --git a/website/i18n/en.json b/website/i18n/en.json index 6a41385357c..af769f8ec26 100644 --- a/website/i18n/en.json +++ b/website/i18n/en.json @@ -115,10 +115,6 @@ "title": "Config Options for csharp-dotnet2", "sidebar_label": "csharp-dotnet2" }, - "generators/csharp-nancyfx": { - "title": "Config Options for csharp-nancyfx", - "sidebar_label": "csharp-nancyfx" - }, "generators/csharp-netcore": { "title": "Config Options for csharp-netcore", "sidebar_label": "csharp-netcore"