diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java index 378ec42de294..e8d9090d5e90 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java @@ -95,6 +95,7 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { private LinkedHashMap content; private Map requiredVarsMap; private String ref; + public CodegenProperty returnProperty; private boolean schemaIsFromAdditionalProperties; @Override diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 8b032e60e550..630640dc0b1c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -452,9 +452,9 @@ public class DefaultCodegen implements CodegenConfig { .put("backslash", new BackSlashLambda()) .put("doublequote", new DoubleQuoteLambda()) .put("indented", new IndentedLambda()) - .put("indented_8", new IndentedLambda(8, " ", false)) - .put("indented_12", new IndentedLambda(12, " ", false)) - .put("indented_16", new IndentedLambda(16, " ", false)); + .put("indented_8", new IndentedLambda(8, " ", false, false)) + .put("indented_12", new IndentedLambda(12, " ", false, false)) + .put("indented_16", new IndentedLambda(16, " ", false, false)); } @@ -4851,6 +4851,7 @@ public class DefaultCodegen implements CodegenConfig { CodegenProperty cp = fromProperty("response", responseSchema, false); r.dataType = getTypeDeclaration(responseSchema); + r.returnProperty = cp; if (!ModelUtils.isArraySchema(responseSchema)) { if (cp.complexType != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java index 46bb9df4aa1e..e9a7a50b8a09 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java @@ -26,7 +26,6 @@ import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.commons.text.StringEscapeUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; @@ -418,13 +417,14 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co .put("optional", new OptionalParameterLambda().generator(this)) .put("joinWithComma", new JoinWithCommaLambda()) .put("joinLinesWithComma", new JoinWithCommaLambda(false, "\n", ",\n")) + .put("joinConditions", new JoinWithCommaLambda(true, " ", " && ")) .put("trimLineBreaks", new TrimLineBreaksLambda()) .put("trimTrailingWithNewLine", new TrimTrailingWhiteSpaceLambda(true)) .put("trimTrailing", new TrimTrailingWhiteSpaceLambda(false)) .put("first", new FirstLambda(" ")) .put("firstDot", new FirstLambda("\\.")) - .put("indent3", new IndentedLambda(12, " ", false)) - .put("indent4", new IndentedLambda(16, " ", false)) + .put("indent3", new IndentedLambda(12, " ", false, true)) + .put("indent4", new IndentedLambda(16, " ", false, true)) .put("uniqueLinesWithNewLine", new UniqueLambda("\n", true)); } @@ -740,14 +740,230 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co } } + private void postProcessResponseCode(CodegenResponse response, String status, Set httpStatusesWithReturn) { + response.vendorExtensions.put("x-http-status", status); + if (response.dataType != null) { + httpStatusesWithReturn.add(status); + } + } + @Override + @SuppressWarnings("unchecked") public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { super.postProcessOperationsWithModels(objs, allModels); + + Set httpStatusesWithReturn = additionalProperties.get("x-http-statuses-with-return") instanceof Set + ? (Set) additionalProperties.get("x-http-statuses-with-return") + : new HashSet(); + + additionalProperties.put("x-http-statuses-with-return", httpStatusesWithReturn); + if (objs != null) { OperationMap operations = objs.getOperations(); if (operations != null) { List ops = operations.getOperation(); for (CodegenOperation operation : ops) { + if (operation.responses != null) { + for (CodegenResponse response : operation.responses) { + + if (response.returnProperty != null) { + Boolean isValueType = isValueType(response.returnProperty); + response.vendorExtensions.put("x-is-value-type", isValueType); + response.vendorExtensions.put("x-is-reference-type", !isValueType); + } + + String code = response.code.toLowerCase(Locale.ROOT); + switch(code) { + case "default": + case "0": + postProcessResponseCode(response, "Default", httpStatusesWithReturn); + response.vendorExtensions.put("x-http-status-is-default", true); + if (operation.responses.stream().count() == 1) { + response.vendorExtensions.put("x-only-default", true); + } + break; + case "100": + postProcessResponseCode(response, "Continue", httpStatusesWithReturn); + break; + case "101": + postProcessResponseCode(response, "SwitchingProtocols", httpStatusesWithReturn); + break; + case "102": + postProcessResponseCode(response, "Processing", httpStatusesWithReturn); + break; + case "103": + postProcessResponseCode(response, "EarlyHints", httpStatusesWithReturn); + break; + case "200": + postProcessResponseCode(response, "Ok", httpStatusesWithReturn); + break; + case "201": + postProcessResponseCode(response, "Created", httpStatusesWithReturn); + break; + case "202": + postProcessResponseCode(response, "Accepted", httpStatusesWithReturn); + break; + case "203": + postProcessResponseCode(response, "NonAuthoritativeInformation", httpStatusesWithReturn); + break; + case "204": + postProcessResponseCode(response, "NoContent", httpStatusesWithReturn); + break; + case "205": + postProcessResponseCode(response, "ResetContent", httpStatusesWithReturn); + break; + case "206": + postProcessResponseCode(response, "PartialContent", httpStatusesWithReturn); + break; + case "207": + postProcessResponseCode(response, "MultiStatus", httpStatusesWithReturn); + break; + case "208": + postProcessResponseCode(response, "AlreadyImported", httpStatusesWithReturn); + break; + case "226": + postProcessResponseCode(response, "IMUsed", httpStatusesWithReturn); + break; + case "300": + postProcessResponseCode(response, "MultipleChoices", httpStatusesWithReturn); + break; + case "301": + postProcessResponseCode(response, "MovedPermanently", httpStatusesWithReturn); + break; + case "302": + postProcessResponseCode(response, "Found", httpStatusesWithReturn); + break; + case "303": + postProcessResponseCode(response, "SeeOther", httpStatusesWithReturn); + break; + case "304": + postProcessResponseCode(response, "NotModified", httpStatusesWithReturn); + break; + case "307": + postProcessResponseCode(response, "TemporaryRedirect", httpStatusesWithReturn); + break; + case "308": + postProcessResponseCode(response, "PermanentRedirect", httpStatusesWithReturn); + break; + case "400": + postProcessResponseCode(response, "BadRequest", httpStatusesWithReturn); + break; + case "401": + postProcessResponseCode(response, "Unauthorized", httpStatusesWithReturn); + break; + case "402": + postProcessResponseCode(response, "PaymentRequired", httpStatusesWithReturn); + break; + case "403": + postProcessResponseCode(response, "Forbidden", httpStatusesWithReturn); + break; + case "404": + postProcessResponseCode(response, "NotFound", httpStatusesWithReturn); + break; + case "405": + postProcessResponseCode(response, "MethodNotAllowed", httpStatusesWithReturn); + break; + case "406": + postProcessResponseCode(response, "NotAcceptable", httpStatusesWithReturn); + break; + case "407": + postProcessResponseCode(response, "ProxyAuthenticationRequired", httpStatusesWithReturn); + break; + case "408": + postProcessResponseCode(response, "RequestTimeout", httpStatusesWithReturn); + break; + case "409": + postProcessResponseCode(response, "Conflict", httpStatusesWithReturn); + break; + case "410": + postProcessResponseCode(response, "Gone", httpStatusesWithReturn); + break; + case "411": + postProcessResponseCode(response, "LengthRequired", httpStatusesWithReturn); + break; + case "412": + postProcessResponseCode(response, "PreconditionFailed", httpStatusesWithReturn); + break; + case "413": + postProcessResponseCode(response, "ContentTooLarge", httpStatusesWithReturn); + break; + case "414": + postProcessResponseCode(response, "URITooLong", httpStatusesWithReturn); + break; + case "415": + postProcessResponseCode(response, "UnsupportedMediaType", httpStatusesWithReturn); + break; + case "416": + postProcessResponseCode(response, "RangeNotSatisfiable", httpStatusesWithReturn); + break; + case "417": + postProcessResponseCode(response, "ExpectationFailed", httpStatusesWithReturn); + break; + case "421": + postProcessResponseCode(response, "MisdirectedRequest", httpStatusesWithReturn); + break; + case "422": + postProcessResponseCode(response, "UnprocessableContent", httpStatusesWithReturn); + break; + case "423": + postProcessResponseCode(response, "Locked", httpStatusesWithReturn); + break; + case "424": + postProcessResponseCode(response, "FailedDependency", httpStatusesWithReturn); + break; + case "425": + postProcessResponseCode(response, "TooEarly", httpStatusesWithReturn); + break; + case "426": + postProcessResponseCode(response, "UpgradeRequired", httpStatusesWithReturn); + break; + case "428": + postProcessResponseCode(response, "PreconditionRequired", httpStatusesWithReturn); + break; + case "429": + postProcessResponseCode(response, "TooManyRequests", httpStatusesWithReturn); + break; + case "431": + postProcessResponseCode(response, "RequestHeaderFieldsTooLong", httpStatusesWithReturn); + break; + case "451": + postProcessResponseCode(response, "UnavailableForLegalReasons", httpStatusesWithReturn); + break; + case "500": + postProcessResponseCode(response, "InternalServerError", httpStatusesWithReturn); + break; + case "501": + postProcessResponseCode(response, "NotImplemented", httpStatusesWithReturn); + break; + case "502": + postProcessResponseCode(response, "BadGateway", httpStatusesWithReturn); + break; + case "503": + postProcessResponseCode(response, "ServiceUnavailable", httpStatusesWithReturn); + break; + case "504": + postProcessResponseCode(response, "GatewayTimeout", httpStatusesWithReturn); + break; + case "505": + postProcessResponseCode(response, "HttpVersionNotSupported", httpStatusesWithReturn); + break; + case "506": + postProcessResponseCode(response, "VariantAlsoNegotiates", httpStatusesWithReturn); + break; + case "507": + postProcessResponseCode(response, "InsufficientStorage", httpStatusesWithReturn); + break; + case "508": + postProcessResponseCode(response, "LoopDetected", httpStatusesWithReturn); + break; + case "511": + postProcessResponseCode(response, "NetworkAuthenticationRequired", httpStatusesWithReturn); + break; + default: + throw new RuntimeException("Unhandled case: " + code); + } + } + } // Check return types for collection if (operation.returnType != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java index 718fa0a138ea..838496b362e3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCppCodegen.java @@ -331,7 +331,7 @@ abstract public class AbstractCppCodegen extends DefaultCodegen implements Codeg @Override protected ImmutableMap.Builder addMustacheLambdas() { return super.addMustacheLambdas() - .put("multiline_comment_4", new IndentedLambda(4, " ", "///", false)); + .put("multiline_comment_4", new IndentedLambda(4, " ", "///", false, false)); } @Override diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java index f054093d4a90..45ba241c8fd6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaPlayFrameworkServerCodegen.java @@ -224,7 +224,7 @@ public class ScalaPlayFrameworkServerCodegen extends AbstractScalaCodegen implem @Override protected ImmutableMap.Builder addMustacheLambdas() { return super.addMustacheLambdas() - .put("indented_4", new IndentedLambda(4, " ", false)); + .put("indented_4", new IndentedLambda(4, " ", false, false)); } @Override diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java index 1b50778d0c20..3cfe890f600b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java @@ -308,8 +308,8 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege @Override protected ImmutableMap.Builder addMustacheLambdas() { ImmutableMap.Builder lambdas = super.addMustacheLambdas(); - lambdas.put("indented_star_1", new IndentedLambda(1, " ", "* ", false)); - lambdas.put("indented_star_4", new IndentedLambda(5, " ", "* ", false)); + lambdas.put("indented_star_1", new IndentedLambda(1, " ", "* ", false, false)); + lambdas.put("indented_star_4", new IndentedLambda(5, " ", "* ", false, false)); return lambdas; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/IndentedLambda.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/IndentedLambda.java index d6dceb581bed..f90b662c6d63 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/IndentedLambda.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/IndentedLambda.java @@ -46,12 +46,13 @@ public class IndentedLambda implements Mustache.Lambda { private final String prefix; private final int spaceCode; private final boolean indentFirstLine; + private final boolean skipEmptyLines; /** * Constructs a new instance of {@link IndentedLambda}, with an indent count of 4 spaces */ public IndentedLambda() { - this(4, " ", null, false); + this(4, " ", null, false, false); } /** @@ -61,8 +62,8 @@ public class IndentedLambda implements Mustache.Lambda { * @param indentionCharacter String representation of the character used in the indent (e.g. " ", "\t", "."). * @param indentFirstLine Whether to indent the first line or not. Usually this is handled by the template already. */ - public IndentedLambda(int prefixSpaceCount, String indentionCharacter, boolean indentFirstLine) { - this(prefixSpaceCount, Character.codePointAt(indentionCharacter, 0), null, indentFirstLine); + public IndentedLambda(int prefixSpaceCount, String indentionCharacter, boolean indentFirstLine, boolean skipEmptyLines) { + this(prefixSpaceCount, Character.codePointAt(indentionCharacter, 0), null, indentFirstLine, skipEmptyLines); } /** @@ -73,8 +74,8 @@ public class IndentedLambda implements Mustache.Lambda { * @param prefix An optional prefix to prepend before the line (useful for multi-line comments). * @param indentFirstLine Whether to indent the first line or not. Usually this is handled by the template already. */ - public IndentedLambda(int prefixSpaceCount, String indentionCharacter, String prefix, boolean indentFirstLine) { - this(prefixSpaceCount, Character.codePointAt(indentionCharacter, 0), prefix, indentFirstLine); + public IndentedLambda(int prefixSpaceCount, String indentionCharacter, String prefix, boolean indentFirstLine, boolean skipEmptyLines) { + this(prefixSpaceCount, Character.codePointAt(indentionCharacter, 0), prefix, indentFirstLine, skipEmptyLines); } /** @@ -85,7 +86,7 @@ public class IndentedLambda implements Mustache.Lambda { * @param prefix An optional prefix to prepend before the line (useful for multi-line comments). * @param indentFirstLine Whether to indent the first line or not. Usually this is handled by the template already. */ - private IndentedLambda(int prefixSpaceCount, int indentionCodePoint, String prefix, boolean indentFirstLine) { + private IndentedLambda(int prefixSpaceCount, int indentionCodePoint, String prefix, boolean indentFirstLine, boolean skipEmptyLines) { if (prefixSpaceCount <= 0) { throw new IllegalArgumentException("prefixSpaceCount must be greater than 0"); } @@ -98,6 +99,7 @@ public class IndentedLambda implements Mustache.Lambda { this.spaceCode = indentionCodePoint; this.prefix = prefix; this.indentFirstLine = indentFirstLine; + this.skipEmptyLines = skipEmptyLines; } @Override @@ -116,7 +118,9 @@ public class IndentedLambda implements Mustache.Lambda { // Mustache will apply correct indentation to the first line of a template (to match declaration location). // So, we want to skip the first line. if (this.indentFirstLine || i > 0) { - sb.append(prefixedIndention); + if (!this.skipEmptyLines || line.trim().length() > 0) { + sb.append(prefixedIndention); + } if (prefix != null) sb.append(prefix); } diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ApiResponseEventArgs`1.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ApiResponseEventArgs`1.mustache index 6e8d3c4780ee..aea35fae13aa 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ApiResponseEventArgs`1.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ApiResponseEventArgs`1.mustache @@ -5,18 +5,18 @@ namespace {{packageName}}.{{clientPackage}} /// /// Useful for tracking server health /// - {{>visibility}} class ApiResponseEventArgs : EventArgs + {{>visibility}} class ApiResponseEventArgs : EventArgs { /// /// The ApiResponse /// - public ApiResponse ApiResponse { get; } + public ApiResponse ApiResponse { get; } /// /// The ApiResponseEventArgs /// /// - public ApiResponseEventArgs(ApiResponse apiResponse) + public ApiResponseEventArgs(ApiResponse apiResponse) { ApiResponse = apiResponse; } diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ApiResponse`1.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ApiResponse`1.mustache index 3a182e9f6946..12fd56a6f9e2 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ApiResponse`1.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ApiResponse`1.mustache @@ -5,8 +5,9 @@ {{/nrt}} using System; -using System.Collections.Generic; +{{^netStandard}} using System.Diagnostics.CodeAnalysis; +{{/netStandard}} using System.Net; namespace {{packageName}}.{{clientPackage}} @@ -14,15 +15,15 @@ namespace {{packageName}}.{{clientPackage}} /// /// Provides a non-generic contract for the ApiResponse wrapper. /// - {{>visibility}} interface IApiResponse + {{>visibility}} partial interface IApiResponse { /// - /// The type that represents the server's response. + /// The IsSuccessStatusCode from the api response /// - Type ResponseType { get; } + bool IsSuccessStatusCode { get; } /// - /// Gets or sets the status code (HTTP status code) + /// Gets the status code (HTTP status code) /// /// The status code. HttpStatusCode StatusCode { get; } @@ -37,11 +38,26 @@ namespace {{packageName}}.{{clientPackage}} /// DateTime DownloadedAt { get; } + /// + /// The headers contained in the api response + /// + System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// /// The path used when making the request. /// string Path { get; } + /// + /// The reason phrase contained in the api response + /// + string{{nrt?}} ReasonPhrase { get; } + + /// + /// The DateTime when the request was sent. + /// + DateTime RequestedAt { get; } + /// /// The Uri used when making the request. /// @@ -51,26 +67,18 @@ namespace {{packageName}}.{{clientPackage}} /// /// API Response /// - {{>visibility}} partial class ApiResponse : IApiResponse + {{>visibility}} partial class ApiResponse : IApiResponse { /// - /// Gets or sets the status code (HTTP status code) + /// Gets the status code (HTTP status code) /// /// The status code. public HttpStatusCode StatusCode { get; } - /// - /// The type that represents the server's response. - /// - public Type ResponseType - { - get { return typeof(T); } - } - /// /// The raw data /// - public string RawContent { get; private set; } + public string RawContent { get; protected set; } /// /// The IsSuccessStatusCode from the api response @@ -108,9 +116,9 @@ namespace {{packageName}}.{{clientPackage}} public Uri{{nrt?}} RequestUri { get; } /// - /// The JsonSerialzierOptions + /// The /// - private System.Text.Json.JsonSerializerOptions _jsonSerializerOptions; + protected System.Text.Json.JsonSerializerOptions _jsonSerializerOptions; /// /// Construct the response using an HttpResponseMessage @@ -136,32 +144,27 @@ namespace {{packageName}}.{{clientPackage}} } partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); - - /// - /// Deserializes the server's response - /// - public T{{nrt?}} AsModel() - { - {{#lambda.trimTrailingWithNewLine}} -{{>AsModel}} - {{/lambda.trimTrailingWithNewLine}} - } - - /// - /// Returns true when the model can be deserialized - /// - public bool TryToModel({{^netStandard}}[NotNullWhen(true)] {{/netStandard}}out T{{nrt?}} model) - { - try - { - model = AsModel(); - return model != null; - } - catch - { - model = default(T); - return false; - } - } } + {{#x-http-statuses-with-return}} + + /// + /// An interface for responses of type {{TType}} + /// + /// + {{>visibility}} interface I{{.}} : IApiResponse + { + /// + /// Deserializes the response if the response is {{.}} + /// + /// + TType {{.}}(); + + /// + /// Returns true if the response is {{.}} and the deserialized response is not null + /// + /// + /// + bool Try{{.}}({{^netStandard}}[NotNullWhen(true)]{{/netStandard}}out TType{{nrt?}} result); + } + {{/x-http-statuses-with-return}} } diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/AsModel.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/AsModel.mustache index c4cc8d57a729..f0087b1dfc6f 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/AsModel.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/AsModel.mustache @@ -1,4 +1,4 @@ - // This logic may be modified with the AsModel.mustache template - return IsSuccessStatusCode - ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) - : default(T); +// This logic may be modified with the AsModel.mustache template +return Is{{vendorExtensions.x-http-status}} + ? System.Text.Json.JsonSerializer.Deserialize<{{#isModel}}{{^containerType}}{{packageName}}.{{modelPackage}}.{{/containerType}}{{/isModel}}{{{dataType}}}>(RawContent, _jsonSerializerOptions) + : {{^netStandard}}null{{/netStandard}}{{#netStandard}}default{{/netStandard}}; diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/OnDeserializationError.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/OnDeserializationError.mustache new file mode 100644 index 000000000000..ff83a5076c67 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/OnDeserializationError.mustache @@ -0,0 +1,2 @@ +if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/README.client.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/README.client.mustache index 36b971e4d2ed..b071c0cbe699 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/README.client.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/README.client.mustache @@ -66,8 +66,8 @@ namespace YourProject {{#-first}} {{#operation}} {{#-first}} - ApiResponse<{{#returnType}}{{{.}}}{{/returnType}}{{^returnType}}object{{/returnType}}> response = await api.{{operationId}}Async("todo"); - {{#returnType}}{{{.}}}{{/returnType}}{{^returnType}}object{{/returnType}} model = response.AsModel(); + {{operationId}}ApiResponse apiResponse = await api.{{operationId}}Async("todo"); + {{#returnType}}{{{.}}}{{/returnType}}{{^returnType}}object{{/returnType}} model = apiResponse.Ok(); {{/-first}} {{/operation}} {{/-first}} diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api.mustache index 305f76b5f7ae..596a25eaec93 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api.mustache @@ -1,3 +1,4 @@ +{{#lambda.trimLineBreaks}} // {{>partial_header}} {{#nrt}} @@ -13,10 +14,12 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using {{packageName}}.{{clientPackage}}; -using {{packageName}}.{{apiPackage}}; {{#hasImport}} using {{packageName}}.{{modelPackage}}; {{/hasImport}} +{{^netStandard}} +using System.Diagnostics.CodeAnalysis; +{{/netStandard}} namespace {{packageName}}.{{apiPackage}} { @@ -44,8 +47,8 @@ namespace {{packageName}}.{{apiPackage}} /// {{description}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}} {{/allParams}} /// Cancellation Token to cancel the request. - /// Task<ApiResponse<{{#returnType}}{{returnType}}{{/returnType}}{{^returnType}}object{{/returnType}}>> - Task> {{operationId}}Async({{>OperationSignature}}); + /// <> + Task<{{interfacePrefix}}{{operationId}}ApiResponse> {{operationId}}Async({{>OperationSignature}}); /// /// {{summary}} @@ -57,17 +60,48 @@ namespace {{packageName}}.{{apiPackage}} /// {{description}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}} {{/allParams}} /// Cancellation Token to cancel the request. - /// Task<ApiResponse>{{#returnType}}{{returnType}}{{/returnType}}{{^returnType}}object{{/returnType}}>{{nrt?}}> - Task{{nrt?}}> {{operationId}}OrDefaultAsync({{>OperationSignature}}); + /// <{{nrt?}}> + Task<{{interfacePrefix}}{{operationId}}ApiResponse{{nrt?}}> {{operationId}}OrDefaultAsync({{>OperationSignature}}); {{^-last}} {{/-last}} {{/operation}} } + {{#operation}} + {{#responses}} + {{#-first}} + + /// + /// The + /// + {{>visibility}} interface {{interfacePrefix}}{{operationId}}ApiResponse : {{#lambda.joinWithComma}}{{packageName}}.{{clientPackage}}.{{interfacePrefix}}ApiResponse {{#responses}}{{#dataType}}{{interfacePrefix}}{{vendorExtensions.x-http-status}}<{{#isModel}}{{^containerType}}{{packageName}}.{{modelPackage}}.{{/containerType}}{{/isModel}}{{{dataType}}}{{#nrt}}?{{/nrt}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}}> {{/dataType}}{{/responses}}{{/lambda.joinWithComma}} + { + {{#responses}} + {{#vendorExtensions.x-http-status-is-default}} + /// + /// Returns true if the response is the default response type + /// + /// + bool Is{{vendorExtensions.x-http-status}} { get; } + {{/vendorExtensions.x-http-status-is-default}} + {{^vendorExtensions.x-http-status-is-default}} + /// + /// Returns true if the response is {{code}} {{vendorExtensions.x-http-status}} + /// + /// + bool Is{{vendorExtensions.x-http-status}} { get; } + {{/vendorExtensions.x-http-status-is-default}} + {{^-last}} + + {{/-last}} + {{/responses}} + } + {{/-first}} + {{/responses}} + {{/operation}} /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// {{>visibility}} class {{classname}}Events { @@ -76,16 +110,16 @@ namespace {{packageName}}.{{apiPackage}} /// /// The event raised after the server response /// - public event EventHandler>{{nrt?}} On{{operationId}}; + public event EventHandler{{nrt?}} On{{operationId}}; /// /// The event raised after an error querying the server /// public event EventHandler{{nrt?}} OnError{{operationId}}; - internal void ExecuteOn{{operationId}}(ApiResponse<{{{returnType}}}{{^returnType}}object{{/returnType}}> apiResponse) + internal void ExecuteOn{{operationId}}({{classname}}.{{operationId}}ApiResponse apiResponse) { - On{{operationId}}?.Invoke(this, new ApiResponseEventArgs<{{{returnType}}}{{^returnType}}object{{/returnType}}>(apiResponse)); + On{{operationId}}?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnError{{operationId}}(Exception exception) @@ -104,6 +138,11 @@ namespace {{packageName}}.{{apiPackage}} { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -148,7 +187,7 @@ namespace {{packageName}}.{{apiPackage}} /// Initializes a new instance of the class. /// /// - public {{classname}}(ILogger<{{classname}}> logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, {{classname}}Events {{#lambda.camelcase_param}}{{classname}}Events{{/lambda.camelcase_param}}{{#hasApiKeyMethods}}, + public {{classname}}(ILogger<{{classname}}> logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, {{classname}}Events {{#lambda.camelcase_param}}{{classname}}Events{{/lambda.camelcase_param}}{{#hasApiKeyMethods}}, TokenProvider apiKeyProvider{{/hasApiKeyMethods}}{{#hasHttpBearerMethods}}, TokenProvider bearerTokenProvider{{/hasHttpBearerMethods}}{{#hasHttpBasicMethods}}, TokenProvider basicTokenProvider{{/hasHttpBasicMethods}}{{#hasHttpSignatureMethods}}, @@ -156,7 +195,8 @@ namespace {{packageName}}.{{apiPackage}} TokenProvider oauthTokenProvider{{/hasOAuthMethods}}) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger<{{classname}}>(); HttpClient = httpClient; Events = {{#lambda.camelcase_param}}{{classname}}Events{{/lambda.camelcase_param}};{{#hasApiKeyMethods}} ApiKeyProvider = apiKeyProvider;{{/hasApiKeyMethods}}{{#hasHttpBearerMethods}} @@ -211,7 +251,7 @@ namespace {{packageName}}.{{apiPackage}} {{#allParams}} /// {{/allParams}} - private void After{{operationId}}DefaultImplementation({{#lambda.joinWithComma}}ApiResponse<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}object{{/returnType}}> apiResponseLocalVar {{#allParams}}{{^required}}Option<{{/required}}{{{dataType}}}{{>NullConditionalParameter}}{{^required}}>{{/required}} {{paramName}} {{/allParams}}{{/lambda.joinWithComma}}) + private void After{{operationId}}DefaultImplementation({{#lambda.joinWithComma}}{{interfacePrefix}}{{operationId}}ApiResponse apiResponseLocalVar {{#allParams}}{{^required}}Option<{{/required}}{{{dataType}}}{{>NullConditionalParameter}}{{^required}}>{{/required}} {{paramName}} {{/allParams}}{{/lambda.joinWithComma}}) { bool suppressDefaultLog = false; After{{operationId}}({{#lambda.joinWithComma}}ref suppressDefaultLog apiResponseLocalVar {{#allParams}}{{paramName}} {{/allParams}}{{/lambda.joinWithComma}}); @@ -226,7 +266,7 @@ namespace {{packageName}}.{{apiPackage}} {{#allParams}} /// {{/allParams}} - partial void After{{operationId}}({{#lambda.joinWithComma}}ref bool suppressDefaultLog ApiResponse<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}object{{/returnType}}> apiResponseLocalVar {{#allParams}}{{^required}}Option<{{/required}}{{{dataType}}}{{>NullConditionalParameter}}{{^required}}>{{/required}} {{paramName}} {{/allParams}}{{/lambda.joinWithComma}}); + partial void After{{operationId}}({{#lambda.joinWithComma}}ref bool suppressDefaultLog {{interfacePrefix}}{{operationId}}ApiResponse apiResponseLocalVar {{#allParams}}{{^required}}Option<{{/required}}{{{dataType}}}{{>NullConditionalParameter}}{{^required}}>{{/required}} {{paramName}} {{/allParams}}{{/lambda.joinWithComma}}); /// /// Logs exceptions that occur while retrieving the server response @@ -263,8 +303,8 @@ namespace {{packageName}}.{{apiPackage}} /// {{description}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}} {{/allParams}} /// Cancellation Token to cancel the request. - /// <> where T : - public async Task{{nrt?}}> {{operationId}}OrDefaultAsync({{>OperationSignature}}) + /// <> + public async Task<{{interfacePrefix}}{{operationId}}ApiResponse{{nrt?}}> {{operationId}}OrDefaultAsync({{>OperationSignature}}) { try { @@ -284,8 +324,8 @@ namespace {{packageName}}.{{apiPackage}} /// {{description}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}} {{/allParams}} /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> {{operationId}}Async({{>OperationSignature}}) + /// <> + public async Task<{{interfacePrefix}}{{operationId}}ApiResponse> {{operationId}}Async({{>OperationSignature}}) { {{#lambda.trimLineBreaks}} UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -539,17 +579,21 @@ namespace {{packageName}}.{{apiPackage}} { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync({{#net60OrLater}}cancellationToken{{/net60OrLater}}).ConfigureAwait(false); - ApiResponse<{{{returnType}}}{{^returnType}}object{{/returnType}}> apiResponseLocalVar = new ApiResponse<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}object{{/returnType}}>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "{{path}}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger<{{operationId}}ApiResponse> apiResponseLoggerLocalVar = LoggerFactory.CreateLogger<{{operationId}}ApiResponse>(); + + {{operationId}}ApiResponse apiResponseLocalVar = new{{^net60OrLater}} {{operationId}}ApiResponse{{/net60OrLater}}(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "{{path}}", requestedAtLocalVar, _jsonSerializerOptions); After{{operationId}}DefaultImplementation({{#lambda.joinWithComma}}apiResponseLocalVar {{#allParams}}{{paramName}} {{/allParams}}{{/lambda.joinWithComma}}); Events.ExecuteOn{{operationId}}(apiResponseLocalVar); {{#authMethods}} + {{#-first}} if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); + {{/-first}} {{/authMethods}} return apiResponseLocalVar; } @@ -563,7 +607,108 @@ namespace {{packageName}}.{{apiPackage}} } {{/lambda.trimLineBreaks}} } + {{#responses}} + {{#-first}} + + /// + /// The + /// + {{>visibility}} partial class {{operationId}}ApiResponse : {{packageName}}.{{clientPackage}}.ApiResponse, {{interfacePrefix}}{{operationId}}ApiResponse + { + /// + /// The logger + /// + public ILogger<{{operationId}}ApiResponse> Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public {{operationId}}ApiResponse(ILogger<{{operationId}}ApiResponse> logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + {{#responses}} + + {{#vendorExtensions.x-http-status-is-default}} + /// + /// Returns true if the response is the default response type + /// + /// + public bool Is{{vendorExtensions.x-http-status}} => {{#vendorExtensions.x-only-default}}true{{/vendorExtensions.x-only-default}}{{^vendorExtensions.x-only-default}}{{#lambda.joinConditions}}{{#responses}}{{^vendorExtensions.x-http-status-is-default}}!Is{{vendorExtensions.x-http-status}} {{/vendorExtensions.x-http-status-is-default}}{{/responses}}{{/lambda.joinConditions}}{{/vendorExtensions.x-only-default}}; + {{/vendorExtensions.x-http-status-is-default}} + {{^vendorExtensions.x-http-status-is-default}} + /// + /// Returns true if the response is {{code}} {{vendorExtensions.x-http-status}} + /// + /// + public bool Is{{vendorExtensions.x-http-status}} => {{code}} == (int)StatusCode; + {{/vendorExtensions.x-http-status-is-default}} + {{#dataType}} + + /// + /// Deserializes the response if the response is {{code}} {{vendorExtensions.x-http-status}} + /// + /// + public {{#isModel}}{{^containerType}}{{packageName}}.{{modelPackage}}.{{/containerType}}{{/isModel}}{{{dataType}}}{{#nrt}}?{{/nrt}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}} {{vendorExtensions.x-http-status}}() + { + {{#lambda.trimTrailingWithNewLine}} + {{#lambda.indent4}} + {{>AsModel}} + {{/lambda.indent4}} + {{/lambda.trimTrailingWithNewLine}} + } + + /// + /// Returns true if the response is {{code}} {{vendorExtensions.x-http-status}} and the deserialized response is not null + /// + /// + /// + public bool Try{{vendorExtensions.x-http-status}}({{^netStandard}}[NotNullWhen(true)]{{/netStandard}}out {{#isModel}}{{^containerType}}{{packageName}}.{{modelPackage}}.{{/containerType}}{{/isModel}}{{{dataType}}}{{#nrt}}?{{/nrt}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}} result) + { + result = null; + + try + { + result = {{vendorExtensions.x-http-status}}(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode){{code}}); + } + + return result != null; + } + {{/dataType}} + {{#-last}} + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + {{#lambda.trimTrailingWithNewLine}} + {{#lambda.indent4}} + {{>OnDeserializationError}} + {{/lambda.indent4}} + {{/lambda.trimTrailingWithNewLine}} + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + {{/-last}} + {{/responses}} + } + {{/-first}} + {{/responses}} {{/operation}} } {{/operations}} } +{{/lambda.trimLineBreaks}} diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api_test.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api_test.mustache index a3f7a0c24324..02ce2216830c 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api_test.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api_test.mustache @@ -38,7 +38,7 @@ namespace {{packageName}}.Test.{{apiPackage}} {{/allParams}} {{#returnType}} var response = await _instance.{{operationId}}Async({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}); - var model = response.AsModel(); + var model = response.{{#lambda.first}}{{#responses}}{{vendorExtensions.x-http-status}} {{/responses}}{{/lambda.first}}(); Assert.IsType<{{{.}}}>(model); {{/returnType}} {{^returnType}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/templating/mustache/IndentedLambdaTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/templating/mustache/IndentedLambdaTest.java index 223afaf913fb..b88530344558 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/templating/mustache/IndentedLambdaTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/templating/mustache/IndentedLambdaTest.java @@ -22,7 +22,7 @@ public class IndentedLambdaTest extends LambdaTest { @Test public void indentedCountTest() { // Given - Map ctx = context("indented", new IndentedLambda(8, " ", false)); + Map ctx = context("indented", new IndentedLambda(8, " ", false, false)); // When & Then // IndentedLambda applies indentation from second line on of a template. diff --git a/samples/client/petstore/csharp/OpenAPIClient-ConditionalSerialization/docs/UpdatePet200Response.md b/samples/client/petstore/csharp/OpenAPIClient-ConditionalSerialization/docs/UpdatePet200Response.md new file mode 100644 index 000000000000..d1625d266647 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-ConditionalSerialization/docs/UpdatePet200Response.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.UpdatePet200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**VarString** | [**Pet**](Pet.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs b/samples/client/petstore/csharp/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs new file mode 100644 index 000000000000..8cb066737bc4 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs @@ -0,0 +1,66 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing UpdatePet200Response + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class UpdatePet200ResponseTests : IDisposable + { + // TODO uncomment below to declare an instance variable for UpdatePet200Response + //private UpdatePet200Response instance; + + public UpdatePet200ResponseTests() + { + // TODO uncomment below to create an instance of UpdatePet200Response + //instance = new UpdatePet200Response(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of UpdatePet200Response + /// + [Fact] + public void UpdatePet200ResponseInstanceTest() + { + // TODO uncomment below to test "IsType" UpdatePet200Response + //Assert.IsType(instance); + } + + /// + /// Test the property 'VarString' + /// + [Fact] + public void VarStringTest() + { + // TODO unit test for the property 'VarString' + } + } +} diff --git a/samples/client/petstore/csharp/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/UpdatePet200Response.cs b/samples/client/petstore/csharp/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/UpdatePet200Response.cs new file mode 100644 index 000000000000..2afd485edd84 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/UpdatePet200Response.cs @@ -0,0 +1,154 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// UpdatePet200Response + /// + [DataContract(Name = "updatePet_200_response")] + public partial class UpdatePet200Response : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// varString. + public UpdatePet200Response(Pet varString = default(Pet)) + { + this._VarString = varString; + if (this.VarString != null) + { + this._flagVarString = true; + } + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets VarString + /// + [DataMember(Name = "string", EmitDefaultValue = false)] + public Pet VarString + { + get{ return _VarString;} + set + { + _VarString = value; + _flagVarString = true; + } + } + private Pet _VarString; + private bool _flagVarString; + + /// + /// Returns false as VarString should not be serialized given that it's read-only. + /// + /// false (boolean) + public bool ShouldSerializeVarString() + { + return _flagVarString; + } + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class UpdatePet200Response {\n"); + sb.Append(" VarString: ").Append(VarString).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as UpdatePet200Response).AreEqual; + } + + /// + /// Returns true if UpdatePet200Response instances are equal + /// + /// Instance of UpdatePet200Response to be compared + /// Boolean + public bool Equals(UpdatePet200Response input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.VarString != null) + { + hashCode = (hashCode * 59) + this.VarString.GetHashCode(); + } + if (this.AdditionalProperties != null) + { + hashCode = (hashCode * 59) + this.AdditionalProperties.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/AnotherFakeApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/AnotherFakeApiTests.cs index 8ef83b919dc4..0d95e8d740ea 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/AnotherFakeApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/AnotherFakeApiTests.cs @@ -58,7 +58,7 @@ namespace UseSourceGeneration.Test.Api { ModelClient modelClient = default!; var response = await _instance.Call123TestSpecialTagsAsync(modelClient); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/DefaultApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/DefaultApiTests.cs index c9b96924e701..c2df90bda4d7 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/DefaultApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/DefaultApiTests.cs @@ -57,7 +57,7 @@ namespace UseSourceGeneration.Test.Api public async Task FooGetAsyncTest() { var response = await _instance.FooGetAsync(); - var model = response.AsModel(); + var model = response.Default(); Assert.IsType(model); } @@ -78,8 +78,30 @@ namespace UseSourceGeneration.Test.Api public async Task HelloAsyncTest() { var response = await _instance.HelloAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } + + /// + /// Test RolesReportGet + /// + [Fact (Skip = "not implemented")] + public async Task RolesReportGetAsyncTest() + { + var response = await _instance.RolesReportGetAsync(); + var model = response.Ok(); + Assert.IsType>>(model); + } + + /// + /// Test Test + /// + [Fact (Skip = "not implemented")] + public async Task TestAsyncTest() + { + var response = await _instance.TestAsync(); + var model = response.Ok(); + Assert.IsType(model); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/FakeApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/FakeApiTests.cs index 82b0ab64736b..e36737349b7b 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/FakeApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/FakeApiTests.cs @@ -57,7 +57,7 @@ namespace UseSourceGeneration.Test.Api public async Task FakeHealthGetAsyncTest() { var response = await _instance.FakeHealthGetAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -69,7 +69,7 @@ namespace UseSourceGeneration.Test.Api { Client.Option body = default!; var response = await _instance.FakeOuterBooleanSerializeAsync(body); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -81,7 +81,7 @@ namespace UseSourceGeneration.Test.Api { Client.Option outerComposite = default!; var response = await _instance.FakeOuterCompositeSerializeAsync(outerComposite); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -93,7 +93,7 @@ namespace UseSourceGeneration.Test.Api { Client.Option body = default!; var response = await _instance.FakeOuterNumberSerializeAsync(body); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -106,7 +106,7 @@ namespace UseSourceGeneration.Test.Api Guid requiredStringUuid = default!; Client.Option body = default!; var response = await _instance.FakeOuterStringSerializeAsync(requiredStringUuid, body); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -117,7 +117,7 @@ namespace UseSourceGeneration.Test.Api public async Task GetArrayOfEnumsAsyncTest() { var response = await _instance.GetArrayOfEnumsAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } @@ -150,7 +150,7 @@ namespace UseSourceGeneration.Test.Api { ModelClient modelClient = default!; var response = await _instance.TestClientModelAsync(modelClient); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/FakeClassnameTags123ApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/FakeClassnameTags123ApiTests.cs index 5945828914d8..edfa110288fb 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/FakeClassnameTags123ApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/FakeClassnameTags123ApiTests.cs @@ -58,7 +58,7 @@ namespace UseSourceGeneration.Test.Api { ModelClient modelClient = default!; var response = await _instance.TestClassnameAsync(modelClient); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/PetApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/PetApiTests.cs index 6075d6e5e73c..5e628c9e4cef 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/PetApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/PetApiTests.cs @@ -79,7 +79,7 @@ namespace UseSourceGeneration.Test.Api { List status = default!; var response = await _instance.FindPetsByStatusAsync(status); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } @@ -91,7 +91,7 @@ namespace UseSourceGeneration.Test.Api { List tags = default!; var response = await _instance.FindPetsByTagsAsync(tags); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } @@ -103,7 +103,7 @@ namespace UseSourceGeneration.Test.Api { long petId = default!; var response = await _instance.GetPetByIdAsync(petId); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -139,7 +139,7 @@ namespace UseSourceGeneration.Test.Api Client.Option file = default!; Client.Option additionalMetadata = default!; var response = await _instance.UploadFileAsync(petId, file, additionalMetadata); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -153,7 +153,7 @@ namespace UseSourceGeneration.Test.Api long petId = default!; Client.Option additionalMetadata = default!; var response = await _instance.UploadFileWithRequiredFileAsync(requiredFile, petId, additionalMetadata); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/StoreApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/StoreApiTests.cs index 3320fae2c17d..76cf1e12de90 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/StoreApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/StoreApiTests.cs @@ -67,7 +67,7 @@ namespace UseSourceGeneration.Test.Api public async Task GetInventoryAsyncTest() { var response = await _instance.GetInventoryAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } @@ -79,7 +79,7 @@ namespace UseSourceGeneration.Test.Api { long orderId = default!; var response = await _instance.GetOrderByIdAsync(orderId); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -91,7 +91,7 @@ namespace UseSourceGeneration.Test.Api { Order order = default!; var response = await _instance.PlaceOrderAsync(order); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/UserApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/UserApiTests.cs index ebc81624667a..232dad892085 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/UserApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration.Test/Api/UserApiTests.cs @@ -98,7 +98,7 @@ namespace UseSourceGeneration.Test.Api { string username = default!; var response = await _instance.GetUserByNameAsync(username); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -111,7 +111,7 @@ namespace UseSourceGeneration.Test.Api string username = default!; string password = default!; var response = await _instance.LoginUserAsync(username, password); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/AnotherFakeApi.cs index e22c4a0605f7..bc8b2f1b5f41 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/AnotherFakeApi.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using UseSourceGeneration.Client; -using UseSourceGeneration.Api; using UseSourceGeneration.Model; +using System.Diagnostics.CodeAnalysis; namespace UseSourceGeneration.Api { @@ -44,8 +44,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ModelClient>> - Task> Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); /// /// To test special tags @@ -55,29 +55,40 @@ namespace UseSourceGeneration.Api /// /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ModelClient>?> - Task?> Call123TestSpecialTagsOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task Call123TestSpecialTagsOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface ICall123TestSpecialTagsApiResponse : UseSourceGeneration.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class AnotherFakeApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnCall123TestSpecialTags; + public event EventHandler? OnCall123TestSpecialTags; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorCall123TestSpecialTags; - internal void ExecuteOnCall123TestSpecialTags(ApiResponse apiResponse) + internal void ExecuteOnCall123TestSpecialTags(AnotherFakeApi.Call123TestSpecialTagsApiResponse apiResponse) { - OnCall123TestSpecialTags?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnCall123TestSpecialTags?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorCall123TestSpecialTags(Exception exception) @@ -93,6 +104,11 @@ namespace UseSourceGeneration.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -137,7 +153,7 @@ namespace UseSourceGeneration.Api /// Initializes a new instance of the class. /// /// - public AnotherFakeApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, AnotherFakeApiEvents anotherFakeApiEvents, + public AnotherFakeApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, AnotherFakeApiEvents anotherFakeApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -145,7 +161,8 @@ namespace UseSourceGeneration.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = anotherFakeApiEvents; ApiKeyProvider = apiKeyProvider; @@ -173,7 +190,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterCall123TestSpecialTagsDefaultImplementation(ApiResponse apiResponseLocalVar, ModelClient modelClient) + private void AfterCall123TestSpecialTagsDefaultImplementation(ICall123TestSpecialTagsApiResponse apiResponseLocalVar, ModelClient modelClient) { bool suppressDefaultLog = false; AfterCall123TestSpecialTags(ref suppressDefaultLog, apiResponseLocalVar, modelClient); @@ -187,7 +204,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterCall123TestSpecialTags(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, ModelClient modelClient); + partial void AfterCall123TestSpecialTags(ref bool suppressDefaultLog, ICall123TestSpecialTagsApiResponse apiResponseLocalVar, ModelClient modelClient); /// /// Logs exceptions that occur while retrieving the server response @@ -219,8 +236,8 @@ namespace UseSourceGeneration.Api /// /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> Call123TestSpecialTagsOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task Call123TestSpecialTagsOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { try { @@ -238,8 +255,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -288,7 +305,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/another-fake/dummy", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + Call123TestSpecialTagsApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/another-fake/dummy", requestedAtLocalVar, _jsonSerializerOptions); AfterCall123TestSpecialTagsDefaultImplementation(apiResponseLocalVar, modelClient); @@ -305,5 +324,82 @@ namespace UseSourceGeneration.Api throw; } } + + /// + /// The + /// + public partial class Call123TestSpecialTagsApiResponse : UseSourceGeneration.Client.ApiResponse, ICall123TestSpecialTagsApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public Call123TestSpecialTagsApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public UseSourceGeneration.Model.ModelClient? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out UseSourceGeneration.Model.ModelClient? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/DefaultApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/DefaultApi.cs index fad0e0c577c4..9795665904c0 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/DefaultApi.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using UseSourceGeneration.Client; -using UseSourceGeneration.Api; using UseSourceGeneration.Model; +using System.Diagnostics.CodeAnalysis; namespace UseSourceGeneration.Api { @@ -43,8 +43,8 @@ namespace UseSourceGeneration.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<FooGetDefaultResponse>> - Task> FooGetAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FooGetAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -53,8 +53,8 @@ namespace UseSourceGeneration.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>FooGetDefaultResponse>?> - Task?> FooGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task FooGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -65,8 +65,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> GetCountryAsync(string country, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetCountryAsync(string country, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -76,8 +76,8 @@ namespace UseSourceGeneration.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> GetCountryOrDefaultAsync(string country, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task GetCountryOrDefaultAsync(string country, System.Threading.CancellationToken cancellationToken = default); /// /// Hello @@ -87,8 +87,8 @@ namespace UseSourceGeneration.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<Guid>>> - Task>> HelloAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task HelloAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Hello @@ -97,8 +97,8 @@ namespace UseSourceGeneration.Api /// Hello /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<Guid>>?> - Task>?> HelloOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task HelloOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -108,8 +108,8 @@ namespace UseSourceGeneration.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<List<RolesReportsHash>>>> - Task>>> RolesReportGetAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task RolesReportGetAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -118,8 +118,8 @@ namespace UseSourceGeneration.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<List<RolesReportsHash>>>?> - Task>>?> RolesReportGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task RolesReportGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Retrieve an existing Notificationtest's Elements @@ -129,8 +129,8 @@ namespace UseSourceGeneration.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<NotificationtestGetElementsV1ResponseMPayload>> - Task> TestAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Retrieve an existing Notificationtest's Elements @@ -139,29 +139,88 @@ namespace UseSourceGeneration.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>NotificationtestGetElementsV1ResponseMPayload>?> - Task?> TestOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IFooGetApiResponse : UseSourceGeneration.Client.IApiResponse, IDefault + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface IGetCountryApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IHelloApiResponse : UseSourceGeneration.Client.IApiResponse, IOk?> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IRolesReportGetApiResponse : UseSourceGeneration.Client.IApiResponse, IOk?> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestApiResponse : UseSourceGeneration.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class DefaultApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnFooGet; + public event EventHandler? OnFooGet; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorFooGet; - internal void ExecuteOnFooGet(ApiResponse apiResponse) + internal void ExecuteOnFooGet(DefaultApi.FooGetApiResponse apiResponse) { - OnFooGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFooGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFooGet(Exception exception) @@ -172,16 +231,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnGetCountry; + public event EventHandler? OnGetCountry; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorGetCountry; - internal void ExecuteOnGetCountry(ApiResponse apiResponse) + internal void ExecuteOnGetCountry(DefaultApi.GetCountryApiResponse apiResponse) { - OnGetCountry?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnGetCountry?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetCountry(Exception exception) @@ -192,16 +251,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>>? OnHello; + public event EventHandler? OnHello; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorHello; - internal void ExecuteOnHello(ApiResponse> apiResponse) + internal void ExecuteOnHello(DefaultApi.HelloApiResponse apiResponse) { - OnHello?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnHello?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorHello(Exception exception) @@ -212,16 +271,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>>>? OnRolesReportGet; + public event EventHandler? OnRolesReportGet; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorRolesReportGet; - internal void ExecuteOnRolesReportGet(ApiResponse>> apiResponse) + internal void ExecuteOnRolesReportGet(DefaultApi.RolesReportGetApiResponse apiResponse) { - OnRolesReportGet?.Invoke(this, new ApiResponseEventArgs>>(apiResponse)); + OnRolesReportGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorRolesReportGet(Exception exception) @@ -232,16 +291,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTest; + public event EventHandler? OnTest; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTest; - internal void ExecuteOnTest(ApiResponse apiResponse) + internal void ExecuteOnTest(DefaultApi.TestApiResponse apiResponse) { - OnTest?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTest?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTest(Exception exception) @@ -257,6 +316,11 @@ namespace UseSourceGeneration.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -301,7 +365,7 @@ namespace UseSourceGeneration.Api /// Initializes a new instance of the class. /// /// - public DefaultApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, DefaultApiEvents defaultApiEvents, + public DefaultApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, DefaultApiEvents defaultApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -309,7 +373,8 @@ namespace UseSourceGeneration.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = defaultApiEvents; ApiKeyProvider = apiKeyProvider; @@ -323,7 +388,7 @@ namespace UseSourceGeneration.Api /// Processes the server response /// /// - private void AfterFooGetDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterFooGetDefaultImplementation(IFooGetApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterFooGet(ref suppressDefaultLog, apiResponseLocalVar); @@ -336,7 +401,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterFooGet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterFooGet(ref bool suppressDefaultLog, IFooGetApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -365,8 +430,8 @@ namespace UseSourceGeneration.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> FooGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FooGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -383,8 +448,8 @@ namespace UseSourceGeneration.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FooGetAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FooGetAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -416,7 +481,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/foo", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FooGetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/foo", requestedAtLocalVar, _jsonSerializerOptions); AfterFooGetDefaultImplementation(apiResponseLocalVar); @@ -434,6 +501,83 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class FooGetApiResponse : UseSourceGeneration.Client.ApiResponse, IFooGetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FooGetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + /// + /// Deserializes the response if the response is 0 Default + /// + /// + public UseSourceGeneration.Model.FooGetDefaultResponse? Default() + { + // This logic may be modified with the AsModel.mustache template + return IsDefault + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 0 Default and the deserialized response is not null + /// + /// + /// + public bool TryDefault([NotNullWhen(true)]out UseSourceGeneration.Model.FooGetDefaultResponse? result) + { + result = null; + + try + { + result = Default(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)0); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatGetCountry(ref string country); /// @@ -452,7 +596,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterGetCountryDefaultImplementation(ApiResponse apiResponseLocalVar, string country) + private void AfterGetCountryDefaultImplementation(IGetCountryApiResponse apiResponseLocalVar, string country) { bool suppressDefaultLog = false; AfterGetCountry(ref suppressDefaultLog, apiResponseLocalVar, country); @@ -466,7 +610,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterGetCountry(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string country); + partial void AfterGetCountry(ref bool suppressDefaultLog, IGetCountryApiResponse apiResponseLocalVar, string country); /// /// Logs exceptions that occur while retrieving the server response @@ -498,8 +642,8 @@ namespace UseSourceGeneration.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> GetCountryOrDefaultAsync(string country, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetCountryOrDefaultAsync(string country, System.Threading.CancellationToken cancellationToken = default) { try { @@ -517,8 +661,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetCountryAsync(string country, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetCountryAsync(string country, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -564,7 +708,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/country", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetCountryApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/country", requestedAtLocalVar, _jsonSerializerOptions); AfterGetCountryDefaultImplementation(apiResponseLocalVar, country); @@ -582,11 +728,56 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class GetCountryApiResponse : UseSourceGeneration.Client.ApiResponse, IGetCountryApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetCountryApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterHelloDefaultImplementation(ApiResponse> apiResponseLocalVar) + private void AfterHelloDefaultImplementation(IHelloApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterHello(ref suppressDefaultLog, apiResponseLocalVar); @@ -599,7 +790,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterHello(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar); + partial void AfterHello(ref bool suppressDefaultLog, IHelloApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -628,8 +819,8 @@ namespace UseSourceGeneration.Api /// Hello Hello /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>?> HelloOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task HelloOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -646,8 +837,8 @@ namespace UseSourceGeneration.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> HelloAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task HelloAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -679,7 +870,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/hello", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + HelloApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/hello", requestedAtLocalVar, _jsonSerializerOptions); AfterHelloDefaultImplementation(apiResponseLocalVar); @@ -697,11 +890,88 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class HelloApiResponse : UseSourceGeneration.Client.ApiResponse, IHelloApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public HelloApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out List? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterRolesReportGetDefaultImplementation(ApiResponse>> apiResponseLocalVar) + private void AfterRolesReportGetDefaultImplementation(IRolesReportGetApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterRolesReportGet(ref suppressDefaultLog, apiResponseLocalVar); @@ -714,7 +984,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterRolesReportGet(ref bool suppressDefaultLog, ApiResponse>> apiResponseLocalVar); + partial void AfterRolesReportGet(ref bool suppressDefaultLog, IRolesReportGetApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -743,8 +1013,8 @@ namespace UseSourceGeneration.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>>?> RolesReportGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task RolesReportGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -761,8 +1031,8 @@ namespace UseSourceGeneration.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>>> RolesReportGetAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task RolesReportGetAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -794,7 +1064,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse>> apiResponseLocalVar = new ApiResponse>>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/roles/report", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + RolesReportGetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/roles/report", requestedAtLocalVar, _jsonSerializerOptions); AfterRolesReportGetDefaultImplementation(apiResponseLocalVar); @@ -812,11 +1084,88 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class RolesReportGetApiResponse : UseSourceGeneration.Client.ApiResponse, IRolesReportGetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public RolesReportGetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out List? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterTestDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterTestDefaultImplementation(ITestApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterTest(ref suppressDefaultLog, apiResponseLocalVar); @@ -829,7 +1178,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterTest(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterTest(ref bool suppressDefaultLog, ITestApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -858,8 +1207,8 @@ namespace UseSourceGeneration.Api /// Retrieve an existing Notificationtest's Elements /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -876,8 +1225,8 @@ namespace UseSourceGeneration.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -909,7 +1258,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/test", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/test", requestedAtLocalVar, _jsonSerializerOptions); AfterTestDefaultImplementation(apiResponseLocalVar); @@ -926,5 +1277,82 @@ namespace UseSourceGeneration.Api throw; } } + + /// + /// The + /// + public partial class TestApiResponse : UseSourceGeneration.Client.ApiResponse, ITestApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public UseSourceGeneration.Model.NotificationtestGetElementsV1ResponseMPayload? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out UseSourceGeneration.Model.NotificationtestGetElementsV1ResponseMPayload? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/FakeApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/FakeApi.cs index 0a7cfe99bb2b..d45f7ccfe0b8 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/FakeApi.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using UseSourceGeneration.Client; -using UseSourceGeneration.Api; using UseSourceGeneration.Model; +using System.Diagnostics.CodeAnalysis; namespace UseSourceGeneration.Api { @@ -43,8 +43,8 @@ namespace UseSourceGeneration.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<HealthCheckResult>> - Task> FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Health check endpoint @@ -53,8 +53,8 @@ namespace UseSourceGeneration.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>HealthCheckResult>?> - Task?> FakeHealthGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task FakeHealthGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -65,8 +65,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// Input boolean as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<bool>> - Task> FakeOuterBooleanSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterBooleanSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -76,8 +76,8 @@ namespace UseSourceGeneration.Api /// /// Input boolean as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>bool>?> - Task?> FakeOuterBooleanSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task FakeOuterBooleanSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -88,8 +88,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// Input composite as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<OuterComposite>> - Task> FakeOuterCompositeSerializeAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterCompositeSerializeAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -99,8 +99,8 @@ namespace UseSourceGeneration.Api /// /// Input composite as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>OuterComposite>?> - Task?> FakeOuterCompositeSerializeOrDefaultAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task FakeOuterCompositeSerializeOrDefaultAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -111,8 +111,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// Input number as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<decimal>> - Task> FakeOuterNumberSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterNumberSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -122,8 +122,8 @@ namespace UseSourceGeneration.Api /// /// Input number as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>decimal>?> - Task?> FakeOuterNumberSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task FakeOuterNumberSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -135,8 +135,8 @@ namespace UseSourceGeneration.Api /// Required UUID String /// Input string as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<string>> - Task> FakeOuterStringSerializeAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterStringSerializeAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -147,8 +147,8 @@ namespace UseSourceGeneration.Api /// Required UUID String /// Input string as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>string>?> - Task?> FakeOuterStringSerializeOrDefaultAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task FakeOuterStringSerializeOrDefaultAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// Array of Enums @@ -158,8 +158,8 @@ namespace UseSourceGeneration.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<OuterEnum>>> - Task>> GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Array of Enums @@ -168,8 +168,8 @@ namespace UseSourceGeneration.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<OuterEnum>>?> - Task>?> GetArrayOfEnumsOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task GetArrayOfEnumsOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -180,8 +180,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -191,8 +191,8 @@ namespace UseSourceGeneration.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestBodyWithFileSchemaOrDefaultAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestBodyWithFileSchemaOrDefaultAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -204,8 +204,8 @@ namespace UseSourceGeneration.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestBodyWithQueryParamsAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestBodyWithQueryParamsAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -216,8 +216,8 @@ namespace UseSourceGeneration.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestBodyWithQueryParamsOrDefaultAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestBodyWithQueryParamsOrDefaultAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default); /// /// To test \"client\" model @@ -228,8 +228,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ModelClient>> - Task> TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); /// /// To test \"client\" model @@ -239,8 +239,8 @@ namespace UseSourceGeneration.Api /// /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ModelClient>?> - Task?> TestClientModelOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestClientModelOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); /// /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 @@ -264,8 +264,8 @@ namespace UseSourceGeneration.Api /// None (optional) /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestEndpointParametersAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestEndpointParametersAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default); /// /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 @@ -288,8 +288,8 @@ namespace UseSourceGeneration.Api /// None (optional) /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestEndpointParametersOrDefaultAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestEndpointParametersOrDefaultAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default); /// /// To test enum parameters @@ -307,8 +307,8 @@ namespace UseSourceGeneration.Api /// Query parameter enum test (string) (optional, default to -efg) /// Form parameter enum test (string) (optional, default to -efg) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestEnumParametersAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestEnumParametersAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default); /// /// To test enum parameters @@ -325,8 +325,8 @@ namespace UseSourceGeneration.Api /// Query parameter enum test (string) (optional, default to -efg) /// Form parameter enum test (string) (optional, default to -efg) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestEnumParametersOrDefaultAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestEnumParametersOrDefaultAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default); /// /// Fake endpoint to test group parameters (optional) @@ -342,8 +342,8 @@ namespace UseSourceGeneration.Api /// String in group parameters (optional) /// Integer in group parameters (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestGroupParametersAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestGroupParametersAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default); /// /// Fake endpoint to test group parameters (optional) @@ -358,8 +358,8 @@ namespace UseSourceGeneration.Api /// String in group parameters (optional) /// Integer in group parameters (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestGroupParametersOrDefaultAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestGroupParametersOrDefaultAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default); /// /// test inline additionalProperties @@ -370,8 +370,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// request body /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default); /// /// test inline additionalProperties @@ -381,8 +381,8 @@ namespace UseSourceGeneration.Api /// /// request body /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestInlineAdditionalPropertiesOrDefaultAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestInlineAdditionalPropertiesOrDefaultAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default); /// /// test inline free-form additionalProperties @@ -393,8 +393,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// request body /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestInlineFreeformAdditionalPropertiesAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestInlineFreeformAdditionalPropertiesAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default); /// /// test inline free-form additionalProperties @@ -404,8 +404,8 @@ namespace UseSourceGeneration.Api /// /// request body /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestInlineFreeformAdditionalPropertiesOrDefaultAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestInlineFreeformAdditionalPropertiesOrDefaultAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default); /// /// test json serialization of form data @@ -417,8 +417,8 @@ namespace UseSourceGeneration.Api /// field1 /// field2 /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default); /// /// test json serialization of form data @@ -429,8 +429,8 @@ namespace UseSourceGeneration.Api /// field1 /// field2 /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestJsonFormDataOrDefaultAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestJsonFormDataOrDefaultAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -449,8 +449,8 @@ namespace UseSourceGeneration.Api /// (optional) /// (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -468,29 +468,232 @@ namespace UseSourceGeneration.Api /// (optional) /// (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestQueryParameterCollectionFormatOrDefaultAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestQueryParameterCollectionFormatOrDefaultAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IFakeHealthGetApiResponse : UseSourceGeneration.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IFakeOuterBooleanSerializeApiResponse : UseSourceGeneration.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IFakeOuterCompositeSerializeApiResponse : UseSourceGeneration.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IFakeOuterNumberSerializeApiResponse : UseSourceGeneration.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IFakeOuterStringSerializeApiResponse : UseSourceGeneration.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IGetArrayOfEnumsApiResponse : UseSourceGeneration.Client.IApiResponse, IOk?> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestBodyWithFileSchemaApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestBodyWithQueryParamsApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestClientModelApiResponse : UseSourceGeneration.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestEndpointParametersApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface ITestEnumParametersApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface ITestGroupParametersApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface ITestInlineAdditionalPropertiesApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestInlineFreeformAdditionalPropertiesApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestJsonFormDataApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestQueryParameterCollectionFormatApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class FakeApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnFakeHealthGet; + public event EventHandler? OnFakeHealthGet; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorFakeHealthGet; - internal void ExecuteOnFakeHealthGet(ApiResponse apiResponse) + internal void ExecuteOnFakeHealthGet(FakeApi.FakeHealthGetApiResponse apiResponse) { - OnFakeHealthGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeHealthGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeHealthGet(Exception exception) @@ -501,16 +704,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnFakeOuterBooleanSerialize; + public event EventHandler? OnFakeOuterBooleanSerialize; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorFakeOuterBooleanSerialize; - internal void ExecuteOnFakeOuterBooleanSerialize(ApiResponse apiResponse) + internal void ExecuteOnFakeOuterBooleanSerialize(FakeApi.FakeOuterBooleanSerializeApiResponse apiResponse) { - OnFakeOuterBooleanSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeOuterBooleanSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeOuterBooleanSerialize(Exception exception) @@ -521,16 +724,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnFakeOuterCompositeSerialize; + public event EventHandler? OnFakeOuterCompositeSerialize; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorFakeOuterCompositeSerialize; - internal void ExecuteOnFakeOuterCompositeSerialize(ApiResponse apiResponse) + internal void ExecuteOnFakeOuterCompositeSerialize(FakeApi.FakeOuterCompositeSerializeApiResponse apiResponse) { - OnFakeOuterCompositeSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeOuterCompositeSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeOuterCompositeSerialize(Exception exception) @@ -541,16 +744,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnFakeOuterNumberSerialize; + public event EventHandler? OnFakeOuterNumberSerialize; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorFakeOuterNumberSerialize; - internal void ExecuteOnFakeOuterNumberSerialize(ApiResponse apiResponse) + internal void ExecuteOnFakeOuterNumberSerialize(FakeApi.FakeOuterNumberSerializeApiResponse apiResponse) { - OnFakeOuterNumberSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeOuterNumberSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeOuterNumberSerialize(Exception exception) @@ -561,16 +764,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnFakeOuterStringSerialize; + public event EventHandler? OnFakeOuterStringSerialize; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorFakeOuterStringSerialize; - internal void ExecuteOnFakeOuterStringSerialize(ApiResponse apiResponse) + internal void ExecuteOnFakeOuterStringSerialize(FakeApi.FakeOuterStringSerializeApiResponse apiResponse) { - OnFakeOuterStringSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeOuterStringSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeOuterStringSerialize(Exception exception) @@ -581,16 +784,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>>? OnGetArrayOfEnums; + public event EventHandler? OnGetArrayOfEnums; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorGetArrayOfEnums; - internal void ExecuteOnGetArrayOfEnums(ApiResponse> apiResponse) + internal void ExecuteOnGetArrayOfEnums(FakeApi.GetArrayOfEnumsApiResponse apiResponse) { - OnGetArrayOfEnums?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnGetArrayOfEnums?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetArrayOfEnums(Exception exception) @@ -601,16 +804,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestBodyWithFileSchema; + public event EventHandler? OnTestBodyWithFileSchema; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestBodyWithFileSchema; - internal void ExecuteOnTestBodyWithFileSchema(ApiResponse apiResponse) + internal void ExecuteOnTestBodyWithFileSchema(FakeApi.TestBodyWithFileSchemaApiResponse apiResponse) { - OnTestBodyWithFileSchema?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestBodyWithFileSchema?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestBodyWithFileSchema(Exception exception) @@ -621,16 +824,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestBodyWithQueryParams; + public event EventHandler? OnTestBodyWithQueryParams; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestBodyWithQueryParams; - internal void ExecuteOnTestBodyWithQueryParams(ApiResponse apiResponse) + internal void ExecuteOnTestBodyWithQueryParams(FakeApi.TestBodyWithQueryParamsApiResponse apiResponse) { - OnTestBodyWithQueryParams?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestBodyWithQueryParams?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestBodyWithQueryParams(Exception exception) @@ -641,16 +844,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestClientModel; + public event EventHandler? OnTestClientModel; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestClientModel; - internal void ExecuteOnTestClientModel(ApiResponse apiResponse) + internal void ExecuteOnTestClientModel(FakeApi.TestClientModelApiResponse apiResponse) { - OnTestClientModel?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestClientModel?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestClientModel(Exception exception) @@ -661,16 +864,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestEndpointParameters; + public event EventHandler? OnTestEndpointParameters; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestEndpointParameters; - internal void ExecuteOnTestEndpointParameters(ApiResponse apiResponse) + internal void ExecuteOnTestEndpointParameters(FakeApi.TestEndpointParametersApiResponse apiResponse) { - OnTestEndpointParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestEndpointParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestEndpointParameters(Exception exception) @@ -681,16 +884,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestEnumParameters; + public event EventHandler? OnTestEnumParameters; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestEnumParameters; - internal void ExecuteOnTestEnumParameters(ApiResponse apiResponse) + internal void ExecuteOnTestEnumParameters(FakeApi.TestEnumParametersApiResponse apiResponse) { - OnTestEnumParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestEnumParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestEnumParameters(Exception exception) @@ -701,16 +904,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestGroupParameters; + public event EventHandler? OnTestGroupParameters; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestGroupParameters; - internal void ExecuteOnTestGroupParameters(ApiResponse apiResponse) + internal void ExecuteOnTestGroupParameters(FakeApi.TestGroupParametersApiResponse apiResponse) { - OnTestGroupParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestGroupParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestGroupParameters(Exception exception) @@ -721,16 +924,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestInlineAdditionalProperties; + public event EventHandler? OnTestInlineAdditionalProperties; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestInlineAdditionalProperties; - internal void ExecuteOnTestInlineAdditionalProperties(ApiResponse apiResponse) + internal void ExecuteOnTestInlineAdditionalProperties(FakeApi.TestInlineAdditionalPropertiesApiResponse apiResponse) { - OnTestInlineAdditionalProperties?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestInlineAdditionalProperties?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestInlineAdditionalProperties(Exception exception) @@ -741,16 +944,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestInlineFreeformAdditionalProperties; + public event EventHandler? OnTestInlineFreeformAdditionalProperties; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestInlineFreeformAdditionalProperties; - internal void ExecuteOnTestInlineFreeformAdditionalProperties(ApiResponse apiResponse) + internal void ExecuteOnTestInlineFreeformAdditionalProperties(FakeApi.TestInlineFreeformAdditionalPropertiesApiResponse apiResponse) { - OnTestInlineFreeformAdditionalProperties?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestInlineFreeformAdditionalProperties?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestInlineFreeformAdditionalProperties(Exception exception) @@ -761,16 +964,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestJsonFormData; + public event EventHandler? OnTestJsonFormData; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestJsonFormData; - internal void ExecuteOnTestJsonFormData(ApiResponse apiResponse) + internal void ExecuteOnTestJsonFormData(FakeApi.TestJsonFormDataApiResponse apiResponse) { - OnTestJsonFormData?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestJsonFormData?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestJsonFormData(Exception exception) @@ -781,16 +984,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestQueryParameterCollectionFormat; + public event EventHandler? OnTestQueryParameterCollectionFormat; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestQueryParameterCollectionFormat; - internal void ExecuteOnTestQueryParameterCollectionFormat(ApiResponse apiResponse) + internal void ExecuteOnTestQueryParameterCollectionFormat(FakeApi.TestQueryParameterCollectionFormatApiResponse apiResponse) { - OnTestQueryParameterCollectionFormat?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestQueryParameterCollectionFormat?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestQueryParameterCollectionFormat(Exception exception) @@ -806,6 +1009,11 @@ namespace UseSourceGeneration.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -850,7 +1058,7 @@ namespace UseSourceGeneration.Api /// Initializes a new instance of the class. /// /// - public FakeApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, FakeApiEvents fakeApiEvents, + public FakeApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, FakeApiEvents fakeApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -858,7 +1066,8 @@ namespace UseSourceGeneration.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = fakeApiEvents; ApiKeyProvider = apiKeyProvider; @@ -872,7 +1081,7 @@ namespace UseSourceGeneration.Api /// Processes the server response /// /// - private void AfterFakeHealthGetDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterFakeHealthGetDefaultImplementation(IFakeHealthGetApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterFakeHealthGet(ref suppressDefaultLog, apiResponseLocalVar); @@ -885,7 +1094,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterFakeHealthGet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterFakeHealthGet(ref bool suppressDefaultLog, IFakeHealthGetApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -914,8 +1123,8 @@ namespace UseSourceGeneration.Api /// Health check endpoint /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> FakeHealthGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeHealthGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -932,8 +1141,8 @@ namespace UseSourceGeneration.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -965,7 +1174,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/health", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeHealthGetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/health", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeHealthGetDefaultImplementation(apiResponseLocalVar); @@ -983,6 +1194,83 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class FakeHealthGetApiResponse : UseSourceGeneration.Client.ApiResponse, IFakeHealthGetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeHealthGetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public UseSourceGeneration.Model.HealthCheckResult? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out UseSourceGeneration.Model.HealthCheckResult? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFakeOuterBooleanSerialize(ref Option body); /// @@ -990,7 +1278,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterFakeOuterBooleanSerializeDefaultImplementation(ApiResponse apiResponseLocalVar, Option body) + private void AfterFakeOuterBooleanSerializeDefaultImplementation(IFakeOuterBooleanSerializeApiResponse apiResponseLocalVar, Option body) { bool suppressDefaultLog = false; AfterFakeOuterBooleanSerialize(ref suppressDefaultLog, apiResponseLocalVar, body); @@ -1004,7 +1292,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterFakeOuterBooleanSerialize(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Option body); + partial void AfterFakeOuterBooleanSerialize(ref bool suppressDefaultLog, IFakeOuterBooleanSerializeApiResponse apiResponseLocalVar, Option body); /// /// Logs exceptions that occur while retrieving the server response @@ -1036,8 +1324,8 @@ namespace UseSourceGeneration.Api /// /// Input boolean as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> FakeOuterBooleanSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterBooleanSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1055,8 +1343,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// Input boolean as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterBooleanSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterBooleanSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1104,7 +1392,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/boolean", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeOuterBooleanSerializeApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/boolean", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeOuterBooleanSerializeDefaultImplementation(apiResponseLocalVar, body); @@ -1122,6 +1412,83 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class FakeOuterBooleanSerializeApiResponse : UseSourceGeneration.Client.ApiResponse, IFakeOuterBooleanSerializeApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeOuterBooleanSerializeApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public bool? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out bool? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFakeOuterCompositeSerialize(Option outerComposite); /// @@ -1140,7 +1507,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterFakeOuterCompositeSerializeDefaultImplementation(ApiResponse apiResponseLocalVar, Option outerComposite) + private void AfterFakeOuterCompositeSerializeDefaultImplementation(IFakeOuterCompositeSerializeApiResponse apiResponseLocalVar, Option outerComposite) { bool suppressDefaultLog = false; AfterFakeOuterCompositeSerialize(ref suppressDefaultLog, apiResponseLocalVar, outerComposite); @@ -1154,7 +1521,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterFakeOuterCompositeSerialize(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Option outerComposite); + partial void AfterFakeOuterCompositeSerialize(ref bool suppressDefaultLog, IFakeOuterCompositeSerializeApiResponse apiResponseLocalVar, Option outerComposite); /// /// Logs exceptions that occur while retrieving the server response @@ -1186,8 +1553,8 @@ namespace UseSourceGeneration.Api /// /// Input composite as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> FakeOuterCompositeSerializeOrDefaultAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterCompositeSerializeOrDefaultAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1205,8 +1572,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// Input composite as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterCompositeSerializeAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterCompositeSerializeAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1256,7 +1623,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/composite", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeOuterCompositeSerializeApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/composite", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeOuterCompositeSerializeDefaultImplementation(apiResponseLocalVar, outerComposite); @@ -1274,6 +1643,83 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class FakeOuterCompositeSerializeApiResponse : UseSourceGeneration.Client.ApiResponse, IFakeOuterCompositeSerializeApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeOuterCompositeSerializeApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public UseSourceGeneration.Model.OuterComposite? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out UseSourceGeneration.Model.OuterComposite? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFakeOuterNumberSerialize(ref Option body); /// @@ -1281,7 +1727,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterFakeOuterNumberSerializeDefaultImplementation(ApiResponse apiResponseLocalVar, Option body) + private void AfterFakeOuterNumberSerializeDefaultImplementation(IFakeOuterNumberSerializeApiResponse apiResponseLocalVar, Option body) { bool suppressDefaultLog = false; AfterFakeOuterNumberSerialize(ref suppressDefaultLog, apiResponseLocalVar, body); @@ -1295,7 +1741,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterFakeOuterNumberSerialize(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Option body); + partial void AfterFakeOuterNumberSerialize(ref bool suppressDefaultLog, IFakeOuterNumberSerializeApiResponse apiResponseLocalVar, Option body); /// /// Logs exceptions that occur while retrieving the server response @@ -1327,8 +1773,8 @@ namespace UseSourceGeneration.Api /// /// Input number as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> FakeOuterNumberSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterNumberSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1346,8 +1792,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// Input number as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterNumberSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterNumberSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1395,7 +1841,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/number", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeOuterNumberSerializeApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/number", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeOuterNumberSerializeDefaultImplementation(apiResponseLocalVar, body); @@ -1413,6 +1861,83 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class FakeOuterNumberSerializeApiResponse : UseSourceGeneration.Client.ApiResponse, IFakeOuterNumberSerializeApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeOuterNumberSerializeApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public decimal? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out decimal? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFakeOuterStringSerialize(ref Guid requiredStringUuid, ref Option body); /// @@ -1432,7 +1957,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterFakeOuterStringSerializeDefaultImplementation(ApiResponse apiResponseLocalVar, Guid requiredStringUuid, Option body) + private void AfterFakeOuterStringSerializeDefaultImplementation(IFakeOuterStringSerializeApiResponse apiResponseLocalVar, Guid requiredStringUuid, Option body) { bool suppressDefaultLog = false; AfterFakeOuterStringSerialize(ref suppressDefaultLog, apiResponseLocalVar, requiredStringUuid, body); @@ -1447,7 +1972,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterFakeOuterStringSerialize(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Guid requiredStringUuid, Option body); + partial void AfterFakeOuterStringSerialize(ref bool suppressDefaultLog, IFakeOuterStringSerializeApiResponse apiResponseLocalVar, Guid requiredStringUuid, Option body); /// /// Logs exceptions that occur while retrieving the server response @@ -1482,8 +2007,8 @@ namespace UseSourceGeneration.Api /// Required UUID String /// Input string as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> FakeOuterStringSerializeOrDefaultAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterStringSerializeOrDefaultAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1502,8 +2027,8 @@ namespace UseSourceGeneration.Api /// Required UUID String /// Input string as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterStringSerializeAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterStringSerializeAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1559,7 +2084,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/string", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeOuterStringSerializeApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/string", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeOuterStringSerializeDefaultImplementation(apiResponseLocalVar, requiredStringUuid, body); @@ -1577,11 +2104,88 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class FakeOuterStringSerializeApiResponse : UseSourceGeneration.Client.ApiResponse, IFakeOuterStringSerializeApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeOuterStringSerializeApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public string? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out string? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterGetArrayOfEnumsDefaultImplementation(ApiResponse> apiResponseLocalVar) + private void AfterGetArrayOfEnumsDefaultImplementation(IGetArrayOfEnumsApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterGetArrayOfEnums(ref suppressDefaultLog, apiResponseLocalVar); @@ -1594,7 +2198,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterGetArrayOfEnums(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar); + partial void AfterGetArrayOfEnums(ref bool suppressDefaultLog, IGetArrayOfEnumsApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -1623,8 +2227,8 @@ namespace UseSourceGeneration.Api /// Array of Enums /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>?> GetArrayOfEnumsOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetArrayOfEnumsOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -1641,8 +2245,8 @@ namespace UseSourceGeneration.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1674,7 +2278,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/array-of-enums", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetArrayOfEnumsApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/array-of-enums", requestedAtLocalVar, _jsonSerializerOptions); AfterGetArrayOfEnumsDefaultImplementation(apiResponseLocalVar); @@ -1692,6 +2298,83 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class GetArrayOfEnumsApiResponse : UseSourceGeneration.Client.ApiResponse, IGetArrayOfEnumsApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetArrayOfEnumsApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out List? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestBodyWithFileSchema(FileSchemaTestClass fileSchemaTestClass); /// @@ -1710,7 +2393,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterTestBodyWithFileSchemaDefaultImplementation(ApiResponse apiResponseLocalVar, FileSchemaTestClass fileSchemaTestClass) + private void AfterTestBodyWithFileSchemaDefaultImplementation(ITestBodyWithFileSchemaApiResponse apiResponseLocalVar, FileSchemaTestClass fileSchemaTestClass) { bool suppressDefaultLog = false; AfterTestBodyWithFileSchema(ref suppressDefaultLog, apiResponseLocalVar, fileSchemaTestClass); @@ -1724,7 +2407,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterTestBodyWithFileSchema(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, FileSchemaTestClass fileSchemaTestClass); + partial void AfterTestBodyWithFileSchema(ref bool suppressDefaultLog, ITestBodyWithFileSchemaApiResponse apiResponseLocalVar, FileSchemaTestClass fileSchemaTestClass); /// /// Logs exceptions that occur while retrieving the server response @@ -1756,8 +2439,8 @@ namespace UseSourceGeneration.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestBodyWithFileSchemaOrDefaultAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestBodyWithFileSchemaOrDefaultAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1775,8 +2458,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1816,7 +2499,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/body-with-file-schema", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestBodyWithFileSchemaApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/body-with-file-schema", requestedAtLocalVar, _jsonSerializerOptions); AfterTestBodyWithFileSchemaDefaultImplementation(apiResponseLocalVar, fileSchemaTestClass); @@ -1834,6 +2519,51 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class TestBodyWithFileSchemaApiResponse : UseSourceGeneration.Client.ApiResponse, ITestBodyWithFileSchemaApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestBodyWithFileSchemaApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestBodyWithQueryParams(User user, ref string query); /// @@ -1857,7 +2587,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterTestBodyWithQueryParamsDefaultImplementation(ApiResponse apiResponseLocalVar, User user, string query) + private void AfterTestBodyWithQueryParamsDefaultImplementation(ITestBodyWithQueryParamsApiResponse apiResponseLocalVar, User user, string query) { bool suppressDefaultLog = false; AfterTestBodyWithQueryParams(ref suppressDefaultLog, apiResponseLocalVar, user, query); @@ -1872,7 +2602,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterTestBodyWithQueryParams(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, User user, string query); + partial void AfterTestBodyWithQueryParams(ref bool suppressDefaultLog, ITestBodyWithQueryParamsApiResponse apiResponseLocalVar, User user, string query); /// /// Logs exceptions that occur while retrieving the server response @@ -1907,8 +2637,8 @@ namespace UseSourceGeneration.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestBodyWithQueryParamsOrDefaultAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestBodyWithQueryParamsOrDefaultAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1927,8 +2657,8 @@ namespace UseSourceGeneration.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestBodyWithQueryParamsAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestBodyWithQueryParamsAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1974,7 +2704,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/body-with-query-params", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestBodyWithQueryParamsApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/body-with-query-params", requestedAtLocalVar, _jsonSerializerOptions); AfterTestBodyWithQueryParamsDefaultImplementation(apiResponseLocalVar, user, query); @@ -1992,6 +2724,51 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class TestBodyWithQueryParamsApiResponse : UseSourceGeneration.Client.ApiResponse, ITestBodyWithQueryParamsApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestBodyWithQueryParamsApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestClientModel(ModelClient modelClient); /// @@ -2010,7 +2787,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterTestClientModelDefaultImplementation(ApiResponse apiResponseLocalVar, ModelClient modelClient) + private void AfterTestClientModelDefaultImplementation(ITestClientModelApiResponse apiResponseLocalVar, ModelClient modelClient) { bool suppressDefaultLog = false; AfterTestClientModel(ref suppressDefaultLog, apiResponseLocalVar, modelClient); @@ -2024,7 +2801,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterTestClientModel(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, ModelClient modelClient); + partial void AfterTestClientModel(ref bool suppressDefaultLog, ITestClientModelApiResponse apiResponseLocalVar, ModelClient modelClient); /// /// Logs exceptions that occur while retrieving the server response @@ -2056,8 +2833,8 @@ namespace UseSourceGeneration.Api /// /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestClientModelOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestClientModelOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2075,8 +2852,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2125,7 +2902,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestClientModelApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); AfterTestClientModelDefaultImplementation(apiResponseLocalVar, modelClient); @@ -2143,6 +2922,83 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class TestClientModelApiResponse : UseSourceGeneration.Client.ApiResponse, ITestClientModelApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestClientModelApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public UseSourceGeneration.Model.ModelClient? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out UseSourceGeneration.Model.ModelClient? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestEndpointParameters(ref byte[] varByte, ref decimal number, ref double varDouble, ref string patternWithoutDelimiter, ref Option date, ref Option binary, ref Option varFloat, ref Option integer, ref Option int32, ref Option int64, ref Option varString, ref Option password, ref Option callback, ref Option dateTime); /// @@ -2194,7 +3050,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterTestEndpointParametersDefaultImplementation(ApiResponse apiResponseLocalVar, byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date, Option binary, Option varFloat, Option integer, Option int32, Option int64, Option varString, Option password, Option callback, Option dateTime) + private void AfterTestEndpointParametersDefaultImplementation(ITestEndpointParametersApiResponse apiResponseLocalVar, byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date, Option binary, Option varFloat, Option integer, Option int32, Option int64, Option varString, Option password, Option callback, Option dateTime) { bool suppressDefaultLog = false; AfterTestEndpointParameters(ref suppressDefaultLog, apiResponseLocalVar, varByte, number, varDouble, patternWithoutDelimiter, date, binary, varFloat, integer, int32, int64, varString, password, callback, dateTime); @@ -2221,7 +3077,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterTestEndpointParameters(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date, Option binary, Option varFloat, Option integer, Option int32, Option int64, Option varString, Option password, Option callback, Option dateTime); + partial void AfterTestEndpointParameters(ref bool suppressDefaultLog, ITestEndpointParametersApiResponse apiResponseLocalVar, byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date, Option binary, Option varFloat, Option integer, Option int32, Option int64, Option varString, Option password, Option callback, Option dateTime); /// /// Logs exceptions that occur while retrieving the server response @@ -2292,8 +3148,8 @@ namespace UseSourceGeneration.Api /// None (optional) /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestEndpointParametersOrDefaultAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestEndpointParametersOrDefaultAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2324,8 +3180,8 @@ namespace UseSourceGeneration.Api /// None (optional) /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestEndpointParametersAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestEndpointParametersAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2415,7 +3271,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestEndpointParametersApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); AfterTestEndpointParametersDefaultImplementation(apiResponseLocalVar, varByte, number, varDouble, patternWithoutDelimiter, date, binary, varFloat, integer, int32, int64, varString, password, callback, dateTime); @@ -2437,6 +3295,57 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class TestEndpointParametersApiResponse : UseSourceGeneration.Client.ApiResponse, ITestEndpointParametersApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestEndpointParametersApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestEnumParameters(Option> enumHeaderStringArray, Option> enumQueryStringArray, ref Option enumQueryDouble, ref Option enumQueryInteger, Option> enumFormStringArray, ref Option enumHeaderString, ref Option enumQueryString, ref Option enumFormString); /// @@ -2482,7 +3391,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterTestEnumParametersDefaultImplementation(ApiResponse apiResponseLocalVar, Option> enumHeaderStringArray, Option> enumQueryStringArray, Option enumQueryDouble, Option enumQueryInteger, Option> enumFormStringArray, Option enumHeaderString, Option enumQueryString, Option enumFormString) + private void AfterTestEnumParametersDefaultImplementation(ITestEnumParametersApiResponse apiResponseLocalVar, Option> enumHeaderStringArray, Option> enumQueryStringArray, Option enumQueryDouble, Option enumQueryInteger, Option> enumFormStringArray, Option enumHeaderString, Option enumQueryString, Option enumFormString) { bool suppressDefaultLog = false; AfterTestEnumParameters(ref suppressDefaultLog, apiResponseLocalVar, enumHeaderStringArray, enumQueryStringArray, enumQueryDouble, enumQueryInteger, enumFormStringArray, enumHeaderString, enumQueryString, enumFormString); @@ -2503,7 +3412,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterTestEnumParameters(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Option> enumHeaderStringArray, Option> enumQueryStringArray, Option enumQueryDouble, Option enumQueryInteger, Option> enumFormStringArray, Option enumHeaderString, Option enumQueryString, Option enumFormString); + partial void AfterTestEnumParameters(ref bool suppressDefaultLog, ITestEnumParametersApiResponse apiResponseLocalVar, Option> enumHeaderStringArray, Option> enumQueryStringArray, Option enumQueryDouble, Option enumQueryInteger, Option> enumFormStringArray, Option enumHeaderString, Option enumQueryString, Option enumFormString); /// /// Logs exceptions that occur while retrieving the server response @@ -2556,8 +3465,8 @@ namespace UseSourceGeneration.Api /// Query parameter enum test (string) (optional, default to -efg) /// Form parameter enum test (string) (optional, default to -efg) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestEnumParametersOrDefaultAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestEnumParametersOrDefaultAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2582,8 +3491,8 @@ namespace UseSourceGeneration.Api /// Query parameter enum test (string) (optional, default to -efg) /// Form parameter enum test (string) (optional, default to -efg) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestEnumParametersAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestEnumParametersAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2653,7 +3562,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestEnumParametersApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); AfterTestEnumParametersDefaultImplementation(apiResponseLocalVar, enumHeaderStringArray, enumQueryStringArray, enumQueryDouble, enumQueryInteger, enumFormStringArray, enumHeaderString, enumQueryString, enumFormString); @@ -2671,6 +3582,57 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class TestEnumParametersApiResponse : UseSourceGeneration.Client.ApiResponse, ITestEnumParametersApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestEnumParametersApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestGroupParameters(ref bool requiredBooleanGroup, ref int requiredStringGroup, ref long requiredInt64Group, ref Option booleanGroup, ref Option stringGroup, ref Option int64Group); /// @@ -2683,7 +3645,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterTestGroupParametersDefaultImplementation(ApiResponse apiResponseLocalVar, bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup, Option stringGroup, Option int64Group) + private void AfterTestGroupParametersDefaultImplementation(ITestGroupParametersApiResponse apiResponseLocalVar, bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup, Option stringGroup, Option int64Group) { bool suppressDefaultLog = false; AfterTestGroupParameters(ref suppressDefaultLog, apiResponseLocalVar, requiredBooleanGroup, requiredStringGroup, requiredInt64Group, booleanGroup, stringGroup, int64Group); @@ -2702,7 +3664,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterTestGroupParameters(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup, Option stringGroup, Option int64Group); + partial void AfterTestGroupParameters(ref bool suppressDefaultLog, ITestGroupParametersApiResponse apiResponseLocalVar, bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup, Option stringGroup, Option int64Group); /// /// Logs exceptions that occur while retrieving the server response @@ -2749,8 +3711,8 @@ namespace UseSourceGeneration.Api /// String in group parameters (optional) /// Integer in group parameters (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestGroupParametersOrDefaultAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestGroupParametersOrDefaultAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2773,8 +3735,8 @@ namespace UseSourceGeneration.Api /// String in group parameters (optional) /// Integer in group parameters (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestGroupParametersAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestGroupParametersAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2825,7 +3787,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestGroupParametersApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); AfterTestGroupParametersDefaultImplementation(apiResponseLocalVar, requiredBooleanGroup, requiredStringGroup, requiredInt64Group, booleanGroup, stringGroup, int64Group); @@ -2847,6 +3811,51 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class TestGroupParametersApiResponse : UseSourceGeneration.Client.ApiResponse, ITestGroupParametersApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestGroupParametersApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestInlineAdditionalProperties(Dictionary requestBody); /// @@ -2865,7 +3874,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterTestInlineAdditionalPropertiesDefaultImplementation(ApiResponse apiResponseLocalVar, Dictionary requestBody) + private void AfterTestInlineAdditionalPropertiesDefaultImplementation(ITestInlineAdditionalPropertiesApiResponse apiResponseLocalVar, Dictionary requestBody) { bool suppressDefaultLog = false; AfterTestInlineAdditionalProperties(ref suppressDefaultLog, apiResponseLocalVar, requestBody); @@ -2879,7 +3888,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterTestInlineAdditionalProperties(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Dictionary requestBody); + partial void AfterTestInlineAdditionalProperties(ref bool suppressDefaultLog, ITestInlineAdditionalPropertiesApiResponse apiResponseLocalVar, Dictionary requestBody); /// /// Logs exceptions that occur while retrieving the server response @@ -2911,8 +3920,8 @@ namespace UseSourceGeneration.Api /// /// request body /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestInlineAdditionalPropertiesOrDefaultAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestInlineAdditionalPropertiesOrDefaultAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2930,8 +3939,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// request body /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2971,7 +3980,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/inline-additionalProperties", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestInlineAdditionalPropertiesApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/inline-additionalProperties", requestedAtLocalVar, _jsonSerializerOptions); AfterTestInlineAdditionalPropertiesDefaultImplementation(apiResponseLocalVar, requestBody); @@ -2989,6 +4000,51 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class TestInlineAdditionalPropertiesApiResponse : UseSourceGeneration.Client.ApiResponse, ITestInlineAdditionalPropertiesApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestInlineAdditionalPropertiesApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestInlineFreeformAdditionalProperties(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest); /// @@ -3007,7 +4063,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterTestInlineFreeformAdditionalPropertiesDefaultImplementation(ApiResponse apiResponseLocalVar, TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest) + private void AfterTestInlineFreeformAdditionalPropertiesDefaultImplementation(ITestInlineFreeformAdditionalPropertiesApiResponse apiResponseLocalVar, TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest) { bool suppressDefaultLog = false; AfterTestInlineFreeformAdditionalProperties(ref suppressDefaultLog, apiResponseLocalVar, testInlineFreeformAdditionalPropertiesRequest); @@ -3021,7 +4077,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterTestInlineFreeformAdditionalProperties(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest); + partial void AfterTestInlineFreeformAdditionalProperties(ref bool suppressDefaultLog, ITestInlineFreeformAdditionalPropertiesApiResponse apiResponseLocalVar, TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest); /// /// Logs exceptions that occur while retrieving the server response @@ -3053,8 +4109,8 @@ namespace UseSourceGeneration.Api /// /// request body /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestInlineFreeformAdditionalPropertiesOrDefaultAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestInlineFreeformAdditionalPropertiesOrDefaultAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default) { try { @@ -3072,8 +4128,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// request body /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestInlineFreeformAdditionalPropertiesAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestInlineFreeformAdditionalPropertiesAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -3113,7 +4169,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/inline-freeform-additionalProperties", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestInlineFreeformAdditionalPropertiesApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/inline-freeform-additionalProperties", requestedAtLocalVar, _jsonSerializerOptions); AfterTestInlineFreeformAdditionalPropertiesDefaultImplementation(apiResponseLocalVar, testInlineFreeformAdditionalPropertiesRequest); @@ -3131,6 +4189,51 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class TestInlineFreeformAdditionalPropertiesApiResponse : UseSourceGeneration.Client.ApiResponse, ITestInlineFreeformAdditionalPropertiesApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestInlineFreeformAdditionalPropertiesApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestJsonFormData(ref string param, ref string param2); /// @@ -3154,7 +4257,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterTestJsonFormDataDefaultImplementation(ApiResponse apiResponseLocalVar, string param, string param2) + private void AfterTestJsonFormDataDefaultImplementation(ITestJsonFormDataApiResponse apiResponseLocalVar, string param, string param2) { bool suppressDefaultLog = false; AfterTestJsonFormData(ref suppressDefaultLog, apiResponseLocalVar, param, param2); @@ -3169,7 +4272,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterTestJsonFormData(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string param, string param2); + partial void AfterTestJsonFormData(ref bool suppressDefaultLog, ITestJsonFormDataApiResponse apiResponseLocalVar, string param, string param2); /// /// Logs exceptions that occur while retrieving the server response @@ -3204,8 +4307,8 @@ namespace UseSourceGeneration.Api /// field1 /// field2 /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestJsonFormDataOrDefaultAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestJsonFormDataOrDefaultAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default) { try { @@ -3224,8 +4327,8 @@ namespace UseSourceGeneration.Api /// field1 /// field2 /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -3273,7 +4376,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/jsonFormData", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestJsonFormDataApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/jsonFormData", requestedAtLocalVar, _jsonSerializerOptions); AfterTestJsonFormDataDefaultImplementation(apiResponseLocalVar, param, param2); @@ -3291,6 +4396,51 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class TestJsonFormDataApiResponse : UseSourceGeneration.Client.ApiResponse, ITestJsonFormDataApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestJsonFormDataApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestQueryParameterCollectionFormat(List pipe, List ioutil, List http, List url, List context, ref string requiredNotNullable, ref string? requiredNullable, ref Option notRequiredNotNullable, ref Option notRequiredNullable); /// @@ -3341,7 +4491,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterTestQueryParameterCollectionFormatDefaultImplementation(ApiResponse apiResponseLocalVar, List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable, Option notRequiredNotNullable, Option notRequiredNullable) + private void AfterTestQueryParameterCollectionFormatDefaultImplementation(ITestQueryParameterCollectionFormatApiResponse apiResponseLocalVar, List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable, Option notRequiredNotNullable, Option notRequiredNullable) { bool suppressDefaultLog = false; AfterTestQueryParameterCollectionFormat(ref suppressDefaultLog, apiResponseLocalVar, pipe, ioutil, http, url, context, requiredNotNullable, requiredNullable, notRequiredNotNullable, notRequiredNullable); @@ -3363,7 +4513,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterTestQueryParameterCollectionFormat(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable, Option notRequiredNotNullable, Option notRequiredNullable); + partial void AfterTestQueryParameterCollectionFormat(ref bool suppressDefaultLog, ITestQueryParameterCollectionFormatApiResponse apiResponseLocalVar, List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable, Option notRequiredNotNullable, Option notRequiredNullable); /// /// Logs exceptions that occur while retrieving the server response @@ -3419,8 +4569,8 @@ namespace UseSourceGeneration.Api /// (optional) /// (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestQueryParameterCollectionFormatOrDefaultAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestQueryParameterCollectionFormatOrDefaultAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -3446,8 +4596,8 @@ namespace UseSourceGeneration.Api /// (optional) /// (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -3492,7 +4642,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/test-query-parameters", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestQueryParameterCollectionFormatApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/test-query-parameters", requestedAtLocalVar, _jsonSerializerOptions); AfterTestQueryParameterCollectionFormatDefaultImplementation(apiResponseLocalVar, pipe, ioutil, http, url, context, requiredNotNullable, requiredNullable, notRequiredNotNullable, notRequiredNullable); @@ -3509,5 +4661,50 @@ namespace UseSourceGeneration.Api throw; } } + + /// + /// The + /// + public partial class TestQueryParameterCollectionFormatApiResponse : UseSourceGeneration.Client.ApiResponse, ITestQueryParameterCollectionFormatApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestQueryParameterCollectionFormatApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/FakeClassnameTags123Api.cs index b89b8cc8b5ea..e314342a1b71 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/FakeClassnameTags123Api.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using UseSourceGeneration.Client; -using UseSourceGeneration.Api; using UseSourceGeneration.Model; +using System.Diagnostics.CodeAnalysis; namespace UseSourceGeneration.Api { @@ -44,8 +44,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ModelClient>> - Task> TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); /// /// To test class name in snake case @@ -55,29 +55,40 @@ namespace UseSourceGeneration.Api /// /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ModelClient>?> - Task?> TestClassnameOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestClassnameOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface ITestClassnameApiResponse : UseSourceGeneration.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class FakeClassnameTags123ApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnTestClassname; + public event EventHandler? OnTestClassname; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestClassname; - internal void ExecuteOnTestClassname(ApiResponse apiResponse) + internal void ExecuteOnTestClassname(FakeClassnameTags123Api.TestClassnameApiResponse apiResponse) { - OnTestClassname?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestClassname?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestClassname(Exception exception) @@ -93,6 +104,11 @@ namespace UseSourceGeneration.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -137,7 +153,7 @@ namespace UseSourceGeneration.Api /// Initializes a new instance of the class. /// /// - public FakeClassnameTags123Api(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, FakeClassnameTags123ApiEvents fakeClassnameTags123ApiEvents, + public FakeClassnameTags123Api(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, FakeClassnameTags123ApiEvents fakeClassnameTags123ApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -145,7 +161,8 @@ namespace UseSourceGeneration.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = fakeClassnameTags123ApiEvents; ApiKeyProvider = apiKeyProvider; @@ -173,7 +190,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterTestClassnameDefaultImplementation(ApiResponse apiResponseLocalVar, ModelClient modelClient) + private void AfterTestClassnameDefaultImplementation(ITestClassnameApiResponse apiResponseLocalVar, ModelClient modelClient) { bool suppressDefaultLog = false; AfterTestClassname(ref suppressDefaultLog, apiResponseLocalVar, modelClient); @@ -187,7 +204,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterTestClassname(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, ModelClient modelClient); + partial void AfterTestClassname(ref bool suppressDefaultLog, ITestClassnameApiResponse apiResponseLocalVar, ModelClient modelClient); /// /// Logs exceptions that occur while retrieving the server response @@ -219,8 +236,8 @@ namespace UseSourceGeneration.Api /// /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestClassnameOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestClassnameOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { try { @@ -238,8 +255,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -299,7 +316,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake_classname_test", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestClassnameApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake_classname_test", requestedAtLocalVar, _jsonSerializerOptions); AfterTestClassnameDefaultImplementation(apiResponseLocalVar, modelClient); @@ -320,5 +339,82 @@ namespace UseSourceGeneration.Api throw; } } + + /// + /// The + /// + public partial class TestClassnameApiResponse : UseSourceGeneration.Client.ApiResponse, ITestClassnameApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestClassnameApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public UseSourceGeneration.Model.ModelClient? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out UseSourceGeneration.Model.ModelClient? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/PetApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/PetApi.cs index 939b71c5cddd..e5675191d951 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/PetApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/PetApi.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using UseSourceGeneration.Client; -using UseSourceGeneration.Api; using UseSourceGeneration.Model; +using System.Diagnostics.CodeAnalysis; namespace UseSourceGeneration.Api { @@ -44,8 +44,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); /// /// Add a new pet to the store @@ -55,8 +55,8 @@ namespace UseSourceGeneration.Api /// /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> AddPetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task AddPetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); /// /// Deletes a pet @@ -68,8 +68,8 @@ namespace UseSourceGeneration.Api /// Pet id to delete /// (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> DeletePetAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeletePetAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default); /// /// Deletes a pet @@ -80,8 +80,8 @@ namespace UseSourceGeneration.Api /// Pet id to delete /// (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> DeletePetOrDefaultAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task DeletePetOrDefaultAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default); /// /// Finds Pets by status @@ -92,8 +92,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// Status values that need to be considered for filter /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<Pet>>> - Task>> FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default); /// /// Finds Pets by status @@ -103,8 +103,8 @@ namespace UseSourceGeneration.Api /// /// Status values that need to be considered for filter /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<Pet>>?> - Task>?> FindPetsByStatusOrDefaultAsync(List status, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task FindPetsByStatusOrDefaultAsync(List status, System.Threading.CancellationToken cancellationToken = default); /// /// Finds Pets by tags @@ -115,8 +115,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// Tags to filter by /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<Pet>>> - Task>> FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default); /// /// Finds Pets by tags @@ -126,8 +126,8 @@ namespace UseSourceGeneration.Api /// /// Tags to filter by /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<Pet>>?> - Task>?> FindPetsByTagsOrDefaultAsync(List tags, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task FindPetsByTagsOrDefaultAsync(List tags, System.Threading.CancellationToken cancellationToken = default); /// /// Find pet by ID @@ -138,8 +138,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// ID of pet to return /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Pet>> - Task> GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default); /// /// Find pet by ID @@ -149,8 +149,8 @@ namespace UseSourceGeneration.Api /// /// ID of pet to return /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Pet>?> - Task?> GetPetByIdOrDefaultAsync(long petId, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task GetPetByIdOrDefaultAsync(long petId, System.Threading.CancellationToken cancellationToken = default); /// /// Update an existing pet @@ -161,8 +161,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); /// /// Update an existing pet @@ -172,8 +172,8 @@ namespace UseSourceGeneration.Api /// /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> UpdatePetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task UpdatePetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); /// /// Updates a pet in the store with form data @@ -186,8 +186,8 @@ namespace UseSourceGeneration.Api /// Updated name of the pet (optional) /// Updated status of the pet (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> UpdatePetWithFormAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdatePetWithFormAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default); /// /// Updates a pet in the store with form data @@ -199,8 +199,8 @@ namespace UseSourceGeneration.Api /// Updated name of the pet (optional) /// Updated status of the pet (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> UpdatePetWithFormOrDefaultAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task UpdatePetWithFormOrDefaultAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default); /// /// uploads an image @@ -213,8 +213,8 @@ namespace UseSourceGeneration.Api /// file to upload (optional) /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ApiResponse>> - Task> UploadFileAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UploadFileAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); /// /// uploads an image @@ -226,8 +226,8 @@ namespace UseSourceGeneration.Api /// file to upload (optional) /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ApiResponse>?> - Task?> UploadFileOrDefaultAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task UploadFileOrDefaultAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); /// /// uploads an image (required) @@ -240,8 +240,8 @@ namespace UseSourceGeneration.Api /// ID of pet to update /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ApiResponse>> - Task> UploadFileWithRequiredFileAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UploadFileWithRequiredFileAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); /// /// uploads an image (required) @@ -253,29 +253,172 @@ namespace UseSourceGeneration.Api /// ID of pet to update /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ApiResponse>?> - Task?> UploadFileWithRequiredFileOrDefaultAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task UploadFileWithRequiredFileOrDefaultAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IAddPetApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + bool IsMethodNotAllowed { get; } + } + + /// + /// The + /// + public interface IDeletePetApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface IFindPetsByStatusApiResponse : UseSourceGeneration.Client.IApiResponse, IOk?> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface IFindPetsByTagsApiResponse : UseSourceGeneration.Client.IApiResponse, IOk?> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface IGetPetByIdApiResponse : UseSourceGeneration.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface IUpdatePetApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + bool IsMethodNotAllowed { get; } + } + + /// + /// The + /// + public interface IUpdatePetWithFormApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + bool IsMethodNotAllowed { get; } + } + + /// + /// The + /// + public interface IUploadFileApiResponse : UseSourceGeneration.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IUploadFileWithRequiredFileApiResponse : UseSourceGeneration.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class PetApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnAddPet; + public event EventHandler? OnAddPet; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorAddPet; - internal void ExecuteOnAddPet(ApiResponse apiResponse) + internal void ExecuteOnAddPet(PetApi.AddPetApiResponse apiResponse) { - OnAddPet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnAddPet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorAddPet(Exception exception) @@ -286,16 +429,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnDeletePet; + public event EventHandler? OnDeletePet; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorDeletePet; - internal void ExecuteOnDeletePet(ApiResponse apiResponse) + internal void ExecuteOnDeletePet(PetApi.DeletePetApiResponse apiResponse) { - OnDeletePet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnDeletePet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorDeletePet(Exception exception) @@ -306,16 +449,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>>? OnFindPetsByStatus; + public event EventHandler? OnFindPetsByStatus; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorFindPetsByStatus; - internal void ExecuteOnFindPetsByStatus(ApiResponse> apiResponse) + internal void ExecuteOnFindPetsByStatus(PetApi.FindPetsByStatusApiResponse apiResponse) { - OnFindPetsByStatus?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnFindPetsByStatus?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFindPetsByStatus(Exception exception) @@ -326,16 +469,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>>? OnFindPetsByTags; + public event EventHandler? OnFindPetsByTags; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorFindPetsByTags; - internal void ExecuteOnFindPetsByTags(ApiResponse> apiResponse) + internal void ExecuteOnFindPetsByTags(PetApi.FindPetsByTagsApiResponse apiResponse) { - OnFindPetsByTags?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnFindPetsByTags?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFindPetsByTags(Exception exception) @@ -346,16 +489,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnGetPetById; + public event EventHandler? OnGetPetById; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorGetPetById; - internal void ExecuteOnGetPetById(ApiResponse apiResponse) + internal void ExecuteOnGetPetById(PetApi.GetPetByIdApiResponse apiResponse) { - OnGetPetById?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnGetPetById?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetPetById(Exception exception) @@ -366,16 +509,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnUpdatePet; + public event EventHandler? OnUpdatePet; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorUpdatePet; - internal void ExecuteOnUpdatePet(ApiResponse apiResponse) + internal void ExecuteOnUpdatePet(PetApi.UpdatePetApiResponse apiResponse) { - OnUpdatePet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUpdatePet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUpdatePet(Exception exception) @@ -386,16 +529,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnUpdatePetWithForm; + public event EventHandler? OnUpdatePetWithForm; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorUpdatePetWithForm; - internal void ExecuteOnUpdatePetWithForm(ApiResponse apiResponse) + internal void ExecuteOnUpdatePetWithForm(PetApi.UpdatePetWithFormApiResponse apiResponse) { - OnUpdatePetWithForm?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUpdatePetWithForm?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUpdatePetWithForm(Exception exception) @@ -406,16 +549,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnUploadFile; + public event EventHandler? OnUploadFile; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorUploadFile; - internal void ExecuteOnUploadFile(ApiResponse apiResponse) + internal void ExecuteOnUploadFile(PetApi.UploadFileApiResponse apiResponse) { - OnUploadFile?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUploadFile?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUploadFile(Exception exception) @@ -426,16 +569,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnUploadFileWithRequiredFile; + public event EventHandler? OnUploadFileWithRequiredFile; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorUploadFileWithRequiredFile; - internal void ExecuteOnUploadFileWithRequiredFile(ApiResponse apiResponse) + internal void ExecuteOnUploadFileWithRequiredFile(PetApi.UploadFileWithRequiredFileApiResponse apiResponse) { - OnUploadFileWithRequiredFile?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUploadFileWithRequiredFile?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUploadFileWithRequiredFile(Exception exception) @@ -451,6 +594,11 @@ namespace UseSourceGeneration.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -495,7 +643,7 @@ namespace UseSourceGeneration.Api /// Initializes a new instance of the class. /// /// - public PetApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, PetApiEvents petApiEvents, + public PetApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, PetApiEvents petApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -503,7 +651,8 @@ namespace UseSourceGeneration.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = petApiEvents; ApiKeyProvider = apiKeyProvider; @@ -531,7 +680,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterAddPetDefaultImplementation(ApiResponse apiResponseLocalVar, Pet pet) + private void AfterAddPetDefaultImplementation(IAddPetApiResponse apiResponseLocalVar, Pet pet) { bool suppressDefaultLog = false; AfterAddPet(ref suppressDefaultLog, apiResponseLocalVar, pet); @@ -545,7 +694,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterAddPet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Pet pet); + partial void AfterAddPet(ref bool suppressDefaultLog, IAddPetApiResponse apiResponseLocalVar, Pet pet); /// /// Logs exceptions that occur while retrieving the server response @@ -577,8 +726,8 @@ namespace UseSourceGeneration.Api /// /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> AddPetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task AddPetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) { try { @@ -596,8 +745,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -656,16 +805,14 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + AddPetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet", requestedAtLocalVar, _jsonSerializerOptions); AfterAddPetDefaultImplementation(apiResponseLocalVar, pet); Events.ExecuteOnAddPet(apiResponseLocalVar); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) - foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) - tokenBaseLocalVar.BeginRateLimit(); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); @@ -682,6 +829,51 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class AddPetApiResponse : UseSourceGeneration.Client.ApiResponse, IAddPetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public AddPetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + public bool IsMethodNotAllowed => 405 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatDeletePet(ref long petId, ref Option apiKey); /// @@ -701,7 +893,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterDeletePetDefaultImplementation(ApiResponse apiResponseLocalVar, long petId, Option apiKey) + private void AfterDeletePetDefaultImplementation(IDeletePetApiResponse apiResponseLocalVar, long petId, Option apiKey) { bool suppressDefaultLog = false; AfterDeletePet(ref suppressDefaultLog, apiResponseLocalVar, petId, apiKey); @@ -716,7 +908,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterDeletePet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long petId, Option apiKey); + partial void AfterDeletePet(ref bool suppressDefaultLog, IDeletePetApiResponse apiResponseLocalVar, long petId, Option apiKey); /// /// Logs exceptions that occur while retrieving the server response @@ -751,8 +943,8 @@ namespace UseSourceGeneration.Api /// Pet id to delete /// (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> DeletePetOrDefaultAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeletePetOrDefaultAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -771,8 +963,8 @@ namespace UseSourceGeneration.Api /// Pet id to delete /// (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeletePetAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeletePetAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -811,7 +1003,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + DeletePetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); AfterDeletePetDefaultImplementation(apiResponseLocalVar, petId, apiKey); @@ -833,6 +1027,51 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class DeletePetApiResponse : UseSourceGeneration.Client.ApiResponse, IDeletePetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public DeletePetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFindPetsByStatus(List status); /// @@ -851,7 +1090,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterFindPetsByStatusDefaultImplementation(ApiResponse> apiResponseLocalVar, List status) + private void AfterFindPetsByStatusDefaultImplementation(IFindPetsByStatusApiResponse apiResponseLocalVar, List status) { bool suppressDefaultLog = false; AfterFindPetsByStatus(ref suppressDefaultLog, apiResponseLocalVar, status); @@ -865,7 +1104,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterFindPetsByStatus(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar, List status); + partial void AfterFindPetsByStatus(ref bool suppressDefaultLog, IFindPetsByStatusApiResponse apiResponseLocalVar, List status); /// /// Logs exceptions that occur while retrieving the server response @@ -897,8 +1136,8 @@ namespace UseSourceGeneration.Api /// /// Status values that need to be considered for filter /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>?> FindPetsByStatusOrDefaultAsync(List status, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FindPetsByStatusOrDefaultAsync(List status, System.Threading.CancellationToken cancellationToken = default) { try { @@ -916,8 +1155,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// Status values that need to be considered for filter /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -978,16 +1217,14 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/findByStatus", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FindPetsByStatusApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/findByStatus", requestedAtLocalVar, _jsonSerializerOptions); AfterFindPetsByStatusDefaultImplementation(apiResponseLocalVar, status); Events.ExecuteOnFindPetsByStatus(apiResponseLocalVar); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) - foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) - tokenBaseLocalVar.BeginRateLimit(); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); @@ -1004,6 +1241,89 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class FindPetsByStatusApiResponse : UseSourceGeneration.Client.ApiResponse, IFindPetsByStatusApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FindPetsByStatusApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out List? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFindPetsByTags(List tags); /// @@ -1022,7 +1342,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterFindPetsByTagsDefaultImplementation(ApiResponse> apiResponseLocalVar, List tags) + private void AfterFindPetsByTagsDefaultImplementation(IFindPetsByTagsApiResponse apiResponseLocalVar, List tags) { bool suppressDefaultLog = false; AfterFindPetsByTags(ref suppressDefaultLog, apiResponseLocalVar, tags); @@ -1036,7 +1356,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterFindPetsByTags(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar, List tags); + partial void AfterFindPetsByTags(ref bool suppressDefaultLog, IFindPetsByTagsApiResponse apiResponseLocalVar, List tags); /// /// Logs exceptions that occur while retrieving the server response @@ -1068,8 +1388,8 @@ namespace UseSourceGeneration.Api /// /// Tags to filter by /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>?> FindPetsByTagsOrDefaultAsync(List tags, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FindPetsByTagsOrDefaultAsync(List tags, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1087,8 +1407,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// Tags to filter by /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1149,16 +1469,14 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/findByTags", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FindPetsByTagsApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/findByTags", requestedAtLocalVar, _jsonSerializerOptions); AfterFindPetsByTagsDefaultImplementation(apiResponseLocalVar, tags); Events.ExecuteOnFindPetsByTags(apiResponseLocalVar); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) - foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) - tokenBaseLocalVar.BeginRateLimit(); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); @@ -1175,6 +1493,89 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class FindPetsByTagsApiResponse : UseSourceGeneration.Client.ApiResponse, IFindPetsByTagsApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FindPetsByTagsApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out List? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatGetPetById(ref long petId); /// @@ -1182,7 +1583,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterGetPetByIdDefaultImplementation(ApiResponse apiResponseLocalVar, long petId) + private void AfterGetPetByIdDefaultImplementation(IGetPetByIdApiResponse apiResponseLocalVar, long petId) { bool suppressDefaultLog = false; AfterGetPetById(ref suppressDefaultLog, apiResponseLocalVar, petId); @@ -1196,7 +1597,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterGetPetById(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long petId); + partial void AfterGetPetById(ref bool suppressDefaultLog, IGetPetByIdApiResponse apiResponseLocalVar, long petId); /// /// Logs exceptions that occur while retrieving the server response @@ -1228,8 +1629,8 @@ namespace UseSourceGeneration.Api /// /// ID of pet to return /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> GetPetByIdOrDefaultAsync(long petId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetPetByIdOrDefaultAsync(long petId, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1247,8 +1648,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// ID of pet to return /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1292,7 +1693,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetPetByIdApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); AfterGetPetByIdDefaultImplementation(apiResponseLocalVar, petId); @@ -1314,6 +1717,95 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class GetPetByIdApiResponse : UseSourceGeneration.Client.ApiResponse, IGetPetByIdApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetPetByIdApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public UseSourceGeneration.Model.Pet? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out UseSourceGeneration.Model.Pet? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUpdatePet(Pet pet); /// @@ -1332,7 +1824,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterUpdatePetDefaultImplementation(ApiResponse apiResponseLocalVar, Pet pet) + private void AfterUpdatePetDefaultImplementation(IUpdatePetApiResponse apiResponseLocalVar, Pet pet) { bool suppressDefaultLog = false; AfterUpdatePet(ref suppressDefaultLog, apiResponseLocalVar, pet); @@ -1346,7 +1838,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterUpdatePet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Pet pet); + partial void AfterUpdatePet(ref bool suppressDefaultLog, IUpdatePetApiResponse apiResponseLocalVar, Pet pet); /// /// Logs exceptions that occur while retrieving the server response @@ -1378,8 +1870,8 @@ namespace UseSourceGeneration.Api /// /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> UpdatePetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdatePetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1397,8 +1889,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1457,16 +1949,14 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UpdatePetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet", requestedAtLocalVar, _jsonSerializerOptions); AfterUpdatePetDefaultImplementation(apiResponseLocalVar, pet); Events.ExecuteOnUpdatePet(apiResponseLocalVar); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) - foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) - tokenBaseLocalVar.BeginRateLimit(); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); @@ -1483,6 +1973,63 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class UpdatePetApiResponse : UseSourceGeneration.Client.ApiResponse, IUpdatePetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UpdatePetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + public bool IsMethodNotAllowed => 405 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUpdatePetWithForm(ref long petId, ref Option name, ref Option status); /// @@ -1507,7 +2054,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterUpdatePetWithFormDefaultImplementation(ApiResponse apiResponseLocalVar, long petId, Option name, Option status) + private void AfterUpdatePetWithFormDefaultImplementation(IUpdatePetWithFormApiResponse apiResponseLocalVar, long petId, Option name, Option status) { bool suppressDefaultLog = false; AfterUpdatePetWithForm(ref suppressDefaultLog, apiResponseLocalVar, petId, name, status); @@ -1523,7 +2070,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterUpdatePetWithForm(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long petId, Option name, Option status); + partial void AfterUpdatePetWithForm(ref bool suppressDefaultLog, IUpdatePetWithFormApiResponse apiResponseLocalVar, long petId, Option name, Option status); /// /// Logs exceptions that occur while retrieving the server response @@ -1561,8 +2108,8 @@ namespace UseSourceGeneration.Api /// Updated name of the pet (optional) /// Updated status of the pet (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> UpdatePetWithFormOrDefaultAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdatePetWithFormOrDefaultAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1582,8 +2129,8 @@ namespace UseSourceGeneration.Api /// Updated name of the pet (optional) /// Updated status of the pet (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdatePetWithFormAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdatePetWithFormAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1640,7 +2187,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UpdatePetWithFormApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); AfterUpdatePetWithFormDefaultImplementation(apiResponseLocalVar, petId, name, status); @@ -1662,6 +2211,51 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class UpdatePetWithFormApiResponse : UseSourceGeneration.Client.ApiResponse, IUpdatePetWithFormApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UpdatePetWithFormApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + public bool IsMethodNotAllowed => 405 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUploadFile(ref long petId, ref Option file, ref Option additionalMetadata); /// @@ -1686,7 +2280,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterUploadFileDefaultImplementation(ApiResponse apiResponseLocalVar, long petId, Option file, Option additionalMetadata) + private void AfterUploadFileDefaultImplementation(IUploadFileApiResponse apiResponseLocalVar, long petId, Option file, Option additionalMetadata) { bool suppressDefaultLog = false; AfterUploadFile(ref suppressDefaultLog, apiResponseLocalVar, petId, file, additionalMetadata); @@ -1702,7 +2296,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterUploadFile(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long petId, Option file, Option additionalMetadata); + partial void AfterUploadFile(ref bool suppressDefaultLog, IUploadFileApiResponse apiResponseLocalVar, long petId, Option file, Option additionalMetadata); /// /// Logs exceptions that occur while retrieving the server response @@ -1740,8 +2334,8 @@ namespace UseSourceGeneration.Api /// file to upload (optional) /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> UploadFileOrDefaultAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UploadFileOrDefaultAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1761,8 +2355,8 @@ namespace UseSourceGeneration.Api /// file to upload (optional) /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UploadFileAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UploadFileAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1828,7 +2422,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}/uploadImage", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UploadFileApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}/uploadImage", requestedAtLocalVar, _jsonSerializerOptions); AfterUploadFileDefaultImplementation(apiResponseLocalVar, petId, file, additionalMetadata); @@ -1850,6 +2446,83 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class UploadFileApiResponse : UseSourceGeneration.Client.ApiResponse, IUploadFileApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UploadFileApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public UseSourceGeneration.Model.ApiResponse? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out UseSourceGeneration.Model.ApiResponse? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUploadFileWithRequiredFile(ref System.IO.Stream requiredFile, ref long petId, ref Option additionalMetadata); /// @@ -1874,7 +2547,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterUploadFileWithRequiredFileDefaultImplementation(ApiResponse apiResponseLocalVar, System.IO.Stream requiredFile, long petId, Option additionalMetadata) + private void AfterUploadFileWithRequiredFileDefaultImplementation(IUploadFileWithRequiredFileApiResponse apiResponseLocalVar, System.IO.Stream requiredFile, long petId, Option additionalMetadata) { bool suppressDefaultLog = false; AfterUploadFileWithRequiredFile(ref suppressDefaultLog, apiResponseLocalVar, requiredFile, petId, additionalMetadata); @@ -1890,7 +2563,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterUploadFileWithRequiredFile(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, System.IO.Stream requiredFile, long petId, Option additionalMetadata); + partial void AfterUploadFileWithRequiredFile(ref bool suppressDefaultLog, IUploadFileWithRequiredFileApiResponse apiResponseLocalVar, System.IO.Stream requiredFile, long petId, Option additionalMetadata); /// /// Logs exceptions that occur while retrieving the server response @@ -1928,8 +2601,8 @@ namespace UseSourceGeneration.Api /// ID of pet to update /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> UploadFileWithRequiredFileOrDefaultAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UploadFileWithRequiredFileOrDefaultAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1949,8 +2622,8 @@ namespace UseSourceGeneration.Api /// ID of pet to update /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UploadFileWithRequiredFileAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UploadFileWithRequiredFileAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2016,7 +2689,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/{petId}/uploadImageWithRequiredFile", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UploadFileWithRequiredFileApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/{petId}/uploadImageWithRequiredFile", requestedAtLocalVar, _jsonSerializerOptions); AfterUploadFileWithRequiredFileDefaultImplementation(apiResponseLocalVar, requiredFile, petId, additionalMetadata); @@ -2037,5 +2712,82 @@ namespace UseSourceGeneration.Api throw; } } + + /// + /// The + /// + public partial class UploadFileWithRequiredFileApiResponse : UseSourceGeneration.Client.ApiResponse, IUploadFileWithRequiredFileApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UploadFileWithRequiredFileApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public UseSourceGeneration.Model.ApiResponse? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out UseSourceGeneration.Model.ApiResponse? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/StoreApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/StoreApi.cs index 658e538224cf..8b208175e315 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/StoreApi.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using UseSourceGeneration.Client; -using UseSourceGeneration.Api; using UseSourceGeneration.Model; +using System.Diagnostics.CodeAnalysis; namespace UseSourceGeneration.Api { @@ -44,8 +44,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// ID of the order that needs to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default); /// /// Delete purchase order by ID @@ -55,8 +55,8 @@ namespace UseSourceGeneration.Api /// /// ID of the order that needs to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> DeleteOrderOrDefaultAsync(string orderId, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task DeleteOrderOrDefaultAsync(string orderId, System.Threading.CancellationToken cancellationToken = default); /// /// Returns pet inventories by status @@ -66,8 +66,8 @@ namespace UseSourceGeneration.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Dictionary<string, int>>> - Task>> GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Returns pet inventories by status @@ -76,8 +76,8 @@ namespace UseSourceGeneration.Api /// Returns a map of status codes to quantities /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Dictionary<string, int>>?> - Task>?> GetInventoryOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task GetInventoryOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Find purchase order by ID @@ -88,8 +88,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// ID of pet that needs to be fetched /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Order>> - Task> GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default); /// /// Find purchase order by ID @@ -99,8 +99,8 @@ namespace UseSourceGeneration.Api /// /// ID of pet that needs to be fetched /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Order>?> - Task?> GetOrderByIdOrDefaultAsync(long orderId, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task GetOrderByIdOrDefaultAsync(long orderId, System.Threading.CancellationToken cancellationToken = default); /// /// Place an order for a pet @@ -111,8 +111,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// order placed for purchasing the pet /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Order>> - Task> PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default); /// /// Place an order for a pet @@ -122,29 +122,100 @@ namespace UseSourceGeneration.Api /// /// order placed for purchasing the pet /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Order>?> - Task?> PlaceOrderOrDefaultAsync(Order order, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task PlaceOrderOrDefaultAsync(Order order, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IDeleteOrderApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface IGetInventoryApiResponse : UseSourceGeneration.Client.IApiResponse, IOk?> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IGetOrderByIdApiResponse : UseSourceGeneration.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface IPlaceOrderApiResponse : UseSourceGeneration.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class StoreApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnDeleteOrder; + public event EventHandler? OnDeleteOrder; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorDeleteOrder; - internal void ExecuteOnDeleteOrder(ApiResponse apiResponse) + internal void ExecuteOnDeleteOrder(StoreApi.DeleteOrderApiResponse apiResponse) { - OnDeleteOrder?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnDeleteOrder?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorDeleteOrder(Exception exception) @@ -155,16 +226,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>>? OnGetInventory; + public event EventHandler? OnGetInventory; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorGetInventory; - internal void ExecuteOnGetInventory(ApiResponse> apiResponse) + internal void ExecuteOnGetInventory(StoreApi.GetInventoryApiResponse apiResponse) { - OnGetInventory?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnGetInventory?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetInventory(Exception exception) @@ -175,16 +246,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnGetOrderById; + public event EventHandler? OnGetOrderById; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorGetOrderById; - internal void ExecuteOnGetOrderById(ApiResponse apiResponse) + internal void ExecuteOnGetOrderById(StoreApi.GetOrderByIdApiResponse apiResponse) { - OnGetOrderById?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnGetOrderById?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetOrderById(Exception exception) @@ -195,16 +266,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnPlaceOrder; + public event EventHandler? OnPlaceOrder; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorPlaceOrder; - internal void ExecuteOnPlaceOrder(ApiResponse apiResponse) + internal void ExecuteOnPlaceOrder(StoreApi.PlaceOrderApiResponse apiResponse) { - OnPlaceOrder?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnPlaceOrder?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorPlaceOrder(Exception exception) @@ -220,6 +291,11 @@ namespace UseSourceGeneration.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -264,7 +340,7 @@ namespace UseSourceGeneration.Api /// Initializes a new instance of the class. /// /// - public StoreApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, StoreApiEvents storeApiEvents, + public StoreApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, StoreApiEvents storeApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -272,7 +348,8 @@ namespace UseSourceGeneration.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = storeApiEvents; ApiKeyProvider = apiKeyProvider; @@ -300,7 +377,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterDeleteOrderDefaultImplementation(ApiResponse apiResponseLocalVar, string orderId) + private void AfterDeleteOrderDefaultImplementation(IDeleteOrderApiResponse apiResponseLocalVar, string orderId) { bool suppressDefaultLog = false; AfterDeleteOrder(ref suppressDefaultLog, apiResponseLocalVar, orderId); @@ -314,7 +391,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterDeleteOrder(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string orderId); + partial void AfterDeleteOrder(ref bool suppressDefaultLog, IDeleteOrderApiResponse apiResponseLocalVar, string orderId); /// /// Logs exceptions that occur while retrieving the server response @@ -346,8 +423,8 @@ namespace UseSourceGeneration.Api /// /// ID of the order that needs to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> DeleteOrderOrDefaultAsync(string orderId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeleteOrderOrDefaultAsync(string orderId, System.Threading.CancellationToken cancellationToken = default) { try { @@ -365,8 +442,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// ID of the order that needs to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -394,7 +471,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order/{order_id}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + DeleteOrderApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order/{order_id}", requestedAtLocalVar, _jsonSerializerOptions); AfterDeleteOrderDefaultImplementation(apiResponseLocalVar, orderId); @@ -412,11 +491,62 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class DeleteOrderApiResponse : UseSourceGeneration.Client.ApiResponse, IDeleteOrderApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public DeleteOrderApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterGetInventoryDefaultImplementation(ApiResponse> apiResponseLocalVar) + private void AfterGetInventoryDefaultImplementation(IGetInventoryApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterGetInventory(ref suppressDefaultLog, apiResponseLocalVar); @@ -429,7 +559,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterGetInventory(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar); + partial void AfterGetInventory(ref bool suppressDefaultLog, IGetInventoryApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -458,8 +588,8 @@ namespace UseSourceGeneration.Api /// Returns pet inventories by status Returns a map of status codes to quantities /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>?> GetInventoryOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetInventoryOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -476,8 +606,8 @@ namespace UseSourceGeneration.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -517,7 +647,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/inventory", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetInventoryApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/inventory", requestedAtLocalVar, _jsonSerializerOptions); AfterGetInventoryDefaultImplementation(apiResponseLocalVar); @@ -539,6 +671,83 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class GetInventoryApiResponse : UseSourceGeneration.Client.ApiResponse, IGetInventoryApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetInventoryApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Dictionary? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Dictionary? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatGetOrderById(ref long orderId); /// @@ -546,7 +755,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterGetOrderByIdDefaultImplementation(ApiResponse apiResponseLocalVar, long orderId) + private void AfterGetOrderByIdDefaultImplementation(IGetOrderByIdApiResponse apiResponseLocalVar, long orderId) { bool suppressDefaultLog = false; AfterGetOrderById(ref suppressDefaultLog, apiResponseLocalVar, orderId); @@ -560,7 +769,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterGetOrderById(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long orderId); + partial void AfterGetOrderById(ref bool suppressDefaultLog, IGetOrderByIdApiResponse apiResponseLocalVar, long orderId); /// /// Logs exceptions that occur while retrieving the server response @@ -592,8 +801,8 @@ namespace UseSourceGeneration.Api /// /// ID of pet that needs to be fetched /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> GetOrderByIdOrDefaultAsync(long orderId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetOrderByIdOrDefaultAsync(long orderId, System.Threading.CancellationToken cancellationToken = default) { try { @@ -611,8 +820,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// ID of pet that needs to be fetched /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -648,7 +857,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order/{order_id}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetOrderByIdApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order/{order_id}", requestedAtLocalVar, _jsonSerializerOptions); AfterGetOrderByIdDefaultImplementation(apiResponseLocalVar, orderId); @@ -666,6 +877,95 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class GetOrderByIdApiResponse : UseSourceGeneration.Client.ApiResponse, IGetOrderByIdApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetOrderByIdApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public UseSourceGeneration.Model.Order? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out UseSourceGeneration.Model.Order? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatPlaceOrder(Order order); /// @@ -684,7 +984,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterPlaceOrderDefaultImplementation(ApiResponse apiResponseLocalVar, Order order) + private void AfterPlaceOrderDefaultImplementation(IPlaceOrderApiResponse apiResponseLocalVar, Order order) { bool suppressDefaultLog = false; AfterPlaceOrder(ref suppressDefaultLog, apiResponseLocalVar, order); @@ -698,7 +998,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterPlaceOrder(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Order order); + partial void AfterPlaceOrder(ref bool suppressDefaultLog, IPlaceOrderApiResponse apiResponseLocalVar, Order order); /// /// Logs exceptions that occur while retrieving the server response @@ -730,8 +1030,8 @@ namespace UseSourceGeneration.Api /// /// order placed for purchasing the pet /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> PlaceOrderOrDefaultAsync(Order order, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task PlaceOrderOrDefaultAsync(Order order, System.Threading.CancellationToken cancellationToken = default) { try { @@ -749,8 +1049,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// order placed for purchasing the pet /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -800,7 +1100,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + PlaceOrderApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order", requestedAtLocalVar, _jsonSerializerOptions); AfterPlaceOrderDefaultImplementation(apiResponseLocalVar, order); @@ -817,5 +1119,88 @@ namespace UseSourceGeneration.Api throw; } } + + /// + /// The + /// + public partial class PlaceOrderApiResponse : UseSourceGeneration.Client.ApiResponse, IPlaceOrderApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public PlaceOrderApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public UseSourceGeneration.Model.Order? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out UseSourceGeneration.Model.Order? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/UserApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/UserApi.cs index a4bc885856b9..533178b71472 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/UserApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Api/UserApi.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using UseSourceGeneration.Client; -using UseSourceGeneration.Api; using UseSourceGeneration.Model; +using System.Diagnostics.CodeAnalysis; namespace UseSourceGeneration.Api { @@ -44,8 +44,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// Created user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default); /// /// Create user @@ -55,8 +55,8 @@ namespace UseSourceGeneration.Api /// /// Created user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> CreateUserOrDefaultAsync(User user, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task CreateUserOrDefaultAsync(User user, System.Threading.CancellationToken cancellationToken = default); /// /// Creates list of users with given input array @@ -67,8 +67,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// List of user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default); /// /// Creates list of users with given input array @@ -78,8 +78,8 @@ namespace UseSourceGeneration.Api /// /// List of user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> CreateUsersWithArrayInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task CreateUsersWithArrayInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default); /// /// Creates list of users with given input array @@ -90,8 +90,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// List of user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default); /// /// Creates list of users with given input array @@ -101,8 +101,8 @@ namespace UseSourceGeneration.Api /// /// List of user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> CreateUsersWithListInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task CreateUsersWithListInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default); /// /// Delete user @@ -113,8 +113,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// The name that needs to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default); /// /// Delete user @@ -124,8 +124,8 @@ namespace UseSourceGeneration.Api /// /// The name that needs to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> DeleteUserOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task DeleteUserOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default); /// /// Get user by user name @@ -136,8 +136,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// The name that needs to be fetched. Use user1 for testing. /// Cancellation Token to cancel the request. - /// Task<ApiResponse<User>> - Task> GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default); /// /// Get user by user name @@ -147,8 +147,8 @@ namespace UseSourceGeneration.Api /// /// The name that needs to be fetched. Use user1 for testing. /// Cancellation Token to cancel the request. - /// Task<ApiResponse>User>?> - Task?> GetUserByNameOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task GetUserByNameOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default); /// /// Logs user into the system @@ -160,8 +160,8 @@ namespace UseSourceGeneration.Api /// The user name for login /// The password for login in clear text /// Cancellation Token to cancel the request. - /// Task<ApiResponse<string>> - Task> LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default); /// /// Logs user into the system @@ -172,8 +172,8 @@ namespace UseSourceGeneration.Api /// The user name for login /// The password for login in clear text /// Cancellation Token to cancel the request. - /// Task<ApiResponse>string>?> - Task?> LoginUserOrDefaultAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task LoginUserOrDefaultAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default); /// /// Logs out current logged in user session @@ -183,8 +183,8 @@ namespace UseSourceGeneration.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Logs out current logged in user session @@ -193,8 +193,8 @@ namespace UseSourceGeneration.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> LogoutUserOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task LogoutUserOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Updated user @@ -206,8 +206,8 @@ namespace UseSourceGeneration.Api /// Updated user object /// name that need to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> UpdateUserAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdateUserAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default); /// /// Updated user @@ -218,29 +218,154 @@ namespace UseSourceGeneration.Api /// Updated user object /// name that need to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> UpdateUserOrDefaultAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task UpdateUserOrDefaultAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface ICreateUserApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface ICreateUsersWithArrayInputApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface ICreateUsersWithListInputApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface IDeleteUserApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface IGetUserByNameApiResponse : UseSourceGeneration.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface ILoginUserApiResponse : UseSourceGeneration.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface ILogoutUserApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface IUpdateUserApiResponse : UseSourceGeneration.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class UserApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnCreateUser; + public event EventHandler? OnCreateUser; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorCreateUser; - internal void ExecuteOnCreateUser(ApiResponse apiResponse) + internal void ExecuteOnCreateUser(UserApi.CreateUserApiResponse apiResponse) { - OnCreateUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnCreateUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorCreateUser(Exception exception) @@ -251,16 +376,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnCreateUsersWithArrayInput; + public event EventHandler? OnCreateUsersWithArrayInput; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorCreateUsersWithArrayInput; - internal void ExecuteOnCreateUsersWithArrayInput(ApiResponse apiResponse) + internal void ExecuteOnCreateUsersWithArrayInput(UserApi.CreateUsersWithArrayInputApiResponse apiResponse) { - OnCreateUsersWithArrayInput?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnCreateUsersWithArrayInput?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorCreateUsersWithArrayInput(Exception exception) @@ -271,16 +396,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnCreateUsersWithListInput; + public event EventHandler? OnCreateUsersWithListInput; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorCreateUsersWithListInput; - internal void ExecuteOnCreateUsersWithListInput(ApiResponse apiResponse) + internal void ExecuteOnCreateUsersWithListInput(UserApi.CreateUsersWithListInputApiResponse apiResponse) { - OnCreateUsersWithListInput?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnCreateUsersWithListInput?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorCreateUsersWithListInput(Exception exception) @@ -291,16 +416,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnDeleteUser; + public event EventHandler? OnDeleteUser; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorDeleteUser; - internal void ExecuteOnDeleteUser(ApiResponse apiResponse) + internal void ExecuteOnDeleteUser(UserApi.DeleteUserApiResponse apiResponse) { - OnDeleteUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnDeleteUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorDeleteUser(Exception exception) @@ -311,16 +436,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnGetUserByName; + public event EventHandler? OnGetUserByName; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorGetUserByName; - internal void ExecuteOnGetUserByName(ApiResponse apiResponse) + internal void ExecuteOnGetUserByName(UserApi.GetUserByNameApiResponse apiResponse) { - OnGetUserByName?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnGetUserByName?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetUserByName(Exception exception) @@ -331,16 +456,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnLoginUser; + public event EventHandler? OnLoginUser; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorLoginUser; - internal void ExecuteOnLoginUser(ApiResponse apiResponse) + internal void ExecuteOnLoginUser(UserApi.LoginUserApiResponse apiResponse) { - OnLoginUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnLoginUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorLoginUser(Exception exception) @@ -351,16 +476,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnLogoutUser; + public event EventHandler? OnLogoutUser; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorLogoutUser; - internal void ExecuteOnLogoutUser(ApiResponse apiResponse) + internal void ExecuteOnLogoutUser(UserApi.LogoutUserApiResponse apiResponse) { - OnLogoutUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnLogoutUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorLogoutUser(Exception exception) @@ -371,16 +496,16 @@ namespace UseSourceGeneration.Api /// /// The event raised after the server response /// - public event EventHandler>? OnUpdateUser; + public event EventHandler? OnUpdateUser; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorUpdateUser; - internal void ExecuteOnUpdateUser(ApiResponse apiResponse) + internal void ExecuteOnUpdateUser(UserApi.UpdateUserApiResponse apiResponse) { - OnUpdateUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUpdateUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUpdateUser(Exception exception) @@ -396,6 +521,11 @@ namespace UseSourceGeneration.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -440,7 +570,7 @@ namespace UseSourceGeneration.Api /// Initializes a new instance of the class. /// /// - public UserApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, UserApiEvents userApiEvents, + public UserApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, UserApiEvents userApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -448,7 +578,8 @@ namespace UseSourceGeneration.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = userApiEvents; ApiKeyProvider = apiKeyProvider; @@ -476,7 +607,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterCreateUserDefaultImplementation(ApiResponse apiResponseLocalVar, User user) + private void AfterCreateUserDefaultImplementation(ICreateUserApiResponse apiResponseLocalVar, User user) { bool suppressDefaultLog = false; AfterCreateUser(ref suppressDefaultLog, apiResponseLocalVar, user); @@ -490,7 +621,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterCreateUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, User user); + partial void AfterCreateUser(ref bool suppressDefaultLog, ICreateUserApiResponse apiResponseLocalVar, User user); /// /// Logs exceptions that occur while retrieving the server response @@ -522,8 +653,8 @@ namespace UseSourceGeneration.Api /// /// Created user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> CreateUserOrDefaultAsync(User user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUserOrDefaultAsync(User user, System.Threading.CancellationToken cancellationToken = default) { try { @@ -541,8 +672,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// Created user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -582,7 +713,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + CreateUserApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user", requestedAtLocalVar, _jsonSerializerOptions); AfterCreateUserDefaultImplementation(apiResponseLocalVar, user); @@ -600,6 +733,51 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class CreateUserApiResponse : UseSourceGeneration.Client.ApiResponse, ICreateUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public CreateUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatCreateUsersWithArrayInput(List user); /// @@ -618,7 +796,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterCreateUsersWithArrayInputDefaultImplementation(ApiResponse apiResponseLocalVar, List user) + private void AfterCreateUsersWithArrayInputDefaultImplementation(ICreateUsersWithArrayInputApiResponse apiResponseLocalVar, List user) { bool suppressDefaultLog = false; AfterCreateUsersWithArrayInput(ref suppressDefaultLog, apiResponseLocalVar, user); @@ -632,7 +810,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterCreateUsersWithArrayInput(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, List user); + partial void AfterCreateUsersWithArrayInput(ref bool suppressDefaultLog, ICreateUsersWithArrayInputApiResponse apiResponseLocalVar, List user); /// /// Logs exceptions that occur while retrieving the server response @@ -664,8 +842,8 @@ namespace UseSourceGeneration.Api /// /// List of user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> CreateUsersWithArrayInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUsersWithArrayInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default) { try { @@ -683,8 +861,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// List of user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -724,7 +902,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/createWithArray", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + CreateUsersWithArrayInputApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/createWithArray", requestedAtLocalVar, _jsonSerializerOptions); AfterCreateUsersWithArrayInputDefaultImplementation(apiResponseLocalVar, user); @@ -742,6 +922,51 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class CreateUsersWithArrayInputApiResponse : UseSourceGeneration.Client.ApiResponse, ICreateUsersWithArrayInputApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public CreateUsersWithArrayInputApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatCreateUsersWithListInput(List user); /// @@ -760,7 +985,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterCreateUsersWithListInputDefaultImplementation(ApiResponse apiResponseLocalVar, List user) + private void AfterCreateUsersWithListInputDefaultImplementation(ICreateUsersWithListInputApiResponse apiResponseLocalVar, List user) { bool suppressDefaultLog = false; AfterCreateUsersWithListInput(ref suppressDefaultLog, apiResponseLocalVar, user); @@ -774,7 +999,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterCreateUsersWithListInput(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, List user); + partial void AfterCreateUsersWithListInput(ref bool suppressDefaultLog, ICreateUsersWithListInputApiResponse apiResponseLocalVar, List user); /// /// Logs exceptions that occur while retrieving the server response @@ -806,8 +1031,8 @@ namespace UseSourceGeneration.Api /// /// List of user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> CreateUsersWithListInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUsersWithListInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default) { try { @@ -825,8 +1050,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// List of user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -866,7 +1091,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/createWithList", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + CreateUsersWithListInputApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/createWithList", requestedAtLocalVar, _jsonSerializerOptions); AfterCreateUsersWithListInputDefaultImplementation(apiResponseLocalVar, user); @@ -884,6 +1111,51 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class CreateUsersWithListInputApiResponse : UseSourceGeneration.Client.ApiResponse, ICreateUsersWithListInputApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public CreateUsersWithListInputApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatDeleteUser(ref string username); /// @@ -902,7 +1174,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterDeleteUserDefaultImplementation(ApiResponse apiResponseLocalVar, string username) + private void AfterDeleteUserDefaultImplementation(IDeleteUserApiResponse apiResponseLocalVar, string username) { bool suppressDefaultLog = false; AfterDeleteUser(ref suppressDefaultLog, apiResponseLocalVar, username); @@ -916,7 +1188,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterDeleteUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string username); + partial void AfterDeleteUser(ref bool suppressDefaultLog, IDeleteUserApiResponse apiResponseLocalVar, string username); /// /// Logs exceptions that occur while retrieving the server response @@ -948,8 +1220,8 @@ namespace UseSourceGeneration.Api /// /// The name that needs to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> DeleteUserOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeleteUserOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default) { try { @@ -967,8 +1239,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// The name that needs to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -996,7 +1268,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + DeleteUserApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); AfterDeleteUserDefaultImplementation(apiResponseLocalVar, username); @@ -1014,6 +1288,57 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class DeleteUserApiResponse : UseSourceGeneration.Client.ApiResponse, IDeleteUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public DeleteUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatGetUserByName(ref string username); /// @@ -1032,7 +1357,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterGetUserByNameDefaultImplementation(ApiResponse apiResponseLocalVar, string username) + private void AfterGetUserByNameDefaultImplementation(IGetUserByNameApiResponse apiResponseLocalVar, string username) { bool suppressDefaultLog = false; AfterGetUserByName(ref suppressDefaultLog, apiResponseLocalVar, username); @@ -1046,7 +1371,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterGetUserByName(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string username); + partial void AfterGetUserByName(ref bool suppressDefaultLog, IGetUserByNameApiResponse apiResponseLocalVar, string username); /// /// Logs exceptions that occur while retrieving the server response @@ -1078,8 +1403,8 @@ namespace UseSourceGeneration.Api /// /// The name that needs to be fetched. Use user1 for testing. /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> GetUserByNameOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetUserByNameOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1097,8 +1422,8 @@ namespace UseSourceGeneration.Api /// Thrown when fails to make API call /// The name that needs to be fetched. Use user1 for testing. /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1136,7 +1461,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetUserByNameApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); AfterGetUserByNameDefaultImplementation(apiResponseLocalVar, username); @@ -1154,6 +1481,95 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class GetUserByNameApiResponse : UseSourceGeneration.Client.ApiResponse, IGetUserByNameApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetUserByNameApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public UseSourceGeneration.Model.User? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out UseSourceGeneration.Model.User? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatLoginUser(ref string username, ref string password); /// @@ -1177,7 +1593,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterLoginUserDefaultImplementation(ApiResponse apiResponseLocalVar, string username, string password) + private void AfterLoginUserDefaultImplementation(ILoginUserApiResponse apiResponseLocalVar, string username, string password) { bool suppressDefaultLog = false; AfterLoginUser(ref suppressDefaultLog, apiResponseLocalVar, username, password); @@ -1192,7 +1608,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterLoginUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string username, string password); + partial void AfterLoginUser(ref bool suppressDefaultLog, ILoginUserApiResponse apiResponseLocalVar, string username, string password); /// /// Logs exceptions that occur while retrieving the server response @@ -1227,8 +1643,8 @@ namespace UseSourceGeneration.Api /// The user name for login /// The password for login in clear text /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> LoginUserOrDefaultAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task LoginUserOrDefaultAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1247,8 +1663,8 @@ namespace UseSourceGeneration.Api /// The user name for login /// The password for login in clear text /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1292,7 +1708,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/login", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + LoginUserApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/login", requestedAtLocalVar, _jsonSerializerOptions); AfterLoginUserDefaultImplementation(apiResponseLocalVar, username, password); @@ -1310,11 +1728,94 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class LoginUserApiResponse : UseSourceGeneration.Client.ApiResponse, ILoginUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public LoginUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public string? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out string? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterLogoutUserDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterLogoutUserDefaultImplementation(ILogoutUserApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterLogoutUser(ref suppressDefaultLog, apiResponseLocalVar); @@ -1327,7 +1828,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterLogoutUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterLogoutUser(ref bool suppressDefaultLog, ILogoutUserApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -1356,8 +1857,8 @@ namespace UseSourceGeneration.Api /// Logs out current logged in user session /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> LogoutUserOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task LogoutUserOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -1374,8 +1875,8 @@ namespace UseSourceGeneration.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1398,7 +1899,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/logout", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + LogoutUserApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/logout", requestedAtLocalVar, _jsonSerializerOptions); AfterLogoutUserDefaultImplementation(apiResponseLocalVar); @@ -1416,6 +1919,51 @@ namespace UseSourceGeneration.Api } } + /// + /// The + /// + public partial class LogoutUserApiResponse : UseSourceGeneration.Client.ApiResponse, ILogoutUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public LogoutUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUpdateUser(User user, ref string username); /// @@ -1439,7 +1987,7 @@ namespace UseSourceGeneration.Api /// /// /// - private void AfterUpdateUserDefaultImplementation(ApiResponse apiResponseLocalVar, User user, string username) + private void AfterUpdateUserDefaultImplementation(IUpdateUserApiResponse apiResponseLocalVar, User user, string username) { bool suppressDefaultLog = false; AfterUpdateUser(ref suppressDefaultLog, apiResponseLocalVar, user, username); @@ -1454,7 +2002,7 @@ namespace UseSourceGeneration.Api /// /// /// - partial void AfterUpdateUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, User user, string username); + partial void AfterUpdateUser(ref bool suppressDefaultLog, IUpdateUserApiResponse apiResponseLocalVar, User user, string username); /// /// Logs exceptions that occur while retrieving the server response @@ -1489,8 +2037,8 @@ namespace UseSourceGeneration.Api /// Updated user object /// name that need to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> UpdateUserOrDefaultAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdateUserOrDefaultAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1509,8 +2057,8 @@ namespace UseSourceGeneration.Api /// Updated user object /// name that need to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdateUserAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdateUserAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1551,7 +2099,9 @@ namespace UseSourceGeneration.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UpdateUserApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); AfterUpdateUserDefaultImplementation(apiResponseLocalVar, user, username); @@ -1568,5 +2118,56 @@ namespace UseSourceGeneration.Api throw; } } + + /// + /// The + /// + public partial class UpdateUserApiResponse : UseSourceGeneration.Client.ApiResponse, IUpdateUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UpdateUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Client/ApiResponseEventArgs.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Client/ApiResponseEventArgs.cs index a2428008e180..a10ff6363dfa 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Client/ApiResponseEventArgs.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Client/ApiResponseEventArgs.cs @@ -5,18 +5,18 @@ namespace UseSourceGeneration.Client /// /// Useful for tracking server health /// - public class ApiResponseEventArgs : EventArgs + public class ApiResponseEventArgs : EventArgs { /// /// The ApiResponse /// - public ApiResponse ApiResponse { get; } + public ApiResponse ApiResponse { get; } /// /// The ApiResponseEventArgs /// /// - public ApiResponseEventArgs(ApiResponse apiResponse) + public ApiResponseEventArgs(ApiResponse apiResponse) { ApiResponse = apiResponse; } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Client/ApiResponse`1.cs index 96d5e92383e5..606074e5342f 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/Client/ApiResponse`1.cs @@ -11,7 +11,6 @@ #nullable enable using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Net; @@ -20,15 +19,15 @@ namespace UseSourceGeneration.Client /// /// Provides a non-generic contract for the ApiResponse wrapper. /// - public interface IApiResponse + public partial interface IApiResponse { /// - /// The type that represents the server's response. + /// The IsSuccessStatusCode from the api response /// - Type ResponseType { get; } + bool IsSuccessStatusCode { get; } /// - /// Gets or sets the status code (HTTP status code) + /// Gets the status code (HTTP status code) /// /// The status code. HttpStatusCode StatusCode { get; } @@ -43,11 +42,26 @@ namespace UseSourceGeneration.Client /// DateTime DownloadedAt { get; } + /// + /// The headers contained in the api response + /// + System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// /// The path used when making the request. /// string Path { get; } + /// + /// The reason phrase contained in the api response + /// + string? ReasonPhrase { get; } + + /// + /// The DateTime when the request was sent. + /// + DateTime RequestedAt { get; } + /// /// The Uri used when making the request. /// @@ -57,26 +71,18 @@ namespace UseSourceGeneration.Client /// /// API Response /// - public partial class ApiResponse : IApiResponse + public partial class ApiResponse : IApiResponse { /// - /// Gets or sets the status code (HTTP status code) + /// Gets the status code (HTTP status code) /// /// The status code. public HttpStatusCode StatusCode { get; } - /// - /// The type that represents the server's response. - /// - public Type ResponseType - { - get { return typeof(T); } - } - /// /// The raw data /// - public string RawContent { get; private set; } + public string RawContent { get; protected set; } /// /// The IsSuccessStatusCode from the api response @@ -114,9 +120,9 @@ namespace UseSourceGeneration.Client public Uri? RequestUri { get; } /// - /// The JsonSerialzierOptions + /// The /// - private System.Text.Json.JsonSerializerOptions _jsonSerializerOptions; + protected System.Text.Json.JsonSerializerOptions _jsonSerializerOptions; /// /// Construct the response using an HttpResponseMessage @@ -142,33 +148,45 @@ namespace UseSourceGeneration.Client } partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + } + + /// + /// An interface for responses of type + /// + /// + public interface IOk : IApiResponse + { + /// + /// Deserializes the response if the response is Ok + /// + /// + TType Ok(); /// - /// Deserializes the server's response + /// Returns true if the response is Ok and the deserialized response is not null /// - public T? AsModel() - { - // This logic may be modified with the AsModel.mustache template - return IsSuccessStatusCode - ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) - : default(T); - } + /// + /// + bool TryOk([NotNullWhen(true)]out TType? result); + } + + /// + /// An interface for responses of type + /// + /// + public interface IDefault : IApiResponse + { + /// + /// Deserializes the response if the response is Default + /// + /// + TType Default(); /// - /// Returns true when the model can be deserialized + /// Returns true if the response is Default and the deserialized response is not null /// - public bool TryToModel([NotNullWhen(true)] out T? model) - { - try - { - model = AsModel(); - return model != null; - } - catch - { - model = default(T); - return false; - } - } + /// + /// + bool TryDefault([NotNullWhen(true)]out TType? result); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/README.md b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/README.md index c745a9616043..b6e75fbf4990 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/README.md +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt-useSourceGeneration/src/UseSourceGeneration/README.md @@ -61,8 +61,8 @@ namespace YourProject { var host = CreateHostBuilder(args).Build(); var api = host.Services.GetRequiredService(); - ApiResponse response = await api.Call123TestSpecialTagsAsync("todo"); - ModelClient model = response.AsModel(); + Call123TestSpecialTagsApiResponse apiResponse = await api.Call123TestSpecialTagsAsync("todo"); + ModelClient model = apiResponse.Ok(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs index f40c0c63061d..53d2c74655f3 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs @@ -58,7 +58,7 @@ namespace Org.OpenAPITools.Test.Api { ModelClient modelClient = default!; var response = await _instance.Call123TestSpecialTagsAsync(modelClient); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs index a671d79a4747..3e6e9af57c4e 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs @@ -57,7 +57,7 @@ namespace Org.OpenAPITools.Test.Api public async Task FooGetAsyncTest() { var response = await _instance.FooGetAsync(); - var model = response.AsModel(); + var model = response.Default(); Assert.IsType(model); } @@ -78,8 +78,30 @@ namespace Org.OpenAPITools.Test.Api public async Task HelloAsyncTest() { var response = await _instance.HelloAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } + + /// + /// Test RolesReportGet + /// + [Fact (Skip = "not implemented")] + public async Task RolesReportGetAsyncTest() + { + var response = await _instance.RolesReportGetAsync(); + var model = response.Ok(); + Assert.IsType>>(model); + } + + /// + /// Test Test + /// + [Fact (Skip = "not implemented")] + public async Task TestAsyncTest() + { + var response = await _instance.TestAsync(); + var model = response.Ok(); + Assert.IsType(model); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs index 614b8aff4e03..758fb96ce8b8 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs @@ -57,7 +57,7 @@ namespace Org.OpenAPITools.Test.Api public async Task FakeHealthGetAsyncTest() { var response = await _instance.FakeHealthGetAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -69,7 +69,7 @@ namespace Org.OpenAPITools.Test.Api { Client.Option body = default!; var response = await _instance.FakeOuterBooleanSerializeAsync(body); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -81,7 +81,7 @@ namespace Org.OpenAPITools.Test.Api { Client.Option outerComposite = default!; var response = await _instance.FakeOuterCompositeSerializeAsync(outerComposite); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -93,7 +93,7 @@ namespace Org.OpenAPITools.Test.Api { Client.Option body = default!; var response = await _instance.FakeOuterNumberSerializeAsync(body); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -106,7 +106,7 @@ namespace Org.OpenAPITools.Test.Api Guid requiredStringUuid = default!; Client.Option body = default!; var response = await _instance.FakeOuterStringSerializeAsync(requiredStringUuid, body); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -117,7 +117,7 @@ namespace Org.OpenAPITools.Test.Api public async Task GetArrayOfEnumsAsyncTest() { var response = await _instance.GetArrayOfEnumsAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } @@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Test.Api { ModelClient modelClient = default!; var response = await _instance.TestClientModelAsync(modelClient); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs index 4869c33576ec..626331ef9b7f 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs @@ -58,7 +58,7 @@ namespace Org.OpenAPITools.Test.Api { ModelClient modelClient = default!; var response = await _instance.TestClassnameAsync(modelClient); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/PetApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/PetApiTests.cs index d137380a2be7..caca49e64041 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/PetApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/PetApiTests.cs @@ -79,7 +79,7 @@ namespace Org.OpenAPITools.Test.Api { List status = default!; var response = await _instance.FindPetsByStatusAsync(status); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } @@ -91,7 +91,7 @@ namespace Org.OpenAPITools.Test.Api { List tags = default!; var response = await _instance.FindPetsByTagsAsync(tags); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } @@ -103,7 +103,7 @@ namespace Org.OpenAPITools.Test.Api { long petId = default!; var response = await _instance.GetPetByIdAsync(petId); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -139,7 +139,7 @@ namespace Org.OpenAPITools.Test.Api Client.Option file = default!; Client.Option additionalMetadata = default!; var response = await _instance.UploadFileAsync(petId, file, additionalMetadata); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -153,7 +153,7 @@ namespace Org.OpenAPITools.Test.Api long petId = default!; Client.Option additionalMetadata = default!; var response = await _instance.UploadFileWithRequiredFileAsync(requiredFile, petId, additionalMetadata); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs index 456aeb0d6ddb..b2a25a3e6f07 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs @@ -67,7 +67,7 @@ namespace Org.OpenAPITools.Test.Api public async Task GetInventoryAsyncTest() { var response = await _instance.GetInventoryAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } @@ -79,7 +79,7 @@ namespace Org.OpenAPITools.Test.Api { long orderId = default!; var response = await _instance.GetOrderByIdAsync(orderId); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -91,7 +91,7 @@ namespace Org.OpenAPITools.Test.Api { Order order = default!; var response = await _instance.PlaceOrderAsync(order); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/UserApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/UserApiTests.cs index acdd4d7915dd..8cee721cf546 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/UserApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Api/UserApiTests.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Test.Api { string username = default!; var response = await _instance.GetUserByNameAsync(username); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -111,7 +111,7 @@ namespace Org.OpenAPITools.Test.Api string username = default!; string password = default!; var response = await _instance.LoginUserAsync(username, password); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Model/AppleTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Model/AppleTests.cs index a66d14b310bd..c7c8ccd47c11 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Model/AppleTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools.Test/Model/AppleTests.cs @@ -53,6 +53,15 @@ namespace Org.OpenAPITools.Test.Model //Assert.IsType(instance); } + /// + /// Test the property 'ColorCode' + /// + [Fact] + public void ColorCodeTest() + { + // TODO unit test for the property 'ColorCode' + } + /// /// Test the property 'Cultivar' /// diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index 17f490b87015..92e0e04f5542 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -44,8 +44,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ModelClient>> - Task> Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); /// /// To test special tags @@ -55,29 +55,40 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ModelClient>?> - Task?> Call123TestSpecialTagsOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task Call123TestSpecialTagsOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface ICall123TestSpecialTagsApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class AnotherFakeApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnCall123TestSpecialTags; + public event EventHandler? OnCall123TestSpecialTags; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorCall123TestSpecialTags; - internal void ExecuteOnCall123TestSpecialTags(ApiResponse apiResponse) + internal void ExecuteOnCall123TestSpecialTags(AnotherFakeApi.Call123TestSpecialTagsApiResponse apiResponse) { - OnCall123TestSpecialTags?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnCall123TestSpecialTags?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorCall123TestSpecialTags(Exception exception) @@ -93,6 +104,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -137,7 +153,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public AnotherFakeApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, AnotherFakeApiEvents anotherFakeApiEvents, + public AnotherFakeApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, AnotherFakeApiEvents anotherFakeApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -145,7 +161,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = anotherFakeApiEvents; ApiKeyProvider = apiKeyProvider; @@ -173,7 +190,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterCall123TestSpecialTagsDefaultImplementation(ApiResponse apiResponseLocalVar, ModelClient modelClient) + private void AfterCall123TestSpecialTagsDefaultImplementation(ICall123TestSpecialTagsApiResponse apiResponseLocalVar, ModelClient modelClient) { bool suppressDefaultLog = false; AfterCall123TestSpecialTags(ref suppressDefaultLog, apiResponseLocalVar, modelClient); @@ -187,7 +204,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterCall123TestSpecialTags(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, ModelClient modelClient); + partial void AfterCall123TestSpecialTags(ref bool suppressDefaultLog, ICall123TestSpecialTagsApiResponse apiResponseLocalVar, ModelClient modelClient); /// /// Logs exceptions that occur while retrieving the server response @@ -219,8 +236,8 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> Call123TestSpecialTagsOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task Call123TestSpecialTagsOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { try { @@ -238,8 +255,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -288,7 +305,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/another-fake/dummy", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + Call123TestSpecialTagsApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/another-fake/dummy", requestedAtLocalVar, _jsonSerializerOptions); AfterCall123TestSpecialTagsDefaultImplementation(apiResponseLocalVar, modelClient); @@ -305,5 +324,82 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class Call123TestSpecialTagsApiResponse : Org.OpenAPITools.Client.ApiResponse, ICall123TestSpecialTagsApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public Call123TestSpecialTagsApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.ModelClient? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.ModelClient? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/DefaultApi.cs index fefd741c7a20..c3946c7739bc 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -43,8 +43,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<FooGetDefaultResponse>> - Task> FooGetAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FooGetAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -53,8 +53,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>FooGetDefaultResponse>?> - Task?> FooGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task FooGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -65,8 +65,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> GetCountryAsync(string country, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetCountryAsync(string country, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -76,8 +76,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> GetCountryOrDefaultAsync(string country, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task GetCountryOrDefaultAsync(string country, System.Threading.CancellationToken cancellationToken = default); /// /// Hello @@ -87,8 +87,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<Guid>>> - Task>> HelloAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task HelloAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Hello @@ -97,8 +97,8 @@ namespace Org.OpenAPITools.Api /// Hello /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<Guid>>?> - Task>?> HelloOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task HelloOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -108,8 +108,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<List<RolesReportsHash>>>> - Task>>> RolesReportGetAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task RolesReportGetAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -118,8 +118,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<List<RolesReportsHash>>>?> - Task>>?> RolesReportGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task RolesReportGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Retrieve an existing Notificationtest's Elements @@ -129,8 +129,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<NotificationtestGetElementsV1ResponseMPayload>> - Task> TestAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Retrieve an existing Notificationtest's Elements @@ -139,29 +139,88 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>NotificationtestGetElementsV1ResponseMPayload>?> - Task?> TestOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IFooGetApiResponse : Org.OpenAPITools.Client.IApiResponse, IDefault + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface IGetCountryApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IHelloApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk?> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IRolesReportGetApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk?> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class DefaultApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnFooGet; + public event EventHandler? OnFooGet; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorFooGet; - internal void ExecuteOnFooGet(ApiResponse apiResponse) + internal void ExecuteOnFooGet(DefaultApi.FooGetApiResponse apiResponse) { - OnFooGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFooGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFooGet(Exception exception) @@ -172,16 +231,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnGetCountry; + public event EventHandler? OnGetCountry; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorGetCountry; - internal void ExecuteOnGetCountry(ApiResponse apiResponse) + internal void ExecuteOnGetCountry(DefaultApi.GetCountryApiResponse apiResponse) { - OnGetCountry?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnGetCountry?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetCountry(Exception exception) @@ -192,16 +251,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>>? OnHello; + public event EventHandler? OnHello; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorHello; - internal void ExecuteOnHello(ApiResponse> apiResponse) + internal void ExecuteOnHello(DefaultApi.HelloApiResponse apiResponse) { - OnHello?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnHello?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorHello(Exception exception) @@ -212,16 +271,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>>>? OnRolesReportGet; + public event EventHandler? OnRolesReportGet; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorRolesReportGet; - internal void ExecuteOnRolesReportGet(ApiResponse>> apiResponse) + internal void ExecuteOnRolesReportGet(DefaultApi.RolesReportGetApiResponse apiResponse) { - OnRolesReportGet?.Invoke(this, new ApiResponseEventArgs>>(apiResponse)); + OnRolesReportGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorRolesReportGet(Exception exception) @@ -232,16 +291,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTest; + public event EventHandler? OnTest; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTest; - internal void ExecuteOnTest(ApiResponse apiResponse) + internal void ExecuteOnTest(DefaultApi.TestApiResponse apiResponse) { - OnTest?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTest?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTest(Exception exception) @@ -257,6 +316,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -301,7 +365,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public DefaultApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, DefaultApiEvents defaultApiEvents, + public DefaultApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, DefaultApiEvents defaultApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -309,7 +373,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = defaultApiEvents; ApiKeyProvider = apiKeyProvider; @@ -323,7 +388,7 @@ namespace Org.OpenAPITools.Api /// Processes the server response /// /// - private void AfterFooGetDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterFooGetDefaultImplementation(IFooGetApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterFooGet(ref suppressDefaultLog, apiResponseLocalVar); @@ -336,7 +401,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFooGet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterFooGet(ref bool suppressDefaultLog, IFooGetApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -365,8 +430,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> FooGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FooGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -383,8 +448,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FooGetAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FooGetAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -416,7 +481,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/foo", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FooGetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/foo", requestedAtLocalVar, _jsonSerializerOptions); AfterFooGetDefaultImplementation(apiResponseLocalVar); @@ -434,6 +501,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FooGetApiResponse : Org.OpenAPITools.Client.ApiResponse, IFooGetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FooGetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + /// + /// Deserializes the response if the response is 0 Default + /// + /// + public Org.OpenAPITools.Model.FooGetDefaultResponse? Default() + { + // This logic may be modified with the AsModel.mustache template + return IsDefault + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 0 Default and the deserialized response is not null + /// + /// + /// + public bool TryDefault([NotNullWhen(true)]out Org.OpenAPITools.Model.FooGetDefaultResponse? result) + { + result = null; + + try + { + result = Default(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)0); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatGetCountry(ref string country); /// @@ -452,7 +596,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterGetCountryDefaultImplementation(ApiResponse apiResponseLocalVar, string country) + private void AfterGetCountryDefaultImplementation(IGetCountryApiResponse apiResponseLocalVar, string country) { bool suppressDefaultLog = false; AfterGetCountry(ref suppressDefaultLog, apiResponseLocalVar, country); @@ -466,7 +610,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetCountry(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string country); + partial void AfterGetCountry(ref bool suppressDefaultLog, IGetCountryApiResponse apiResponseLocalVar, string country); /// /// Logs exceptions that occur while retrieving the server response @@ -498,8 +642,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> GetCountryOrDefaultAsync(string country, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetCountryOrDefaultAsync(string country, System.Threading.CancellationToken cancellationToken = default) { try { @@ -517,8 +661,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetCountryAsync(string country, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetCountryAsync(string country, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -564,7 +708,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/country", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetCountryApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/country", requestedAtLocalVar, _jsonSerializerOptions); AfterGetCountryDefaultImplementation(apiResponseLocalVar, country); @@ -582,11 +728,56 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetCountryApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetCountryApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetCountryApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterHelloDefaultImplementation(ApiResponse> apiResponseLocalVar) + private void AfterHelloDefaultImplementation(IHelloApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterHello(ref suppressDefaultLog, apiResponseLocalVar); @@ -599,7 +790,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterHello(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar); + partial void AfterHello(ref bool suppressDefaultLog, IHelloApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -628,8 +819,8 @@ namespace Org.OpenAPITools.Api /// Hello Hello /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>?> HelloOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task HelloOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -646,8 +837,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> HelloAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task HelloAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -679,7 +870,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/hello", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + HelloApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/hello", requestedAtLocalVar, _jsonSerializerOptions); AfterHelloDefaultImplementation(apiResponseLocalVar); @@ -697,11 +890,88 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class HelloApiResponse : Org.OpenAPITools.Client.ApiResponse, IHelloApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public HelloApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out List? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterRolesReportGetDefaultImplementation(ApiResponse>> apiResponseLocalVar) + private void AfterRolesReportGetDefaultImplementation(IRolesReportGetApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterRolesReportGet(ref suppressDefaultLog, apiResponseLocalVar); @@ -714,7 +984,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterRolesReportGet(ref bool suppressDefaultLog, ApiResponse>> apiResponseLocalVar); + partial void AfterRolesReportGet(ref bool suppressDefaultLog, IRolesReportGetApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -743,8 +1013,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>>?> RolesReportGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task RolesReportGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -761,8 +1031,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>>> RolesReportGetAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task RolesReportGetAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -794,7 +1064,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse>> apiResponseLocalVar = new ApiResponse>>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/roles/report", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + RolesReportGetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/roles/report", requestedAtLocalVar, _jsonSerializerOptions); AfterRolesReportGetDefaultImplementation(apiResponseLocalVar); @@ -812,11 +1084,88 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class RolesReportGetApiResponse : Org.OpenAPITools.Client.ApiResponse, IRolesReportGetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public RolesReportGetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out List? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterTestDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterTestDefaultImplementation(ITestApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterTest(ref suppressDefaultLog, apiResponseLocalVar); @@ -829,7 +1178,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTest(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterTest(ref bool suppressDefaultLog, ITestApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -858,8 +1207,8 @@ namespace Org.OpenAPITools.Api /// Retrieve an existing Notificationtest's Elements /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -876,8 +1225,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -909,7 +1258,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/test", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/test", requestedAtLocalVar, _jsonSerializerOptions); AfterTestDefaultImplementation(apiResponseLocalVar); @@ -926,5 +1277,82 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class TestApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.NotificationtestGetElementsV1ResponseMPayload? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.NotificationtestGetElementsV1ResponseMPayload? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/FakeApi.cs index 63d04a3c1ed6..90ec5f067f36 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/FakeApi.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -43,8 +43,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<HealthCheckResult>> - Task> FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Health check endpoint @@ -53,8 +53,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>HealthCheckResult>?> - Task?> FakeHealthGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task FakeHealthGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -65,8 +65,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input boolean as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<bool>> - Task> FakeOuterBooleanSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterBooleanSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -76,8 +76,8 @@ namespace Org.OpenAPITools.Api /// /// Input boolean as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>bool>?> - Task?> FakeOuterBooleanSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task FakeOuterBooleanSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -88,8 +88,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input composite as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<OuterComposite>> - Task> FakeOuterCompositeSerializeAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterCompositeSerializeAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -99,8 +99,8 @@ namespace Org.OpenAPITools.Api /// /// Input composite as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>OuterComposite>?> - Task?> FakeOuterCompositeSerializeOrDefaultAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task FakeOuterCompositeSerializeOrDefaultAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -111,8 +111,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input number as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<decimal>> - Task> FakeOuterNumberSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterNumberSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -122,8 +122,8 @@ namespace Org.OpenAPITools.Api /// /// Input number as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>decimal>?> - Task?> FakeOuterNumberSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task FakeOuterNumberSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -135,8 +135,8 @@ namespace Org.OpenAPITools.Api /// Required UUID String /// Input string as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<string>> - Task> FakeOuterStringSerializeAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterStringSerializeAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -147,8 +147,8 @@ namespace Org.OpenAPITools.Api /// Required UUID String /// Input string as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>string>?> - Task?> FakeOuterStringSerializeOrDefaultAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task FakeOuterStringSerializeOrDefaultAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// Array of Enums @@ -158,8 +158,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<OuterEnum>>> - Task>> GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Array of Enums @@ -168,8 +168,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<OuterEnum>>?> - Task>?> GetArrayOfEnumsOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task GetArrayOfEnumsOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -180,8 +180,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -191,8 +191,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestBodyWithFileSchemaOrDefaultAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestBodyWithFileSchemaOrDefaultAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -204,8 +204,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestBodyWithQueryParamsAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestBodyWithQueryParamsAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -216,8 +216,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestBodyWithQueryParamsOrDefaultAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestBodyWithQueryParamsOrDefaultAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default); /// /// To test \"client\" model @@ -228,8 +228,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ModelClient>> - Task> TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); /// /// To test \"client\" model @@ -239,8 +239,8 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ModelClient>?> - Task?> TestClientModelOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestClientModelOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); /// /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 @@ -264,8 +264,8 @@ namespace Org.OpenAPITools.Api /// None (optional) /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestEndpointParametersAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestEndpointParametersAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default); /// /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 @@ -288,8 +288,8 @@ namespace Org.OpenAPITools.Api /// None (optional) /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestEndpointParametersOrDefaultAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestEndpointParametersOrDefaultAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default); /// /// To test enum parameters @@ -307,8 +307,8 @@ namespace Org.OpenAPITools.Api /// Query parameter enum test (string) (optional, default to -efg) /// Form parameter enum test (string) (optional, default to -efg) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestEnumParametersAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestEnumParametersAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default); /// /// To test enum parameters @@ -325,8 +325,8 @@ namespace Org.OpenAPITools.Api /// Query parameter enum test (string) (optional, default to -efg) /// Form parameter enum test (string) (optional, default to -efg) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestEnumParametersOrDefaultAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestEnumParametersOrDefaultAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default); /// /// Fake endpoint to test group parameters (optional) @@ -342,8 +342,8 @@ namespace Org.OpenAPITools.Api /// String in group parameters (optional) /// Integer in group parameters (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestGroupParametersAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestGroupParametersAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default); /// /// Fake endpoint to test group parameters (optional) @@ -358,8 +358,8 @@ namespace Org.OpenAPITools.Api /// String in group parameters (optional) /// Integer in group parameters (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestGroupParametersOrDefaultAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestGroupParametersOrDefaultAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default); /// /// test inline additionalProperties @@ -370,8 +370,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// request body /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default); /// /// test inline additionalProperties @@ -381,8 +381,8 @@ namespace Org.OpenAPITools.Api /// /// request body /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestInlineAdditionalPropertiesOrDefaultAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestInlineAdditionalPropertiesOrDefaultAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default); /// /// test inline free-form additionalProperties @@ -393,8 +393,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// request body /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestInlineFreeformAdditionalPropertiesAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestInlineFreeformAdditionalPropertiesAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default); /// /// test inline free-form additionalProperties @@ -404,8 +404,8 @@ namespace Org.OpenAPITools.Api /// /// request body /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestInlineFreeformAdditionalPropertiesOrDefaultAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestInlineFreeformAdditionalPropertiesOrDefaultAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default); /// /// test json serialization of form data @@ -417,8 +417,8 @@ namespace Org.OpenAPITools.Api /// field1 /// field2 /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default); /// /// test json serialization of form data @@ -429,8 +429,8 @@ namespace Org.OpenAPITools.Api /// field1 /// field2 /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestJsonFormDataOrDefaultAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestJsonFormDataOrDefaultAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -449,8 +449,8 @@ namespace Org.OpenAPITools.Api /// (optional) /// (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -468,29 +468,232 @@ namespace Org.OpenAPITools.Api /// (optional) /// (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> TestQueryParameterCollectionFormatOrDefaultAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestQueryParameterCollectionFormatOrDefaultAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IFakeHealthGetApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IFakeOuterBooleanSerializeApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IFakeOuterCompositeSerializeApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IFakeOuterNumberSerializeApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IFakeOuterStringSerializeApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IGetArrayOfEnumsApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk?> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestBodyWithFileSchemaApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestBodyWithQueryParamsApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestClientModelApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestEndpointParametersApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface ITestEnumParametersApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface ITestGroupParametersApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface ITestInlineAdditionalPropertiesApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestInlineFreeformAdditionalPropertiesApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestJsonFormDataApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestQueryParameterCollectionFormatApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class FakeApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnFakeHealthGet; + public event EventHandler? OnFakeHealthGet; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorFakeHealthGet; - internal void ExecuteOnFakeHealthGet(ApiResponse apiResponse) + internal void ExecuteOnFakeHealthGet(FakeApi.FakeHealthGetApiResponse apiResponse) { - OnFakeHealthGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeHealthGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeHealthGet(Exception exception) @@ -501,16 +704,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnFakeOuterBooleanSerialize; + public event EventHandler? OnFakeOuterBooleanSerialize; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorFakeOuterBooleanSerialize; - internal void ExecuteOnFakeOuterBooleanSerialize(ApiResponse apiResponse) + internal void ExecuteOnFakeOuterBooleanSerialize(FakeApi.FakeOuterBooleanSerializeApiResponse apiResponse) { - OnFakeOuterBooleanSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeOuterBooleanSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeOuterBooleanSerialize(Exception exception) @@ -521,16 +724,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnFakeOuterCompositeSerialize; + public event EventHandler? OnFakeOuterCompositeSerialize; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorFakeOuterCompositeSerialize; - internal void ExecuteOnFakeOuterCompositeSerialize(ApiResponse apiResponse) + internal void ExecuteOnFakeOuterCompositeSerialize(FakeApi.FakeOuterCompositeSerializeApiResponse apiResponse) { - OnFakeOuterCompositeSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeOuterCompositeSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeOuterCompositeSerialize(Exception exception) @@ -541,16 +744,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnFakeOuterNumberSerialize; + public event EventHandler? OnFakeOuterNumberSerialize; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorFakeOuterNumberSerialize; - internal void ExecuteOnFakeOuterNumberSerialize(ApiResponse apiResponse) + internal void ExecuteOnFakeOuterNumberSerialize(FakeApi.FakeOuterNumberSerializeApiResponse apiResponse) { - OnFakeOuterNumberSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeOuterNumberSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeOuterNumberSerialize(Exception exception) @@ -561,16 +764,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnFakeOuterStringSerialize; + public event EventHandler? OnFakeOuterStringSerialize; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorFakeOuterStringSerialize; - internal void ExecuteOnFakeOuterStringSerialize(ApiResponse apiResponse) + internal void ExecuteOnFakeOuterStringSerialize(FakeApi.FakeOuterStringSerializeApiResponse apiResponse) { - OnFakeOuterStringSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeOuterStringSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeOuterStringSerialize(Exception exception) @@ -581,16 +784,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>>? OnGetArrayOfEnums; + public event EventHandler? OnGetArrayOfEnums; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorGetArrayOfEnums; - internal void ExecuteOnGetArrayOfEnums(ApiResponse> apiResponse) + internal void ExecuteOnGetArrayOfEnums(FakeApi.GetArrayOfEnumsApiResponse apiResponse) { - OnGetArrayOfEnums?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnGetArrayOfEnums?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetArrayOfEnums(Exception exception) @@ -601,16 +804,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestBodyWithFileSchema; + public event EventHandler? OnTestBodyWithFileSchema; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestBodyWithFileSchema; - internal void ExecuteOnTestBodyWithFileSchema(ApiResponse apiResponse) + internal void ExecuteOnTestBodyWithFileSchema(FakeApi.TestBodyWithFileSchemaApiResponse apiResponse) { - OnTestBodyWithFileSchema?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestBodyWithFileSchema?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestBodyWithFileSchema(Exception exception) @@ -621,16 +824,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestBodyWithQueryParams; + public event EventHandler? OnTestBodyWithQueryParams; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestBodyWithQueryParams; - internal void ExecuteOnTestBodyWithQueryParams(ApiResponse apiResponse) + internal void ExecuteOnTestBodyWithQueryParams(FakeApi.TestBodyWithQueryParamsApiResponse apiResponse) { - OnTestBodyWithQueryParams?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestBodyWithQueryParams?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestBodyWithQueryParams(Exception exception) @@ -641,16 +844,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestClientModel; + public event EventHandler? OnTestClientModel; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestClientModel; - internal void ExecuteOnTestClientModel(ApiResponse apiResponse) + internal void ExecuteOnTestClientModel(FakeApi.TestClientModelApiResponse apiResponse) { - OnTestClientModel?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestClientModel?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestClientModel(Exception exception) @@ -661,16 +864,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestEndpointParameters; + public event EventHandler? OnTestEndpointParameters; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestEndpointParameters; - internal void ExecuteOnTestEndpointParameters(ApiResponse apiResponse) + internal void ExecuteOnTestEndpointParameters(FakeApi.TestEndpointParametersApiResponse apiResponse) { - OnTestEndpointParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestEndpointParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestEndpointParameters(Exception exception) @@ -681,16 +884,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestEnumParameters; + public event EventHandler? OnTestEnumParameters; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestEnumParameters; - internal void ExecuteOnTestEnumParameters(ApiResponse apiResponse) + internal void ExecuteOnTestEnumParameters(FakeApi.TestEnumParametersApiResponse apiResponse) { - OnTestEnumParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestEnumParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestEnumParameters(Exception exception) @@ -701,16 +904,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestGroupParameters; + public event EventHandler? OnTestGroupParameters; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestGroupParameters; - internal void ExecuteOnTestGroupParameters(ApiResponse apiResponse) + internal void ExecuteOnTestGroupParameters(FakeApi.TestGroupParametersApiResponse apiResponse) { - OnTestGroupParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestGroupParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestGroupParameters(Exception exception) @@ -721,16 +924,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestInlineAdditionalProperties; + public event EventHandler? OnTestInlineAdditionalProperties; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestInlineAdditionalProperties; - internal void ExecuteOnTestInlineAdditionalProperties(ApiResponse apiResponse) + internal void ExecuteOnTestInlineAdditionalProperties(FakeApi.TestInlineAdditionalPropertiesApiResponse apiResponse) { - OnTestInlineAdditionalProperties?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestInlineAdditionalProperties?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestInlineAdditionalProperties(Exception exception) @@ -741,16 +944,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestInlineFreeformAdditionalProperties; + public event EventHandler? OnTestInlineFreeformAdditionalProperties; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestInlineFreeformAdditionalProperties; - internal void ExecuteOnTestInlineFreeformAdditionalProperties(ApiResponse apiResponse) + internal void ExecuteOnTestInlineFreeformAdditionalProperties(FakeApi.TestInlineFreeformAdditionalPropertiesApiResponse apiResponse) { - OnTestInlineFreeformAdditionalProperties?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestInlineFreeformAdditionalProperties?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestInlineFreeformAdditionalProperties(Exception exception) @@ -761,16 +964,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestJsonFormData; + public event EventHandler? OnTestJsonFormData; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestJsonFormData; - internal void ExecuteOnTestJsonFormData(ApiResponse apiResponse) + internal void ExecuteOnTestJsonFormData(FakeApi.TestJsonFormDataApiResponse apiResponse) { - OnTestJsonFormData?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestJsonFormData?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestJsonFormData(Exception exception) @@ -781,16 +984,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnTestQueryParameterCollectionFormat; + public event EventHandler? OnTestQueryParameterCollectionFormat; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestQueryParameterCollectionFormat; - internal void ExecuteOnTestQueryParameterCollectionFormat(ApiResponse apiResponse) + internal void ExecuteOnTestQueryParameterCollectionFormat(FakeApi.TestQueryParameterCollectionFormatApiResponse apiResponse) { - OnTestQueryParameterCollectionFormat?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestQueryParameterCollectionFormat?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestQueryParameterCollectionFormat(Exception exception) @@ -806,6 +1009,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -850,7 +1058,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public FakeApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, FakeApiEvents fakeApiEvents, + public FakeApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, FakeApiEvents fakeApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -858,7 +1066,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = fakeApiEvents; ApiKeyProvider = apiKeyProvider; @@ -872,7 +1081,7 @@ namespace Org.OpenAPITools.Api /// Processes the server response /// /// - private void AfterFakeHealthGetDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterFakeHealthGetDefaultImplementation(IFakeHealthGetApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterFakeHealthGet(ref suppressDefaultLog, apiResponseLocalVar); @@ -885,7 +1094,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFakeHealthGet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterFakeHealthGet(ref bool suppressDefaultLog, IFakeHealthGetApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -914,8 +1123,8 @@ namespace Org.OpenAPITools.Api /// Health check endpoint /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> FakeHealthGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeHealthGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -932,8 +1141,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -965,7 +1174,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/health", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeHealthGetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/health", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeHealthGetDefaultImplementation(apiResponseLocalVar); @@ -983,6 +1194,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FakeHealthGetApiResponse : Org.OpenAPITools.Client.ApiResponse, IFakeHealthGetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeHealthGetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.HealthCheckResult? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.HealthCheckResult? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFakeOuterBooleanSerialize(ref Option body); /// @@ -990,7 +1278,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFakeOuterBooleanSerializeDefaultImplementation(ApiResponse apiResponseLocalVar, Option body) + private void AfterFakeOuterBooleanSerializeDefaultImplementation(IFakeOuterBooleanSerializeApiResponse apiResponseLocalVar, Option body) { bool suppressDefaultLog = false; AfterFakeOuterBooleanSerialize(ref suppressDefaultLog, apiResponseLocalVar, body); @@ -1004,7 +1292,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFakeOuterBooleanSerialize(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Option body); + partial void AfterFakeOuterBooleanSerialize(ref bool suppressDefaultLog, IFakeOuterBooleanSerializeApiResponse apiResponseLocalVar, Option body); /// /// Logs exceptions that occur while retrieving the server response @@ -1036,8 +1324,8 @@ namespace Org.OpenAPITools.Api /// /// Input boolean as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> FakeOuterBooleanSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterBooleanSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1055,8 +1343,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input boolean as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterBooleanSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterBooleanSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1104,7 +1392,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/boolean", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeOuterBooleanSerializeApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/boolean", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeOuterBooleanSerializeDefaultImplementation(apiResponseLocalVar, body); @@ -1122,6 +1412,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FakeOuterBooleanSerializeApiResponse : Org.OpenAPITools.Client.ApiResponse, IFakeOuterBooleanSerializeApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeOuterBooleanSerializeApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public bool? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out bool? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFakeOuterCompositeSerialize(Option outerComposite); /// @@ -1140,7 +1507,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFakeOuterCompositeSerializeDefaultImplementation(ApiResponse apiResponseLocalVar, Option outerComposite) + private void AfterFakeOuterCompositeSerializeDefaultImplementation(IFakeOuterCompositeSerializeApiResponse apiResponseLocalVar, Option outerComposite) { bool suppressDefaultLog = false; AfterFakeOuterCompositeSerialize(ref suppressDefaultLog, apiResponseLocalVar, outerComposite); @@ -1154,7 +1521,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFakeOuterCompositeSerialize(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Option outerComposite); + partial void AfterFakeOuterCompositeSerialize(ref bool suppressDefaultLog, IFakeOuterCompositeSerializeApiResponse apiResponseLocalVar, Option outerComposite); /// /// Logs exceptions that occur while retrieving the server response @@ -1186,8 +1553,8 @@ namespace Org.OpenAPITools.Api /// /// Input composite as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> FakeOuterCompositeSerializeOrDefaultAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterCompositeSerializeOrDefaultAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1205,8 +1572,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input composite as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterCompositeSerializeAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterCompositeSerializeAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1256,7 +1623,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/composite", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeOuterCompositeSerializeApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/composite", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeOuterCompositeSerializeDefaultImplementation(apiResponseLocalVar, outerComposite); @@ -1274,6 +1643,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FakeOuterCompositeSerializeApiResponse : Org.OpenAPITools.Client.ApiResponse, IFakeOuterCompositeSerializeApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeOuterCompositeSerializeApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.OuterComposite? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.OuterComposite? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFakeOuterNumberSerialize(ref Option body); /// @@ -1281,7 +1727,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFakeOuterNumberSerializeDefaultImplementation(ApiResponse apiResponseLocalVar, Option body) + private void AfterFakeOuterNumberSerializeDefaultImplementation(IFakeOuterNumberSerializeApiResponse apiResponseLocalVar, Option body) { bool suppressDefaultLog = false; AfterFakeOuterNumberSerialize(ref suppressDefaultLog, apiResponseLocalVar, body); @@ -1295,7 +1741,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFakeOuterNumberSerialize(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Option body); + partial void AfterFakeOuterNumberSerialize(ref bool suppressDefaultLog, IFakeOuterNumberSerializeApiResponse apiResponseLocalVar, Option body); /// /// Logs exceptions that occur while retrieving the server response @@ -1327,8 +1773,8 @@ namespace Org.OpenAPITools.Api /// /// Input number as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> FakeOuterNumberSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterNumberSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1346,8 +1792,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input number as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterNumberSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterNumberSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1395,7 +1841,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/number", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeOuterNumberSerializeApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/number", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeOuterNumberSerializeDefaultImplementation(apiResponseLocalVar, body); @@ -1413,6 +1861,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FakeOuterNumberSerializeApiResponse : Org.OpenAPITools.Client.ApiResponse, IFakeOuterNumberSerializeApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeOuterNumberSerializeApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public decimal? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out decimal? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFakeOuterStringSerialize(ref Guid requiredStringUuid, ref Option body); /// @@ -1432,7 +1957,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFakeOuterStringSerializeDefaultImplementation(ApiResponse apiResponseLocalVar, Guid requiredStringUuid, Option body) + private void AfterFakeOuterStringSerializeDefaultImplementation(IFakeOuterStringSerializeApiResponse apiResponseLocalVar, Guid requiredStringUuid, Option body) { bool suppressDefaultLog = false; AfterFakeOuterStringSerialize(ref suppressDefaultLog, apiResponseLocalVar, requiredStringUuid, body); @@ -1447,7 +1972,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFakeOuterStringSerialize(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Guid requiredStringUuid, Option body); + partial void AfterFakeOuterStringSerialize(ref bool suppressDefaultLog, IFakeOuterStringSerializeApiResponse apiResponseLocalVar, Guid requiredStringUuid, Option body); /// /// Logs exceptions that occur while retrieving the server response @@ -1482,8 +2007,8 @@ namespace Org.OpenAPITools.Api /// Required UUID String /// Input string as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> FakeOuterStringSerializeOrDefaultAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterStringSerializeOrDefaultAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1502,8 +2027,8 @@ namespace Org.OpenAPITools.Api /// Required UUID String /// Input string as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterStringSerializeAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterStringSerializeAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1559,7 +2084,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/string", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeOuterStringSerializeApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/string", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeOuterStringSerializeDefaultImplementation(apiResponseLocalVar, requiredStringUuid, body); @@ -1577,11 +2104,88 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FakeOuterStringSerializeApiResponse : Org.OpenAPITools.Client.ApiResponse, IFakeOuterStringSerializeApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeOuterStringSerializeApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public string? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out string? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterGetArrayOfEnumsDefaultImplementation(ApiResponse> apiResponseLocalVar) + private void AfterGetArrayOfEnumsDefaultImplementation(IGetArrayOfEnumsApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterGetArrayOfEnums(ref suppressDefaultLog, apiResponseLocalVar); @@ -1594,7 +2198,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetArrayOfEnums(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar); + partial void AfterGetArrayOfEnums(ref bool suppressDefaultLog, IGetArrayOfEnumsApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -1623,8 +2227,8 @@ namespace Org.OpenAPITools.Api /// Array of Enums /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>?> GetArrayOfEnumsOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetArrayOfEnumsOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -1641,8 +2245,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1674,7 +2278,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/array-of-enums", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetArrayOfEnumsApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/array-of-enums", requestedAtLocalVar, _jsonSerializerOptions); AfterGetArrayOfEnumsDefaultImplementation(apiResponseLocalVar); @@ -1692,6 +2298,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetArrayOfEnumsApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetArrayOfEnumsApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetArrayOfEnumsApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out List? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestBodyWithFileSchema(FileSchemaTestClass fileSchemaTestClass); /// @@ -1710,7 +2393,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestBodyWithFileSchemaDefaultImplementation(ApiResponse apiResponseLocalVar, FileSchemaTestClass fileSchemaTestClass) + private void AfterTestBodyWithFileSchemaDefaultImplementation(ITestBodyWithFileSchemaApiResponse apiResponseLocalVar, FileSchemaTestClass fileSchemaTestClass) { bool suppressDefaultLog = false; AfterTestBodyWithFileSchema(ref suppressDefaultLog, apiResponseLocalVar, fileSchemaTestClass); @@ -1724,7 +2407,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestBodyWithFileSchema(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, FileSchemaTestClass fileSchemaTestClass); + partial void AfterTestBodyWithFileSchema(ref bool suppressDefaultLog, ITestBodyWithFileSchemaApiResponse apiResponseLocalVar, FileSchemaTestClass fileSchemaTestClass); /// /// Logs exceptions that occur while retrieving the server response @@ -1756,8 +2439,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestBodyWithFileSchemaOrDefaultAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestBodyWithFileSchemaOrDefaultAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1775,8 +2458,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1816,7 +2499,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/body-with-file-schema", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestBodyWithFileSchemaApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/body-with-file-schema", requestedAtLocalVar, _jsonSerializerOptions); AfterTestBodyWithFileSchemaDefaultImplementation(apiResponseLocalVar, fileSchemaTestClass); @@ -1834,6 +2519,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestBodyWithFileSchemaApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestBodyWithFileSchemaApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestBodyWithFileSchemaApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestBodyWithQueryParams(User user, ref string query); /// @@ -1857,7 +2587,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestBodyWithQueryParamsDefaultImplementation(ApiResponse apiResponseLocalVar, User user, string query) + private void AfterTestBodyWithQueryParamsDefaultImplementation(ITestBodyWithQueryParamsApiResponse apiResponseLocalVar, User user, string query) { bool suppressDefaultLog = false; AfterTestBodyWithQueryParams(ref suppressDefaultLog, apiResponseLocalVar, user, query); @@ -1872,7 +2602,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestBodyWithQueryParams(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, User user, string query); + partial void AfterTestBodyWithQueryParams(ref bool suppressDefaultLog, ITestBodyWithQueryParamsApiResponse apiResponseLocalVar, User user, string query); /// /// Logs exceptions that occur while retrieving the server response @@ -1907,8 +2637,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestBodyWithQueryParamsOrDefaultAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestBodyWithQueryParamsOrDefaultAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1927,8 +2657,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestBodyWithQueryParamsAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestBodyWithQueryParamsAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1974,7 +2704,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/body-with-query-params", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestBodyWithQueryParamsApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/body-with-query-params", requestedAtLocalVar, _jsonSerializerOptions); AfterTestBodyWithQueryParamsDefaultImplementation(apiResponseLocalVar, user, query); @@ -1992,6 +2724,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestBodyWithQueryParamsApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestBodyWithQueryParamsApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestBodyWithQueryParamsApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestClientModel(ModelClient modelClient); /// @@ -2010,7 +2787,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestClientModelDefaultImplementation(ApiResponse apiResponseLocalVar, ModelClient modelClient) + private void AfterTestClientModelDefaultImplementation(ITestClientModelApiResponse apiResponseLocalVar, ModelClient modelClient) { bool suppressDefaultLog = false; AfterTestClientModel(ref suppressDefaultLog, apiResponseLocalVar, modelClient); @@ -2024,7 +2801,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestClientModel(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, ModelClient modelClient); + partial void AfterTestClientModel(ref bool suppressDefaultLog, ITestClientModelApiResponse apiResponseLocalVar, ModelClient modelClient); /// /// Logs exceptions that occur while retrieving the server response @@ -2056,8 +2833,8 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestClientModelOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestClientModelOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2075,8 +2852,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2125,7 +2902,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestClientModelApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); AfterTestClientModelDefaultImplementation(apiResponseLocalVar, modelClient); @@ -2143,6 +2922,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestClientModelApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestClientModelApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestClientModelApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.ModelClient? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.ModelClient? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestEndpointParameters(ref byte[] varByte, ref decimal number, ref double varDouble, ref string patternWithoutDelimiter, ref Option date, ref Option binary, ref Option varFloat, ref Option integer, ref Option int32, ref Option int64, ref Option varString, ref Option password, ref Option callback, ref Option dateTime); /// @@ -2194,7 +3050,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestEndpointParametersDefaultImplementation(ApiResponse apiResponseLocalVar, byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date, Option binary, Option varFloat, Option integer, Option int32, Option int64, Option varString, Option password, Option callback, Option dateTime) + private void AfterTestEndpointParametersDefaultImplementation(ITestEndpointParametersApiResponse apiResponseLocalVar, byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date, Option binary, Option varFloat, Option integer, Option int32, Option int64, Option varString, Option password, Option callback, Option dateTime) { bool suppressDefaultLog = false; AfterTestEndpointParameters(ref suppressDefaultLog, apiResponseLocalVar, varByte, number, varDouble, patternWithoutDelimiter, date, binary, varFloat, integer, int32, int64, varString, password, callback, dateTime); @@ -2221,7 +3077,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestEndpointParameters(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date, Option binary, Option varFloat, Option integer, Option int32, Option int64, Option varString, Option password, Option callback, Option dateTime); + partial void AfterTestEndpointParameters(ref bool suppressDefaultLog, ITestEndpointParametersApiResponse apiResponseLocalVar, byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date, Option binary, Option varFloat, Option integer, Option int32, Option int64, Option varString, Option password, Option callback, Option dateTime); /// /// Logs exceptions that occur while retrieving the server response @@ -2292,8 +3148,8 @@ namespace Org.OpenAPITools.Api /// None (optional) /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestEndpointParametersOrDefaultAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestEndpointParametersOrDefaultAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2324,8 +3180,8 @@ namespace Org.OpenAPITools.Api /// None (optional) /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestEndpointParametersAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestEndpointParametersAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2415,7 +3271,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestEndpointParametersApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); AfterTestEndpointParametersDefaultImplementation(apiResponseLocalVar, varByte, number, varDouble, patternWithoutDelimiter, date, binary, varFloat, integer, int32, int64, varString, password, callback, dateTime); @@ -2437,6 +3295,57 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestEndpointParametersApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestEndpointParametersApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestEndpointParametersApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestEnumParameters(Option> enumHeaderStringArray, Option> enumQueryStringArray, ref Option enumQueryDouble, ref Option enumQueryInteger, Option> enumFormStringArray, ref Option enumHeaderString, ref Option enumQueryString, ref Option enumFormString); /// @@ -2482,7 +3391,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestEnumParametersDefaultImplementation(ApiResponse apiResponseLocalVar, Option> enumHeaderStringArray, Option> enumQueryStringArray, Option enumQueryDouble, Option enumQueryInteger, Option> enumFormStringArray, Option enumHeaderString, Option enumQueryString, Option enumFormString) + private void AfterTestEnumParametersDefaultImplementation(ITestEnumParametersApiResponse apiResponseLocalVar, Option> enumHeaderStringArray, Option> enumQueryStringArray, Option enumQueryDouble, Option enumQueryInteger, Option> enumFormStringArray, Option enumHeaderString, Option enumQueryString, Option enumFormString) { bool suppressDefaultLog = false; AfterTestEnumParameters(ref suppressDefaultLog, apiResponseLocalVar, enumHeaderStringArray, enumQueryStringArray, enumQueryDouble, enumQueryInteger, enumFormStringArray, enumHeaderString, enumQueryString, enumFormString); @@ -2503,7 +3412,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestEnumParameters(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Option> enumHeaderStringArray, Option> enumQueryStringArray, Option enumQueryDouble, Option enumQueryInteger, Option> enumFormStringArray, Option enumHeaderString, Option enumQueryString, Option enumFormString); + partial void AfterTestEnumParameters(ref bool suppressDefaultLog, ITestEnumParametersApiResponse apiResponseLocalVar, Option> enumHeaderStringArray, Option> enumQueryStringArray, Option enumQueryDouble, Option enumQueryInteger, Option> enumFormStringArray, Option enumHeaderString, Option enumQueryString, Option enumFormString); /// /// Logs exceptions that occur while retrieving the server response @@ -2556,8 +3465,8 @@ namespace Org.OpenAPITools.Api /// Query parameter enum test (string) (optional, default to -efg) /// Form parameter enum test (string) (optional, default to -efg) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestEnumParametersOrDefaultAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestEnumParametersOrDefaultAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2582,8 +3491,8 @@ namespace Org.OpenAPITools.Api /// Query parameter enum test (string) (optional, default to -efg) /// Form parameter enum test (string) (optional, default to -efg) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestEnumParametersAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestEnumParametersAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2653,7 +3562,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestEnumParametersApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); AfterTestEnumParametersDefaultImplementation(apiResponseLocalVar, enumHeaderStringArray, enumQueryStringArray, enumQueryDouble, enumQueryInteger, enumFormStringArray, enumHeaderString, enumQueryString, enumFormString); @@ -2671,6 +3582,57 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestEnumParametersApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestEnumParametersApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestEnumParametersApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestGroupParameters(ref bool requiredBooleanGroup, ref int requiredStringGroup, ref long requiredInt64Group, ref Option booleanGroup, ref Option stringGroup, ref Option int64Group); /// @@ -2683,7 +3645,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestGroupParametersDefaultImplementation(ApiResponse apiResponseLocalVar, bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup, Option stringGroup, Option int64Group) + private void AfterTestGroupParametersDefaultImplementation(ITestGroupParametersApiResponse apiResponseLocalVar, bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup, Option stringGroup, Option int64Group) { bool suppressDefaultLog = false; AfterTestGroupParameters(ref suppressDefaultLog, apiResponseLocalVar, requiredBooleanGroup, requiredStringGroup, requiredInt64Group, booleanGroup, stringGroup, int64Group); @@ -2702,7 +3664,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestGroupParameters(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup, Option stringGroup, Option int64Group); + partial void AfterTestGroupParameters(ref bool suppressDefaultLog, ITestGroupParametersApiResponse apiResponseLocalVar, bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup, Option stringGroup, Option int64Group); /// /// Logs exceptions that occur while retrieving the server response @@ -2749,8 +3711,8 @@ namespace Org.OpenAPITools.Api /// String in group parameters (optional) /// Integer in group parameters (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestGroupParametersOrDefaultAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestGroupParametersOrDefaultAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2773,8 +3735,8 @@ namespace Org.OpenAPITools.Api /// String in group parameters (optional) /// Integer in group parameters (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestGroupParametersAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestGroupParametersAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2825,7 +3787,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestGroupParametersApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); AfterTestGroupParametersDefaultImplementation(apiResponseLocalVar, requiredBooleanGroup, requiredStringGroup, requiredInt64Group, booleanGroup, stringGroup, int64Group); @@ -2847,6 +3811,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestGroupParametersApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestGroupParametersApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestGroupParametersApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestInlineAdditionalProperties(Dictionary requestBody); /// @@ -2865,7 +3874,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestInlineAdditionalPropertiesDefaultImplementation(ApiResponse apiResponseLocalVar, Dictionary requestBody) + private void AfterTestInlineAdditionalPropertiesDefaultImplementation(ITestInlineAdditionalPropertiesApiResponse apiResponseLocalVar, Dictionary requestBody) { bool suppressDefaultLog = false; AfterTestInlineAdditionalProperties(ref suppressDefaultLog, apiResponseLocalVar, requestBody); @@ -2879,7 +3888,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestInlineAdditionalProperties(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Dictionary requestBody); + partial void AfterTestInlineAdditionalProperties(ref bool suppressDefaultLog, ITestInlineAdditionalPropertiesApiResponse apiResponseLocalVar, Dictionary requestBody); /// /// Logs exceptions that occur while retrieving the server response @@ -2911,8 +3920,8 @@ namespace Org.OpenAPITools.Api /// /// request body /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestInlineAdditionalPropertiesOrDefaultAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestInlineAdditionalPropertiesOrDefaultAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2930,8 +3939,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// request body /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2971,7 +3980,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/inline-additionalProperties", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestInlineAdditionalPropertiesApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/inline-additionalProperties", requestedAtLocalVar, _jsonSerializerOptions); AfterTestInlineAdditionalPropertiesDefaultImplementation(apiResponseLocalVar, requestBody); @@ -2989,6 +4000,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestInlineAdditionalPropertiesApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestInlineAdditionalPropertiesApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestInlineAdditionalPropertiesApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestInlineFreeformAdditionalProperties(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest); /// @@ -3007,7 +4063,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestInlineFreeformAdditionalPropertiesDefaultImplementation(ApiResponse apiResponseLocalVar, TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest) + private void AfterTestInlineFreeformAdditionalPropertiesDefaultImplementation(ITestInlineFreeformAdditionalPropertiesApiResponse apiResponseLocalVar, TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest) { bool suppressDefaultLog = false; AfterTestInlineFreeformAdditionalProperties(ref suppressDefaultLog, apiResponseLocalVar, testInlineFreeformAdditionalPropertiesRequest); @@ -3021,7 +4077,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestInlineFreeformAdditionalProperties(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest); + partial void AfterTestInlineFreeformAdditionalProperties(ref bool suppressDefaultLog, ITestInlineFreeformAdditionalPropertiesApiResponse apiResponseLocalVar, TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest); /// /// Logs exceptions that occur while retrieving the server response @@ -3053,8 +4109,8 @@ namespace Org.OpenAPITools.Api /// /// request body /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestInlineFreeformAdditionalPropertiesOrDefaultAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestInlineFreeformAdditionalPropertiesOrDefaultAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default) { try { @@ -3072,8 +4128,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// request body /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestInlineFreeformAdditionalPropertiesAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestInlineFreeformAdditionalPropertiesAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -3113,7 +4169,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/inline-freeform-additionalProperties", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestInlineFreeformAdditionalPropertiesApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/inline-freeform-additionalProperties", requestedAtLocalVar, _jsonSerializerOptions); AfterTestInlineFreeformAdditionalPropertiesDefaultImplementation(apiResponseLocalVar, testInlineFreeformAdditionalPropertiesRequest); @@ -3131,6 +4189,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestInlineFreeformAdditionalPropertiesApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestInlineFreeformAdditionalPropertiesApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestInlineFreeformAdditionalPropertiesApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestJsonFormData(ref string param, ref string param2); /// @@ -3154,7 +4257,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestJsonFormDataDefaultImplementation(ApiResponse apiResponseLocalVar, string param, string param2) + private void AfterTestJsonFormDataDefaultImplementation(ITestJsonFormDataApiResponse apiResponseLocalVar, string param, string param2) { bool suppressDefaultLog = false; AfterTestJsonFormData(ref suppressDefaultLog, apiResponseLocalVar, param, param2); @@ -3169,7 +4272,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestJsonFormData(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string param, string param2); + partial void AfterTestJsonFormData(ref bool suppressDefaultLog, ITestJsonFormDataApiResponse apiResponseLocalVar, string param, string param2); /// /// Logs exceptions that occur while retrieving the server response @@ -3204,8 +4307,8 @@ namespace Org.OpenAPITools.Api /// field1 /// field2 /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestJsonFormDataOrDefaultAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestJsonFormDataOrDefaultAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default) { try { @@ -3224,8 +4327,8 @@ namespace Org.OpenAPITools.Api /// field1 /// field2 /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -3273,7 +4376,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/jsonFormData", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestJsonFormDataApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/jsonFormData", requestedAtLocalVar, _jsonSerializerOptions); AfterTestJsonFormDataDefaultImplementation(apiResponseLocalVar, param, param2); @@ -3291,6 +4396,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestJsonFormDataApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestJsonFormDataApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestJsonFormDataApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestQueryParameterCollectionFormat(List pipe, List ioutil, List http, List url, List context, ref string requiredNotNullable, ref string? requiredNullable, ref Option notRequiredNotNullable, ref Option notRequiredNullable); /// @@ -3341,7 +4491,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestQueryParameterCollectionFormatDefaultImplementation(ApiResponse apiResponseLocalVar, List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable, Option notRequiredNotNullable, Option notRequiredNullable) + private void AfterTestQueryParameterCollectionFormatDefaultImplementation(ITestQueryParameterCollectionFormatApiResponse apiResponseLocalVar, List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable, Option notRequiredNotNullable, Option notRequiredNullable) { bool suppressDefaultLog = false; AfterTestQueryParameterCollectionFormat(ref suppressDefaultLog, apiResponseLocalVar, pipe, ioutil, http, url, context, requiredNotNullable, requiredNullable, notRequiredNotNullable, notRequiredNullable); @@ -3363,7 +4513,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestQueryParameterCollectionFormat(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable, Option notRequiredNotNullable, Option notRequiredNullable); + partial void AfterTestQueryParameterCollectionFormat(ref bool suppressDefaultLog, ITestQueryParameterCollectionFormatApiResponse apiResponseLocalVar, List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable, Option notRequiredNotNullable, Option notRequiredNullable); /// /// Logs exceptions that occur while retrieving the server response @@ -3419,8 +4569,8 @@ namespace Org.OpenAPITools.Api /// (optional) /// (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestQueryParameterCollectionFormatOrDefaultAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestQueryParameterCollectionFormatOrDefaultAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -3446,8 +4596,8 @@ namespace Org.OpenAPITools.Api /// (optional) /// (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string? requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -3492,7 +4642,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/test-query-parameters", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestQueryParameterCollectionFormatApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/test-query-parameters", requestedAtLocalVar, _jsonSerializerOptions); AfterTestQueryParameterCollectionFormatDefaultImplementation(apiResponseLocalVar, pipe, ioutil, http, url, context, requiredNotNullable, requiredNullable, notRequiredNotNullable, notRequiredNullable); @@ -3509,5 +4661,50 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class TestQueryParameterCollectionFormatApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestQueryParameterCollectionFormatApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestQueryParameterCollectionFormatApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 15aa3daba402..08d34ad36723 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -44,8 +44,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ModelClient>> - Task> TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); /// /// To test class name in snake case @@ -55,29 +55,40 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ModelClient>?> - Task?> TestClassnameOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task TestClassnameOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface ITestClassnameApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class FakeClassnameTags123ApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnTestClassname; + public event EventHandler? OnTestClassname; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorTestClassname; - internal void ExecuteOnTestClassname(ApiResponse apiResponse) + internal void ExecuteOnTestClassname(FakeClassnameTags123Api.TestClassnameApiResponse apiResponse) { - OnTestClassname?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestClassname?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestClassname(Exception exception) @@ -93,6 +104,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -137,7 +153,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public FakeClassnameTags123Api(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, FakeClassnameTags123ApiEvents fakeClassnameTags123ApiEvents, + public FakeClassnameTags123Api(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, FakeClassnameTags123ApiEvents fakeClassnameTags123ApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -145,7 +161,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = fakeClassnameTags123ApiEvents; ApiKeyProvider = apiKeyProvider; @@ -173,7 +190,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestClassnameDefaultImplementation(ApiResponse apiResponseLocalVar, ModelClient modelClient) + private void AfterTestClassnameDefaultImplementation(ITestClassnameApiResponse apiResponseLocalVar, ModelClient modelClient) { bool suppressDefaultLog = false; AfterTestClassname(ref suppressDefaultLog, apiResponseLocalVar, modelClient); @@ -187,7 +204,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestClassname(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, ModelClient modelClient); + partial void AfterTestClassname(ref bool suppressDefaultLog, ITestClassnameApiResponse apiResponseLocalVar, ModelClient modelClient); /// /// Logs exceptions that occur while retrieving the server response @@ -219,8 +236,8 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> TestClassnameOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestClassnameOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { try { @@ -238,8 +255,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -299,7 +316,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake_classname_test", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestClassnameApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake_classname_test", requestedAtLocalVar, _jsonSerializerOptions); AfterTestClassnameDefaultImplementation(apiResponseLocalVar, modelClient); @@ -320,5 +339,82 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class TestClassnameApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestClassnameApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestClassnameApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.ModelClient? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.ModelClient? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/PetApi.cs index a80b68cecd50..0dfc6c7d534a 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/PetApi.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -44,8 +44,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); /// /// Add a new pet to the store @@ -55,8 +55,8 @@ namespace Org.OpenAPITools.Api /// /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> AddPetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task AddPetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); /// /// Deletes a pet @@ -68,8 +68,8 @@ namespace Org.OpenAPITools.Api /// Pet id to delete /// (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> DeletePetAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeletePetAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default); /// /// Deletes a pet @@ -80,8 +80,8 @@ namespace Org.OpenAPITools.Api /// Pet id to delete /// (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> DeletePetOrDefaultAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task DeletePetOrDefaultAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default); /// /// Finds Pets by status @@ -92,8 +92,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Status values that need to be considered for filter /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<Pet>>> - Task>> FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default); /// /// Finds Pets by status @@ -103,8 +103,8 @@ namespace Org.OpenAPITools.Api /// /// Status values that need to be considered for filter /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<Pet>>?> - Task>?> FindPetsByStatusOrDefaultAsync(List status, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task FindPetsByStatusOrDefaultAsync(List status, System.Threading.CancellationToken cancellationToken = default); /// /// Finds Pets by tags @@ -115,8 +115,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Tags to filter by /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<Pet>>> - Task>> FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default); /// /// Finds Pets by tags @@ -126,8 +126,8 @@ namespace Org.OpenAPITools.Api /// /// Tags to filter by /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<Pet>>?> - Task>?> FindPetsByTagsOrDefaultAsync(List tags, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task FindPetsByTagsOrDefaultAsync(List tags, System.Threading.CancellationToken cancellationToken = default); /// /// Find pet by ID @@ -138,8 +138,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of pet to return /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Pet>> - Task> GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default); /// /// Find pet by ID @@ -149,8 +149,8 @@ namespace Org.OpenAPITools.Api /// /// ID of pet to return /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Pet>?> - Task?> GetPetByIdOrDefaultAsync(long petId, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task GetPetByIdOrDefaultAsync(long petId, System.Threading.CancellationToken cancellationToken = default); /// /// Update an existing pet @@ -161,8 +161,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); /// /// Update an existing pet @@ -172,8 +172,8 @@ namespace Org.OpenAPITools.Api /// /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> UpdatePetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task UpdatePetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); /// /// Updates a pet in the store with form data @@ -186,8 +186,8 @@ namespace Org.OpenAPITools.Api /// Updated name of the pet (optional) /// Updated status of the pet (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> UpdatePetWithFormAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdatePetWithFormAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default); /// /// Updates a pet in the store with form data @@ -199,8 +199,8 @@ namespace Org.OpenAPITools.Api /// Updated name of the pet (optional) /// Updated status of the pet (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> UpdatePetWithFormOrDefaultAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task UpdatePetWithFormOrDefaultAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default); /// /// uploads an image @@ -213,8 +213,8 @@ namespace Org.OpenAPITools.Api /// file to upload (optional) /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ApiResponse>> - Task> UploadFileAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UploadFileAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); /// /// uploads an image @@ -226,8 +226,8 @@ namespace Org.OpenAPITools.Api /// file to upload (optional) /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ApiResponse>?> - Task?> UploadFileOrDefaultAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task UploadFileOrDefaultAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); /// /// uploads an image (required) @@ -240,8 +240,8 @@ namespace Org.OpenAPITools.Api /// ID of pet to update /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ApiResponse>> - Task> UploadFileWithRequiredFileAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UploadFileWithRequiredFileAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); /// /// uploads an image (required) @@ -253,29 +253,172 @@ namespace Org.OpenAPITools.Api /// ID of pet to update /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ApiResponse>?> - Task?> UploadFileWithRequiredFileOrDefaultAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task UploadFileWithRequiredFileOrDefaultAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IAddPetApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + bool IsMethodNotAllowed { get; } + } + + /// + /// The + /// + public interface IDeletePetApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface IFindPetsByStatusApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk?> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface IFindPetsByTagsApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk?> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface IGetPetByIdApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface IUpdatePetApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + bool IsMethodNotAllowed { get; } + } + + /// + /// The + /// + public interface IUpdatePetWithFormApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + bool IsMethodNotAllowed { get; } + } + + /// + /// The + /// + public interface IUploadFileApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IUploadFileWithRequiredFileApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class PetApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnAddPet; + public event EventHandler? OnAddPet; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorAddPet; - internal void ExecuteOnAddPet(ApiResponse apiResponse) + internal void ExecuteOnAddPet(PetApi.AddPetApiResponse apiResponse) { - OnAddPet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnAddPet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorAddPet(Exception exception) @@ -286,16 +429,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnDeletePet; + public event EventHandler? OnDeletePet; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorDeletePet; - internal void ExecuteOnDeletePet(ApiResponse apiResponse) + internal void ExecuteOnDeletePet(PetApi.DeletePetApiResponse apiResponse) { - OnDeletePet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnDeletePet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorDeletePet(Exception exception) @@ -306,16 +449,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>>? OnFindPetsByStatus; + public event EventHandler? OnFindPetsByStatus; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorFindPetsByStatus; - internal void ExecuteOnFindPetsByStatus(ApiResponse> apiResponse) + internal void ExecuteOnFindPetsByStatus(PetApi.FindPetsByStatusApiResponse apiResponse) { - OnFindPetsByStatus?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnFindPetsByStatus?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFindPetsByStatus(Exception exception) @@ -326,16 +469,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>>? OnFindPetsByTags; + public event EventHandler? OnFindPetsByTags; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorFindPetsByTags; - internal void ExecuteOnFindPetsByTags(ApiResponse> apiResponse) + internal void ExecuteOnFindPetsByTags(PetApi.FindPetsByTagsApiResponse apiResponse) { - OnFindPetsByTags?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnFindPetsByTags?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFindPetsByTags(Exception exception) @@ -346,16 +489,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnGetPetById; + public event EventHandler? OnGetPetById; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorGetPetById; - internal void ExecuteOnGetPetById(ApiResponse apiResponse) + internal void ExecuteOnGetPetById(PetApi.GetPetByIdApiResponse apiResponse) { - OnGetPetById?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnGetPetById?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetPetById(Exception exception) @@ -366,16 +509,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnUpdatePet; + public event EventHandler? OnUpdatePet; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorUpdatePet; - internal void ExecuteOnUpdatePet(ApiResponse apiResponse) + internal void ExecuteOnUpdatePet(PetApi.UpdatePetApiResponse apiResponse) { - OnUpdatePet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUpdatePet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUpdatePet(Exception exception) @@ -386,16 +529,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnUpdatePetWithForm; + public event EventHandler? OnUpdatePetWithForm; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorUpdatePetWithForm; - internal void ExecuteOnUpdatePetWithForm(ApiResponse apiResponse) + internal void ExecuteOnUpdatePetWithForm(PetApi.UpdatePetWithFormApiResponse apiResponse) { - OnUpdatePetWithForm?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUpdatePetWithForm?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUpdatePetWithForm(Exception exception) @@ -406,16 +549,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnUploadFile; + public event EventHandler? OnUploadFile; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorUploadFile; - internal void ExecuteOnUploadFile(ApiResponse apiResponse) + internal void ExecuteOnUploadFile(PetApi.UploadFileApiResponse apiResponse) { - OnUploadFile?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUploadFile?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUploadFile(Exception exception) @@ -426,16 +569,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnUploadFileWithRequiredFile; + public event EventHandler? OnUploadFileWithRequiredFile; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorUploadFileWithRequiredFile; - internal void ExecuteOnUploadFileWithRequiredFile(ApiResponse apiResponse) + internal void ExecuteOnUploadFileWithRequiredFile(PetApi.UploadFileWithRequiredFileApiResponse apiResponse) { - OnUploadFileWithRequiredFile?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUploadFileWithRequiredFile?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUploadFileWithRequiredFile(Exception exception) @@ -451,6 +594,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -495,7 +643,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public PetApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, PetApiEvents petApiEvents, + public PetApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, PetApiEvents petApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -503,7 +651,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = petApiEvents; ApiKeyProvider = apiKeyProvider; @@ -531,7 +680,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterAddPetDefaultImplementation(ApiResponse apiResponseLocalVar, Pet pet) + private void AfterAddPetDefaultImplementation(IAddPetApiResponse apiResponseLocalVar, Pet pet) { bool suppressDefaultLog = false; AfterAddPet(ref suppressDefaultLog, apiResponseLocalVar, pet); @@ -545,7 +694,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterAddPet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Pet pet); + partial void AfterAddPet(ref bool suppressDefaultLog, IAddPetApiResponse apiResponseLocalVar, Pet pet); /// /// Logs exceptions that occur while retrieving the server response @@ -577,8 +726,8 @@ namespace Org.OpenAPITools.Api /// /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> AddPetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task AddPetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) { try { @@ -596,8 +745,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -656,16 +805,14 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + AddPetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet", requestedAtLocalVar, _jsonSerializerOptions); AfterAddPetDefaultImplementation(apiResponseLocalVar, pet); Events.ExecuteOnAddPet(apiResponseLocalVar); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) - foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) - tokenBaseLocalVar.BeginRateLimit(); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); @@ -682,6 +829,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class AddPetApiResponse : Org.OpenAPITools.Client.ApiResponse, IAddPetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public AddPetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + public bool IsMethodNotAllowed => 405 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatDeletePet(ref long petId, ref Option apiKey); /// @@ -701,7 +893,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterDeletePetDefaultImplementation(ApiResponse apiResponseLocalVar, long petId, Option apiKey) + private void AfterDeletePetDefaultImplementation(IDeletePetApiResponse apiResponseLocalVar, long petId, Option apiKey) { bool suppressDefaultLog = false; AfterDeletePet(ref suppressDefaultLog, apiResponseLocalVar, petId, apiKey); @@ -716,7 +908,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterDeletePet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long petId, Option apiKey); + partial void AfterDeletePet(ref bool suppressDefaultLog, IDeletePetApiResponse apiResponseLocalVar, long petId, Option apiKey); /// /// Logs exceptions that occur while retrieving the server response @@ -751,8 +943,8 @@ namespace Org.OpenAPITools.Api /// Pet id to delete /// (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> DeletePetOrDefaultAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeletePetOrDefaultAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -771,8 +963,8 @@ namespace Org.OpenAPITools.Api /// Pet id to delete /// (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeletePetAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeletePetAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -811,7 +1003,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + DeletePetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); AfterDeletePetDefaultImplementation(apiResponseLocalVar, petId, apiKey); @@ -833,6 +1027,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class DeletePetApiResponse : Org.OpenAPITools.Client.ApiResponse, IDeletePetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public DeletePetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFindPetsByStatus(List status); /// @@ -851,7 +1090,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFindPetsByStatusDefaultImplementation(ApiResponse> apiResponseLocalVar, List status) + private void AfterFindPetsByStatusDefaultImplementation(IFindPetsByStatusApiResponse apiResponseLocalVar, List status) { bool suppressDefaultLog = false; AfterFindPetsByStatus(ref suppressDefaultLog, apiResponseLocalVar, status); @@ -865,7 +1104,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFindPetsByStatus(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar, List status); + partial void AfterFindPetsByStatus(ref bool suppressDefaultLog, IFindPetsByStatusApiResponse apiResponseLocalVar, List status); /// /// Logs exceptions that occur while retrieving the server response @@ -897,8 +1136,8 @@ namespace Org.OpenAPITools.Api /// /// Status values that need to be considered for filter /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>?> FindPetsByStatusOrDefaultAsync(List status, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FindPetsByStatusOrDefaultAsync(List status, System.Threading.CancellationToken cancellationToken = default) { try { @@ -916,8 +1155,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Status values that need to be considered for filter /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -978,16 +1217,14 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/findByStatus", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FindPetsByStatusApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/findByStatus", requestedAtLocalVar, _jsonSerializerOptions); AfterFindPetsByStatusDefaultImplementation(apiResponseLocalVar, status); Events.ExecuteOnFindPetsByStatus(apiResponseLocalVar); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) - foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) - tokenBaseLocalVar.BeginRateLimit(); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); @@ -1004,6 +1241,89 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FindPetsByStatusApiResponse : Org.OpenAPITools.Client.ApiResponse, IFindPetsByStatusApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FindPetsByStatusApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out List? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFindPetsByTags(List tags); /// @@ -1022,7 +1342,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFindPetsByTagsDefaultImplementation(ApiResponse> apiResponseLocalVar, List tags) + private void AfterFindPetsByTagsDefaultImplementation(IFindPetsByTagsApiResponse apiResponseLocalVar, List tags) { bool suppressDefaultLog = false; AfterFindPetsByTags(ref suppressDefaultLog, apiResponseLocalVar, tags); @@ -1036,7 +1356,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFindPetsByTags(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar, List tags); + partial void AfterFindPetsByTags(ref bool suppressDefaultLog, IFindPetsByTagsApiResponse apiResponseLocalVar, List tags); /// /// Logs exceptions that occur while retrieving the server response @@ -1068,8 +1388,8 @@ namespace Org.OpenAPITools.Api /// /// Tags to filter by /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>?> FindPetsByTagsOrDefaultAsync(List tags, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FindPetsByTagsOrDefaultAsync(List tags, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1087,8 +1407,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Tags to filter by /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1149,16 +1469,14 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/findByTags", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FindPetsByTagsApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/findByTags", requestedAtLocalVar, _jsonSerializerOptions); AfterFindPetsByTagsDefaultImplementation(apiResponseLocalVar, tags); Events.ExecuteOnFindPetsByTags(apiResponseLocalVar); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) - foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) - tokenBaseLocalVar.BeginRateLimit(); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); @@ -1175,6 +1493,89 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FindPetsByTagsApiResponse : Org.OpenAPITools.Client.ApiResponse, IFindPetsByTagsApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FindPetsByTagsApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out List? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatGetPetById(ref long petId); /// @@ -1182,7 +1583,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterGetPetByIdDefaultImplementation(ApiResponse apiResponseLocalVar, long petId) + private void AfterGetPetByIdDefaultImplementation(IGetPetByIdApiResponse apiResponseLocalVar, long petId) { bool suppressDefaultLog = false; AfterGetPetById(ref suppressDefaultLog, apiResponseLocalVar, petId); @@ -1196,7 +1597,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetPetById(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long petId); + partial void AfterGetPetById(ref bool suppressDefaultLog, IGetPetByIdApiResponse apiResponseLocalVar, long petId); /// /// Logs exceptions that occur while retrieving the server response @@ -1228,8 +1629,8 @@ namespace Org.OpenAPITools.Api /// /// ID of pet to return /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> GetPetByIdOrDefaultAsync(long petId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetPetByIdOrDefaultAsync(long petId, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1247,8 +1648,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of pet to return /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1292,7 +1693,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetPetByIdApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); AfterGetPetByIdDefaultImplementation(apiResponseLocalVar, petId); @@ -1314,6 +1717,95 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetPetByIdApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetPetByIdApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetPetByIdApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.Pet? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.Pet? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUpdatePet(Pet pet); /// @@ -1332,7 +1824,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterUpdatePetDefaultImplementation(ApiResponse apiResponseLocalVar, Pet pet) + private void AfterUpdatePetDefaultImplementation(IUpdatePetApiResponse apiResponseLocalVar, Pet pet) { bool suppressDefaultLog = false; AfterUpdatePet(ref suppressDefaultLog, apiResponseLocalVar, pet); @@ -1346,7 +1838,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterUpdatePet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Pet pet); + partial void AfterUpdatePet(ref bool suppressDefaultLog, IUpdatePetApiResponse apiResponseLocalVar, Pet pet); /// /// Logs exceptions that occur while retrieving the server response @@ -1378,8 +1870,8 @@ namespace Org.OpenAPITools.Api /// /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> UpdatePetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdatePetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1397,8 +1889,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1457,16 +1949,14 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UpdatePetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet", requestedAtLocalVar, _jsonSerializerOptions); AfterUpdatePetDefaultImplementation(apiResponseLocalVar, pet); Events.ExecuteOnUpdatePet(apiResponseLocalVar); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) - foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) - tokenBaseLocalVar.BeginRateLimit(); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); @@ -1483,6 +1973,63 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class UpdatePetApiResponse : Org.OpenAPITools.Client.ApiResponse, IUpdatePetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UpdatePetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + public bool IsMethodNotAllowed => 405 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUpdatePetWithForm(ref long petId, ref Option name, ref Option status); /// @@ -1507,7 +2054,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterUpdatePetWithFormDefaultImplementation(ApiResponse apiResponseLocalVar, long petId, Option name, Option status) + private void AfterUpdatePetWithFormDefaultImplementation(IUpdatePetWithFormApiResponse apiResponseLocalVar, long petId, Option name, Option status) { bool suppressDefaultLog = false; AfterUpdatePetWithForm(ref suppressDefaultLog, apiResponseLocalVar, petId, name, status); @@ -1523,7 +2070,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterUpdatePetWithForm(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long petId, Option name, Option status); + partial void AfterUpdatePetWithForm(ref bool suppressDefaultLog, IUpdatePetWithFormApiResponse apiResponseLocalVar, long petId, Option name, Option status); /// /// Logs exceptions that occur while retrieving the server response @@ -1561,8 +2108,8 @@ namespace Org.OpenAPITools.Api /// Updated name of the pet (optional) /// Updated status of the pet (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> UpdatePetWithFormOrDefaultAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdatePetWithFormOrDefaultAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1582,8 +2129,8 @@ namespace Org.OpenAPITools.Api /// Updated name of the pet (optional) /// Updated status of the pet (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdatePetWithFormAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdatePetWithFormAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1640,7 +2187,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UpdatePetWithFormApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); AfterUpdatePetWithFormDefaultImplementation(apiResponseLocalVar, petId, name, status); @@ -1662,6 +2211,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class UpdatePetWithFormApiResponse : Org.OpenAPITools.Client.ApiResponse, IUpdatePetWithFormApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UpdatePetWithFormApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + public bool IsMethodNotAllowed => 405 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUploadFile(ref long petId, ref Option file, ref Option additionalMetadata); /// @@ -1686,7 +2280,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterUploadFileDefaultImplementation(ApiResponse apiResponseLocalVar, long petId, Option file, Option additionalMetadata) + private void AfterUploadFileDefaultImplementation(IUploadFileApiResponse apiResponseLocalVar, long petId, Option file, Option additionalMetadata) { bool suppressDefaultLog = false; AfterUploadFile(ref suppressDefaultLog, apiResponseLocalVar, petId, file, additionalMetadata); @@ -1702,7 +2296,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterUploadFile(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long petId, Option file, Option additionalMetadata); + partial void AfterUploadFile(ref bool suppressDefaultLog, IUploadFileApiResponse apiResponseLocalVar, long petId, Option file, Option additionalMetadata); /// /// Logs exceptions that occur while retrieving the server response @@ -1740,8 +2334,8 @@ namespace Org.OpenAPITools.Api /// file to upload (optional) /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> UploadFileOrDefaultAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UploadFileOrDefaultAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1761,8 +2355,8 @@ namespace Org.OpenAPITools.Api /// file to upload (optional) /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UploadFileAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UploadFileAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1828,7 +2422,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}/uploadImage", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UploadFileApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}/uploadImage", requestedAtLocalVar, _jsonSerializerOptions); AfterUploadFileDefaultImplementation(apiResponseLocalVar, petId, file, additionalMetadata); @@ -1850,6 +2446,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class UploadFileApiResponse : Org.OpenAPITools.Client.ApiResponse, IUploadFileApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UploadFileApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.ApiResponse? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.ApiResponse? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUploadFileWithRequiredFile(ref System.IO.Stream requiredFile, ref long petId, ref Option additionalMetadata); /// @@ -1874,7 +2547,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterUploadFileWithRequiredFileDefaultImplementation(ApiResponse apiResponseLocalVar, System.IO.Stream requiredFile, long petId, Option additionalMetadata) + private void AfterUploadFileWithRequiredFileDefaultImplementation(IUploadFileWithRequiredFileApiResponse apiResponseLocalVar, System.IO.Stream requiredFile, long petId, Option additionalMetadata) { bool suppressDefaultLog = false; AfterUploadFileWithRequiredFile(ref suppressDefaultLog, apiResponseLocalVar, requiredFile, petId, additionalMetadata); @@ -1890,7 +2563,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterUploadFileWithRequiredFile(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, System.IO.Stream requiredFile, long petId, Option additionalMetadata); + partial void AfterUploadFileWithRequiredFile(ref bool suppressDefaultLog, IUploadFileWithRequiredFileApiResponse apiResponseLocalVar, System.IO.Stream requiredFile, long petId, Option additionalMetadata); /// /// Logs exceptions that occur while retrieving the server response @@ -1928,8 +2601,8 @@ namespace Org.OpenAPITools.Api /// ID of pet to update /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> UploadFileWithRequiredFileOrDefaultAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UploadFileWithRequiredFileOrDefaultAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1949,8 +2622,8 @@ namespace Org.OpenAPITools.Api /// ID of pet to update /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UploadFileWithRequiredFileAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UploadFileWithRequiredFileAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2016,7 +2689,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/{petId}/uploadImageWithRequiredFile", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UploadFileWithRequiredFileApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/{petId}/uploadImageWithRequiredFile", requestedAtLocalVar, _jsonSerializerOptions); AfterUploadFileWithRequiredFileDefaultImplementation(apiResponseLocalVar, requiredFile, petId, additionalMetadata); @@ -2037,5 +2712,82 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class UploadFileWithRequiredFileApiResponse : Org.OpenAPITools.Client.ApiResponse, IUploadFileWithRequiredFileApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UploadFileWithRequiredFileApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.ApiResponse? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.ApiResponse? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/StoreApi.cs index 2499bbaf9d7d..f9081e66f708 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/StoreApi.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -44,8 +44,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of the order that needs to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default); /// /// Delete purchase order by ID @@ -55,8 +55,8 @@ namespace Org.OpenAPITools.Api /// /// ID of the order that needs to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> DeleteOrderOrDefaultAsync(string orderId, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task DeleteOrderOrDefaultAsync(string orderId, System.Threading.CancellationToken cancellationToken = default); /// /// Returns pet inventories by status @@ -66,8 +66,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Dictionary<string, int>>> - Task>> GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Returns pet inventories by status @@ -76,8 +76,8 @@ namespace Org.OpenAPITools.Api /// Returns a map of status codes to quantities /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Dictionary<string, int>>?> - Task>?> GetInventoryOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task GetInventoryOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Find purchase order by ID @@ -88,8 +88,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of pet that needs to be fetched /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Order>> - Task> GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default); /// /// Find purchase order by ID @@ -99,8 +99,8 @@ namespace Org.OpenAPITools.Api /// /// ID of pet that needs to be fetched /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Order>?> - Task?> GetOrderByIdOrDefaultAsync(long orderId, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task GetOrderByIdOrDefaultAsync(long orderId, System.Threading.CancellationToken cancellationToken = default); /// /// Place an order for a pet @@ -111,8 +111,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// order placed for purchasing the pet /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Order>> - Task> PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default); /// /// Place an order for a pet @@ -122,29 +122,100 @@ namespace Org.OpenAPITools.Api /// /// order placed for purchasing the pet /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Order>?> - Task?> PlaceOrderOrDefaultAsync(Order order, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task PlaceOrderOrDefaultAsync(Order order, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IDeleteOrderApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface IGetInventoryApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk?> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IGetOrderByIdApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface IPlaceOrderApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class StoreApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnDeleteOrder; + public event EventHandler? OnDeleteOrder; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorDeleteOrder; - internal void ExecuteOnDeleteOrder(ApiResponse apiResponse) + internal void ExecuteOnDeleteOrder(StoreApi.DeleteOrderApiResponse apiResponse) { - OnDeleteOrder?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnDeleteOrder?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorDeleteOrder(Exception exception) @@ -155,16 +226,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>>? OnGetInventory; + public event EventHandler? OnGetInventory; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorGetInventory; - internal void ExecuteOnGetInventory(ApiResponse> apiResponse) + internal void ExecuteOnGetInventory(StoreApi.GetInventoryApiResponse apiResponse) { - OnGetInventory?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnGetInventory?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetInventory(Exception exception) @@ -175,16 +246,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnGetOrderById; + public event EventHandler? OnGetOrderById; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorGetOrderById; - internal void ExecuteOnGetOrderById(ApiResponse apiResponse) + internal void ExecuteOnGetOrderById(StoreApi.GetOrderByIdApiResponse apiResponse) { - OnGetOrderById?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnGetOrderById?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetOrderById(Exception exception) @@ -195,16 +266,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnPlaceOrder; + public event EventHandler? OnPlaceOrder; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorPlaceOrder; - internal void ExecuteOnPlaceOrder(ApiResponse apiResponse) + internal void ExecuteOnPlaceOrder(StoreApi.PlaceOrderApiResponse apiResponse) { - OnPlaceOrder?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnPlaceOrder?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorPlaceOrder(Exception exception) @@ -220,6 +291,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -264,7 +340,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public StoreApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, StoreApiEvents storeApiEvents, + public StoreApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, StoreApiEvents storeApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -272,7 +348,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = storeApiEvents; ApiKeyProvider = apiKeyProvider; @@ -300,7 +377,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterDeleteOrderDefaultImplementation(ApiResponse apiResponseLocalVar, string orderId) + private void AfterDeleteOrderDefaultImplementation(IDeleteOrderApiResponse apiResponseLocalVar, string orderId) { bool suppressDefaultLog = false; AfterDeleteOrder(ref suppressDefaultLog, apiResponseLocalVar, orderId); @@ -314,7 +391,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterDeleteOrder(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string orderId); + partial void AfterDeleteOrder(ref bool suppressDefaultLog, IDeleteOrderApiResponse apiResponseLocalVar, string orderId); /// /// Logs exceptions that occur while retrieving the server response @@ -346,8 +423,8 @@ namespace Org.OpenAPITools.Api /// /// ID of the order that needs to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> DeleteOrderOrDefaultAsync(string orderId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeleteOrderOrDefaultAsync(string orderId, System.Threading.CancellationToken cancellationToken = default) { try { @@ -365,8 +442,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of the order that needs to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -394,7 +471,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order/{order_id}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + DeleteOrderApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order/{order_id}", requestedAtLocalVar, _jsonSerializerOptions); AfterDeleteOrderDefaultImplementation(apiResponseLocalVar, orderId); @@ -412,11 +491,62 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class DeleteOrderApiResponse : Org.OpenAPITools.Client.ApiResponse, IDeleteOrderApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public DeleteOrderApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterGetInventoryDefaultImplementation(ApiResponse> apiResponseLocalVar) + private void AfterGetInventoryDefaultImplementation(IGetInventoryApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterGetInventory(ref suppressDefaultLog, apiResponseLocalVar); @@ -429,7 +559,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetInventory(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar); + partial void AfterGetInventory(ref bool suppressDefaultLog, IGetInventoryApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -458,8 +588,8 @@ namespace Org.OpenAPITools.Api /// Returns pet inventories by status Returns a map of status codes to quantities /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>?> GetInventoryOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetInventoryOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -476,8 +606,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -517,7 +647,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/inventory", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetInventoryApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/inventory", requestedAtLocalVar, _jsonSerializerOptions); AfterGetInventoryDefaultImplementation(apiResponseLocalVar); @@ -539,6 +671,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetInventoryApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetInventoryApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetInventoryApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Dictionary? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Dictionary? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatGetOrderById(ref long orderId); /// @@ -546,7 +755,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterGetOrderByIdDefaultImplementation(ApiResponse apiResponseLocalVar, long orderId) + private void AfterGetOrderByIdDefaultImplementation(IGetOrderByIdApiResponse apiResponseLocalVar, long orderId) { bool suppressDefaultLog = false; AfterGetOrderById(ref suppressDefaultLog, apiResponseLocalVar, orderId); @@ -560,7 +769,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetOrderById(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long orderId); + partial void AfterGetOrderById(ref bool suppressDefaultLog, IGetOrderByIdApiResponse apiResponseLocalVar, long orderId); /// /// Logs exceptions that occur while retrieving the server response @@ -592,8 +801,8 @@ namespace Org.OpenAPITools.Api /// /// ID of pet that needs to be fetched /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> GetOrderByIdOrDefaultAsync(long orderId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetOrderByIdOrDefaultAsync(long orderId, System.Threading.CancellationToken cancellationToken = default) { try { @@ -611,8 +820,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of pet that needs to be fetched /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -648,7 +857,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order/{order_id}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetOrderByIdApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order/{order_id}", requestedAtLocalVar, _jsonSerializerOptions); AfterGetOrderByIdDefaultImplementation(apiResponseLocalVar, orderId); @@ -666,6 +877,95 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetOrderByIdApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetOrderByIdApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetOrderByIdApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.Order? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.Order? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatPlaceOrder(Order order); /// @@ -684,7 +984,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterPlaceOrderDefaultImplementation(ApiResponse apiResponseLocalVar, Order order) + private void AfterPlaceOrderDefaultImplementation(IPlaceOrderApiResponse apiResponseLocalVar, Order order) { bool suppressDefaultLog = false; AfterPlaceOrder(ref suppressDefaultLog, apiResponseLocalVar, order); @@ -698,7 +998,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterPlaceOrder(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Order order); + partial void AfterPlaceOrder(ref bool suppressDefaultLog, IPlaceOrderApiResponse apiResponseLocalVar, Order order); /// /// Logs exceptions that occur while retrieving the server response @@ -730,8 +1030,8 @@ namespace Org.OpenAPITools.Api /// /// order placed for purchasing the pet /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> PlaceOrderOrDefaultAsync(Order order, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task PlaceOrderOrDefaultAsync(Order order, System.Threading.CancellationToken cancellationToken = default) { try { @@ -749,8 +1049,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// order placed for purchasing the pet /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -800,7 +1100,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + PlaceOrderApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order", requestedAtLocalVar, _jsonSerializerOptions); AfterPlaceOrderDefaultImplementation(apiResponseLocalVar, order); @@ -817,5 +1119,88 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class PlaceOrderApiResponse : Org.OpenAPITools.Client.ApiResponse, IPlaceOrderApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public PlaceOrderApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.Order? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.Order? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/UserApi.cs index d2b35bcc8026..2f06f13a9f6e 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Api/UserApi.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -44,8 +44,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Created user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default); /// /// Create user @@ -55,8 +55,8 @@ namespace Org.OpenAPITools.Api /// /// Created user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> CreateUserOrDefaultAsync(User user, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task CreateUserOrDefaultAsync(User user, System.Threading.CancellationToken cancellationToken = default); /// /// Creates list of users with given input array @@ -67,8 +67,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// List of user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default); /// /// Creates list of users with given input array @@ -78,8 +78,8 @@ namespace Org.OpenAPITools.Api /// /// List of user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> CreateUsersWithArrayInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task CreateUsersWithArrayInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default); /// /// Creates list of users with given input array @@ -90,8 +90,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// List of user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default); /// /// Creates list of users with given input array @@ -101,8 +101,8 @@ namespace Org.OpenAPITools.Api /// /// List of user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> CreateUsersWithListInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task CreateUsersWithListInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default); /// /// Delete user @@ -113,8 +113,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// The name that needs to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default); /// /// Delete user @@ -124,8 +124,8 @@ namespace Org.OpenAPITools.Api /// /// The name that needs to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> DeleteUserOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task DeleteUserOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default); /// /// Get user by user name @@ -136,8 +136,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// The name that needs to be fetched. Use user1 for testing. /// Cancellation Token to cancel the request. - /// Task<ApiResponse<User>> - Task> GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default); /// /// Get user by user name @@ -147,8 +147,8 @@ namespace Org.OpenAPITools.Api /// /// The name that needs to be fetched. Use user1 for testing. /// Cancellation Token to cancel the request. - /// Task<ApiResponse>User>?> - Task?> GetUserByNameOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task GetUserByNameOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default); /// /// Logs user into the system @@ -160,8 +160,8 @@ namespace Org.OpenAPITools.Api /// The user name for login /// The password for login in clear text /// Cancellation Token to cancel the request. - /// Task<ApiResponse<string>> - Task> LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default); /// /// Logs user into the system @@ -172,8 +172,8 @@ namespace Org.OpenAPITools.Api /// The user name for login /// The password for login in clear text /// Cancellation Token to cancel the request. - /// Task<ApiResponse>string>?> - Task?> LoginUserOrDefaultAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task LoginUserOrDefaultAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default); /// /// Logs out current logged in user session @@ -183,8 +183,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Logs out current logged in user session @@ -193,8 +193,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> LogoutUserOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task LogoutUserOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Updated user @@ -206,8 +206,8 @@ namespace Org.OpenAPITools.Api /// Updated user object /// name that need to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> UpdateUserAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdateUserAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default); /// /// Updated user @@ -218,29 +218,154 @@ namespace Org.OpenAPITools.Api /// Updated user object /// name that need to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>?> - Task?> UpdateUserOrDefaultAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task UpdateUserOrDefaultAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface ICreateUserApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface ICreateUsersWithArrayInputApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface ICreateUsersWithListInputApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface IDeleteUserApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface IGetUserByNameApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface ILoginUserApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface ILogoutUserApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface IUpdateUserApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class UserApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnCreateUser; + public event EventHandler? OnCreateUser; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorCreateUser; - internal void ExecuteOnCreateUser(ApiResponse apiResponse) + internal void ExecuteOnCreateUser(UserApi.CreateUserApiResponse apiResponse) { - OnCreateUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnCreateUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorCreateUser(Exception exception) @@ -251,16 +376,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnCreateUsersWithArrayInput; + public event EventHandler? OnCreateUsersWithArrayInput; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorCreateUsersWithArrayInput; - internal void ExecuteOnCreateUsersWithArrayInput(ApiResponse apiResponse) + internal void ExecuteOnCreateUsersWithArrayInput(UserApi.CreateUsersWithArrayInputApiResponse apiResponse) { - OnCreateUsersWithArrayInput?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnCreateUsersWithArrayInput?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorCreateUsersWithArrayInput(Exception exception) @@ -271,16 +396,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnCreateUsersWithListInput; + public event EventHandler? OnCreateUsersWithListInput; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorCreateUsersWithListInput; - internal void ExecuteOnCreateUsersWithListInput(ApiResponse apiResponse) + internal void ExecuteOnCreateUsersWithListInput(UserApi.CreateUsersWithListInputApiResponse apiResponse) { - OnCreateUsersWithListInput?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnCreateUsersWithListInput?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorCreateUsersWithListInput(Exception exception) @@ -291,16 +416,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnDeleteUser; + public event EventHandler? OnDeleteUser; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorDeleteUser; - internal void ExecuteOnDeleteUser(ApiResponse apiResponse) + internal void ExecuteOnDeleteUser(UserApi.DeleteUserApiResponse apiResponse) { - OnDeleteUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnDeleteUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorDeleteUser(Exception exception) @@ -311,16 +436,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnGetUserByName; + public event EventHandler? OnGetUserByName; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorGetUserByName; - internal void ExecuteOnGetUserByName(ApiResponse apiResponse) + internal void ExecuteOnGetUserByName(UserApi.GetUserByNameApiResponse apiResponse) { - OnGetUserByName?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnGetUserByName?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetUserByName(Exception exception) @@ -331,16 +456,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnLoginUser; + public event EventHandler? OnLoginUser; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorLoginUser; - internal void ExecuteOnLoginUser(ApiResponse apiResponse) + internal void ExecuteOnLoginUser(UserApi.LoginUserApiResponse apiResponse) { - OnLoginUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnLoginUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorLoginUser(Exception exception) @@ -351,16 +476,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnLogoutUser; + public event EventHandler? OnLogoutUser; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorLogoutUser; - internal void ExecuteOnLogoutUser(ApiResponse apiResponse) + internal void ExecuteOnLogoutUser(UserApi.LogoutUserApiResponse apiResponse) { - OnLogoutUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnLogoutUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorLogoutUser(Exception exception) @@ -371,16 +496,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>? OnUpdateUser; + public event EventHandler? OnUpdateUser; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorUpdateUser; - internal void ExecuteOnUpdateUser(ApiResponse apiResponse) + internal void ExecuteOnUpdateUser(UserApi.UpdateUserApiResponse apiResponse) { - OnUpdateUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUpdateUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUpdateUser(Exception exception) @@ -396,6 +521,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -440,7 +570,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public UserApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, UserApiEvents userApiEvents, + public UserApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, UserApiEvents userApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -448,7 +578,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = userApiEvents; ApiKeyProvider = apiKeyProvider; @@ -476,7 +607,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterCreateUserDefaultImplementation(ApiResponse apiResponseLocalVar, User user) + private void AfterCreateUserDefaultImplementation(ICreateUserApiResponse apiResponseLocalVar, User user) { bool suppressDefaultLog = false; AfterCreateUser(ref suppressDefaultLog, apiResponseLocalVar, user); @@ -490,7 +621,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterCreateUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, User user); + partial void AfterCreateUser(ref bool suppressDefaultLog, ICreateUserApiResponse apiResponseLocalVar, User user); /// /// Logs exceptions that occur while retrieving the server response @@ -522,8 +653,8 @@ namespace Org.OpenAPITools.Api /// /// Created user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> CreateUserOrDefaultAsync(User user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUserOrDefaultAsync(User user, System.Threading.CancellationToken cancellationToken = default) { try { @@ -541,8 +672,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Created user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -582,7 +713,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + CreateUserApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user", requestedAtLocalVar, _jsonSerializerOptions); AfterCreateUserDefaultImplementation(apiResponseLocalVar, user); @@ -600,6 +733,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class CreateUserApiResponse : Org.OpenAPITools.Client.ApiResponse, ICreateUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public CreateUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatCreateUsersWithArrayInput(List user); /// @@ -618,7 +796,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterCreateUsersWithArrayInputDefaultImplementation(ApiResponse apiResponseLocalVar, List user) + private void AfterCreateUsersWithArrayInputDefaultImplementation(ICreateUsersWithArrayInputApiResponse apiResponseLocalVar, List user) { bool suppressDefaultLog = false; AfterCreateUsersWithArrayInput(ref suppressDefaultLog, apiResponseLocalVar, user); @@ -632,7 +810,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterCreateUsersWithArrayInput(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, List user); + partial void AfterCreateUsersWithArrayInput(ref bool suppressDefaultLog, ICreateUsersWithArrayInputApiResponse apiResponseLocalVar, List user); /// /// Logs exceptions that occur while retrieving the server response @@ -664,8 +842,8 @@ namespace Org.OpenAPITools.Api /// /// List of user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> CreateUsersWithArrayInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUsersWithArrayInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default) { try { @@ -683,8 +861,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// List of user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -724,7 +902,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/createWithArray", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + CreateUsersWithArrayInputApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/createWithArray", requestedAtLocalVar, _jsonSerializerOptions); AfterCreateUsersWithArrayInputDefaultImplementation(apiResponseLocalVar, user); @@ -742,6 +922,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class CreateUsersWithArrayInputApiResponse : Org.OpenAPITools.Client.ApiResponse, ICreateUsersWithArrayInputApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public CreateUsersWithArrayInputApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatCreateUsersWithListInput(List user); /// @@ -760,7 +985,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterCreateUsersWithListInputDefaultImplementation(ApiResponse apiResponseLocalVar, List user) + private void AfterCreateUsersWithListInputDefaultImplementation(ICreateUsersWithListInputApiResponse apiResponseLocalVar, List user) { bool suppressDefaultLog = false; AfterCreateUsersWithListInput(ref suppressDefaultLog, apiResponseLocalVar, user); @@ -774,7 +999,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterCreateUsersWithListInput(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, List user); + partial void AfterCreateUsersWithListInput(ref bool suppressDefaultLog, ICreateUsersWithListInputApiResponse apiResponseLocalVar, List user); /// /// Logs exceptions that occur while retrieving the server response @@ -806,8 +1031,8 @@ namespace Org.OpenAPITools.Api /// /// List of user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> CreateUsersWithListInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUsersWithListInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default) { try { @@ -825,8 +1050,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// List of user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -866,7 +1091,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/createWithList", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + CreateUsersWithListInputApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/createWithList", requestedAtLocalVar, _jsonSerializerOptions); AfterCreateUsersWithListInputDefaultImplementation(apiResponseLocalVar, user); @@ -884,6 +1111,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class CreateUsersWithListInputApiResponse : Org.OpenAPITools.Client.ApiResponse, ICreateUsersWithListInputApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public CreateUsersWithListInputApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatDeleteUser(ref string username); /// @@ -902,7 +1174,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterDeleteUserDefaultImplementation(ApiResponse apiResponseLocalVar, string username) + private void AfterDeleteUserDefaultImplementation(IDeleteUserApiResponse apiResponseLocalVar, string username) { bool suppressDefaultLog = false; AfterDeleteUser(ref suppressDefaultLog, apiResponseLocalVar, username); @@ -916,7 +1188,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterDeleteUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string username); + partial void AfterDeleteUser(ref bool suppressDefaultLog, IDeleteUserApiResponse apiResponseLocalVar, string username); /// /// Logs exceptions that occur while retrieving the server response @@ -948,8 +1220,8 @@ namespace Org.OpenAPITools.Api /// /// The name that needs to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> DeleteUserOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeleteUserOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default) { try { @@ -967,8 +1239,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// The name that needs to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -996,7 +1268,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + DeleteUserApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); AfterDeleteUserDefaultImplementation(apiResponseLocalVar, username); @@ -1014,6 +1288,57 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class DeleteUserApiResponse : Org.OpenAPITools.Client.ApiResponse, IDeleteUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public DeleteUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatGetUserByName(ref string username); /// @@ -1032,7 +1357,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterGetUserByNameDefaultImplementation(ApiResponse apiResponseLocalVar, string username) + private void AfterGetUserByNameDefaultImplementation(IGetUserByNameApiResponse apiResponseLocalVar, string username) { bool suppressDefaultLog = false; AfterGetUserByName(ref suppressDefaultLog, apiResponseLocalVar, username); @@ -1046,7 +1371,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetUserByName(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string username); + partial void AfterGetUserByName(ref bool suppressDefaultLog, IGetUserByNameApiResponse apiResponseLocalVar, string username); /// /// Logs exceptions that occur while retrieving the server response @@ -1078,8 +1403,8 @@ namespace Org.OpenAPITools.Api /// /// The name that needs to be fetched. Use user1 for testing. /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> GetUserByNameOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetUserByNameOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1097,8 +1422,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// The name that needs to be fetched. Use user1 for testing. /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1136,7 +1461,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetUserByNameApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); AfterGetUserByNameDefaultImplementation(apiResponseLocalVar, username); @@ -1154,6 +1481,95 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetUserByNameApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetUserByNameApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetUserByNameApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.User? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.User? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatLoginUser(ref string username, ref string password); /// @@ -1177,7 +1593,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterLoginUserDefaultImplementation(ApiResponse apiResponseLocalVar, string username, string password) + private void AfterLoginUserDefaultImplementation(ILoginUserApiResponse apiResponseLocalVar, string username, string password) { bool suppressDefaultLog = false; AfterLoginUser(ref suppressDefaultLog, apiResponseLocalVar, username, password); @@ -1192,7 +1608,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterLoginUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string username, string password); + partial void AfterLoginUser(ref bool suppressDefaultLog, ILoginUserApiResponse apiResponseLocalVar, string username, string password); /// /// Logs exceptions that occur while retrieving the server response @@ -1227,8 +1643,8 @@ namespace Org.OpenAPITools.Api /// The user name for login /// The password for login in clear text /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> LoginUserOrDefaultAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task LoginUserOrDefaultAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1247,8 +1663,8 @@ namespace Org.OpenAPITools.Api /// The user name for login /// The password for login in clear text /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1292,7 +1708,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/login", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + LoginUserApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/login", requestedAtLocalVar, _jsonSerializerOptions); AfterLoginUserDefaultImplementation(apiResponseLocalVar, username, password); @@ -1310,11 +1728,94 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class LoginUserApiResponse : Org.OpenAPITools.Client.ApiResponse, ILoginUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public LoginUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public string? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out string? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterLogoutUserDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterLogoutUserDefaultImplementation(ILogoutUserApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterLogoutUser(ref suppressDefaultLog, apiResponseLocalVar); @@ -1327,7 +1828,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterLogoutUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterLogoutUser(ref bool suppressDefaultLog, ILogoutUserApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -1356,8 +1857,8 @@ namespace Org.OpenAPITools.Api /// Logs out current logged in user session /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> LogoutUserOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task LogoutUserOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -1374,8 +1875,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1398,7 +1899,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/logout", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + LogoutUserApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/logout", requestedAtLocalVar, _jsonSerializerOptions); AfterLogoutUserDefaultImplementation(apiResponseLocalVar); @@ -1416,6 +1919,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class LogoutUserApiResponse : Org.OpenAPITools.Client.ApiResponse, ILogoutUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public LogoutUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUpdateUser(User user, ref string username); /// @@ -1439,7 +1987,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterUpdateUserDefaultImplementation(ApiResponse apiResponseLocalVar, User user, string username) + private void AfterUpdateUserDefaultImplementation(IUpdateUserApiResponse apiResponseLocalVar, User user, string username) { bool suppressDefaultLog = false; AfterUpdateUser(ref suppressDefaultLog, apiResponseLocalVar, user, username); @@ -1454,7 +2002,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterUpdateUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, User user, string username); + partial void AfterUpdateUser(ref bool suppressDefaultLog, IUpdateUserApiResponse apiResponseLocalVar, User user, string username); /// /// Logs exceptions that occur while retrieving the server response @@ -1489,8 +2037,8 @@ namespace Org.OpenAPITools.Api /// Updated user object /// name that need to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> UpdateUserOrDefaultAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdateUserOrDefaultAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1509,8 +2057,8 @@ namespace Org.OpenAPITools.Api /// Updated user object /// name that need to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdateUserAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdateUserAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1551,7 +2099,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UpdateUserApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); AfterUpdateUserDefaultImplementation(apiResponseLocalVar, user, username); @@ -1568,5 +2118,56 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class UpdateUserApiResponse : Org.OpenAPITools.Client.ApiResponse, IUpdateUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UpdateUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs index 28d50d6378f8..3cb65e5adc0b 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs @@ -5,18 +5,18 @@ namespace Org.OpenAPITools.Client /// /// Useful for tracking server health /// - public class ApiResponseEventArgs : EventArgs + public class ApiResponseEventArgs : EventArgs { /// /// The ApiResponse /// - public ApiResponse ApiResponse { get; } + public ApiResponse ApiResponse { get; } /// /// The ApiResponseEventArgs /// /// - public ApiResponseEventArgs(ApiResponse apiResponse) + public ApiResponseEventArgs(ApiResponse apiResponse) { ApiResponse = apiResponse; } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Client/ApiResponse`1.cs index c5af0f6e35c7..1e59205d73aa 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -11,7 +11,6 @@ #nullable enable using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Net; @@ -20,15 +19,15 @@ namespace Org.OpenAPITools.Client /// /// Provides a non-generic contract for the ApiResponse wrapper. /// - public interface IApiResponse + public partial interface IApiResponse { /// - /// The type that represents the server's response. + /// The IsSuccessStatusCode from the api response /// - Type ResponseType { get; } + bool IsSuccessStatusCode { get; } /// - /// Gets or sets the status code (HTTP status code) + /// Gets the status code (HTTP status code) /// /// The status code. HttpStatusCode StatusCode { get; } @@ -43,11 +42,26 @@ namespace Org.OpenAPITools.Client /// DateTime DownloadedAt { get; } + /// + /// The headers contained in the api response + /// + System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// /// The path used when making the request. /// string Path { get; } + /// + /// The reason phrase contained in the api response + /// + string? ReasonPhrase { get; } + + /// + /// The DateTime when the request was sent. + /// + DateTime RequestedAt { get; } + /// /// The Uri used when making the request. /// @@ -57,26 +71,18 @@ namespace Org.OpenAPITools.Client /// /// API Response /// - public partial class ApiResponse : IApiResponse + public partial class ApiResponse : IApiResponse { /// - /// Gets or sets the status code (HTTP status code) + /// Gets the status code (HTTP status code) /// /// The status code. public HttpStatusCode StatusCode { get; } - /// - /// The type that represents the server's response. - /// - public Type ResponseType - { - get { return typeof(T); } - } - /// /// The raw data /// - public string RawContent { get; private set; } + public string RawContent { get; protected set; } /// /// The IsSuccessStatusCode from the api response @@ -114,9 +120,9 @@ namespace Org.OpenAPITools.Client public Uri? RequestUri { get; } /// - /// The JsonSerialzierOptions + /// The /// - private System.Text.Json.JsonSerializerOptions _jsonSerializerOptions; + protected System.Text.Json.JsonSerializerOptions _jsonSerializerOptions; /// /// Construct the response using an HttpResponseMessage @@ -142,33 +148,45 @@ namespace Org.OpenAPITools.Client } partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + } + + /// + /// An interface for responses of type + /// + /// + public interface IOk : IApiResponse + { + /// + /// Deserializes the response if the response is Ok + /// + /// + TType Ok(); /// - /// Deserializes the server's response + /// Returns true if the response is Ok and the deserialized response is not null /// - public T? AsModel() - { - // This logic may be modified with the AsModel.mustache template - return IsSuccessStatusCode - ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) - : default(T); - } + /// + /// + bool TryOk([NotNullWhen(true)]out TType? result); + } + + /// + /// An interface for responses of type + /// + /// + public interface IDefault : IApiResponse + { + /// + /// Deserializes the response if the response is Default + /// + /// + TType Default(); /// - /// Returns true when the model can be deserialized + /// Returns true if the response is Default and the deserialized response is not null /// - public bool TryToModel([NotNullWhen(true)] out T? model) - { - try - { - model = AsModel(); - return model != null; - } - catch - { - model = default(T); - return false; - } - } + /// + /// + bool TryDefault([NotNullWhen(true)]out TType? result); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/README.md b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/README.md index 4904f27904fe..704bd29f834f 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/README.md +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/README.md @@ -61,8 +61,8 @@ namespace YourProject { var host = CreateHostBuilder(args).Build(); var api = host.Services.GetRequiredService(); - ApiResponse response = await api.Call123TestSpecialTagsAsync("todo"); - ModelClient model = response.AsModel(); + Call123TestSpecialTagsApiResponse apiResponse = await api.Call123TestSpecialTagsAsync("todo"); + ModelClient model = apiResponse.Ok(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs index 9d8aa32892e6..cf82a3e39bd6 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs @@ -58,7 +58,7 @@ namespace Org.OpenAPITools.Test.Api { ModelClient modelClient = default; var response = await _instance.Call123TestSpecialTagsAsync(modelClient); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs index 80a091338361..88cf05ba9ed8 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs @@ -57,7 +57,7 @@ namespace Org.OpenAPITools.Test.Api public async Task FooGetAsyncTest() { var response = await _instance.FooGetAsync(); - var model = response.AsModel(); + var model = response.Default(); Assert.IsType(model); } @@ -78,8 +78,30 @@ namespace Org.OpenAPITools.Test.Api public async Task HelloAsyncTest() { var response = await _instance.HelloAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } + + /// + /// Test RolesReportGet + /// + [Fact (Skip = "not implemented")] + public async Task RolesReportGetAsyncTest() + { + var response = await _instance.RolesReportGetAsync(); + var model = response.Ok(); + Assert.IsType>>(model); + } + + /// + /// Test Test + /// + [Fact (Skip = "not implemented")] + public async Task TestAsyncTest() + { + var response = await _instance.TestAsync(); + var model = response.Ok(); + Assert.IsType(model); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs index bc5d327bda06..6c82be59af88 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs @@ -57,7 +57,7 @@ namespace Org.OpenAPITools.Test.Api public async Task FakeHealthGetAsyncTest() { var response = await _instance.FakeHealthGetAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -69,7 +69,7 @@ namespace Org.OpenAPITools.Test.Api { Client.Option body = default; var response = await _instance.FakeOuterBooleanSerializeAsync(body); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -81,7 +81,7 @@ namespace Org.OpenAPITools.Test.Api { Client.Option outerComposite = default; var response = await _instance.FakeOuterCompositeSerializeAsync(outerComposite); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -93,7 +93,7 @@ namespace Org.OpenAPITools.Test.Api { Client.Option body = default; var response = await _instance.FakeOuterNumberSerializeAsync(body); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -106,7 +106,7 @@ namespace Org.OpenAPITools.Test.Api Guid requiredStringUuid = default; Client.Option body = default; var response = await _instance.FakeOuterStringSerializeAsync(requiredStringUuid, body); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -117,7 +117,7 @@ namespace Org.OpenAPITools.Test.Api public async Task GetArrayOfEnumsAsyncTest() { var response = await _instance.GetArrayOfEnumsAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } @@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Test.Api { ModelClient modelClient = default; var response = await _instance.TestClientModelAsync(modelClient); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs index f57b69b4769e..5964bf6e51d6 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs @@ -58,7 +58,7 @@ namespace Org.OpenAPITools.Test.Api { ModelClient modelClient = default; var response = await _instance.TestClassnameAsync(modelClient); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/PetApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/PetApiTests.cs index c6da93dbfa77..c5e6e7e2f9d2 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/PetApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/PetApiTests.cs @@ -79,7 +79,7 @@ namespace Org.OpenAPITools.Test.Api { List status = default; var response = await _instance.FindPetsByStatusAsync(status); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } @@ -91,7 +91,7 @@ namespace Org.OpenAPITools.Test.Api { List tags = default; var response = await _instance.FindPetsByTagsAsync(tags); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } @@ -103,7 +103,7 @@ namespace Org.OpenAPITools.Test.Api { long petId = default; var response = await _instance.GetPetByIdAsync(petId); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -139,7 +139,7 @@ namespace Org.OpenAPITools.Test.Api Client.Option file = default; Client.Option additionalMetadata = default; var response = await _instance.UploadFileAsync(petId, file, additionalMetadata); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -153,7 +153,7 @@ namespace Org.OpenAPITools.Test.Api long petId = default; Client.Option additionalMetadata = default; var response = await _instance.UploadFileWithRequiredFileAsync(requiredFile, petId, additionalMetadata); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs index 9c419760defa..1b75e3417005 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs @@ -67,7 +67,7 @@ namespace Org.OpenAPITools.Test.Api public async Task GetInventoryAsyncTest() { var response = await _instance.GetInventoryAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } @@ -79,7 +79,7 @@ namespace Org.OpenAPITools.Test.Api { long orderId = default; var response = await _instance.GetOrderByIdAsync(orderId); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -91,7 +91,7 @@ namespace Org.OpenAPITools.Test.Api { Order order = default; var response = await _instance.PlaceOrderAsync(order); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/UserApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/UserApiTests.cs index c79f103fbef2..38ee1125438a 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/UserApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Api/UserApiTests.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Test.Api { string username = default; var response = await _instance.GetUserByNameAsync(username); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -111,7 +111,7 @@ namespace Org.OpenAPITools.Test.Api string username = default; string password = default; var response = await _instance.LoginUserAsync(username, password); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Model/AppleTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Model/AppleTests.cs index a66d14b310bd..c7c8ccd47c11 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Model/AppleTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools.Test/Model/AppleTests.cs @@ -53,6 +53,15 @@ namespace Org.OpenAPITools.Test.Model //Assert.IsType(instance); } + /// + /// Test the property 'ColorCode' + /// + [Fact] + public void ColorCodeTest() + { + // TODO unit test for the property 'ColorCode' + } + /// /// Test the property 'Cultivar' /// diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index 165d3a0183a5..847f498b375a 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -17,8 +17,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -42,8 +42,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ModelClient>> - Task> Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); /// /// To test special tags @@ -53,29 +53,40 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ModelClient>> - Task> Call123TestSpecialTagsOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task Call123TestSpecialTagsOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface ICall123TestSpecialTagsApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class AnotherFakeApiEvents { /// /// The event raised after the server response /// - public event EventHandler> OnCall123TestSpecialTags; + public event EventHandler OnCall123TestSpecialTags; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorCall123TestSpecialTags; - internal void ExecuteOnCall123TestSpecialTags(ApiResponse apiResponse) + internal void ExecuteOnCall123TestSpecialTags(AnotherFakeApi.Call123TestSpecialTagsApiResponse apiResponse) { - OnCall123TestSpecialTags?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnCall123TestSpecialTags?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorCall123TestSpecialTags(Exception exception) @@ -91,6 +102,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -135,7 +151,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public AnotherFakeApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, AnotherFakeApiEvents anotherFakeApiEvents, + public AnotherFakeApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, AnotherFakeApiEvents anotherFakeApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -143,7 +159,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = anotherFakeApiEvents; ApiKeyProvider = apiKeyProvider; @@ -171,7 +188,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterCall123TestSpecialTagsDefaultImplementation(ApiResponse apiResponseLocalVar, ModelClient modelClient) + private void AfterCall123TestSpecialTagsDefaultImplementation(ICall123TestSpecialTagsApiResponse apiResponseLocalVar, ModelClient modelClient) { bool suppressDefaultLog = false; AfterCall123TestSpecialTags(ref suppressDefaultLog, apiResponseLocalVar, modelClient); @@ -185,7 +202,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterCall123TestSpecialTags(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, ModelClient modelClient); + partial void AfterCall123TestSpecialTags(ref bool suppressDefaultLog, ICall123TestSpecialTagsApiResponse apiResponseLocalVar, ModelClient modelClient); /// /// Logs exceptions that occur while retrieving the server response @@ -217,8 +234,8 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> Call123TestSpecialTagsOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task Call123TestSpecialTagsOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { try { @@ -236,8 +253,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -286,7 +303,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/another-fake/dummy", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + Call123TestSpecialTagsApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/another-fake/dummy", requestedAtLocalVar, _jsonSerializerOptions); AfterCall123TestSpecialTagsDefaultImplementation(apiResponseLocalVar, modelClient); @@ -303,5 +322,82 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class Call123TestSpecialTagsApiResponse : Org.OpenAPITools.Client.ApiResponse, ICall123TestSpecialTagsApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public Call123TestSpecialTagsApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.ModelClient Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.ModelClient result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/DefaultApi.cs index ab94b48f6b15..bfe81a123e31 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -17,8 +17,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -41,8 +41,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<FooGetDefaultResponse>> - Task> FooGetAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FooGetAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -51,8 +51,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>FooGetDefaultResponse>> - Task> FooGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FooGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -63,8 +63,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> GetCountryAsync(string country, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetCountryAsync(string country, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -74,8 +74,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> GetCountryOrDefaultAsync(string country, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetCountryOrDefaultAsync(string country, System.Threading.CancellationToken cancellationToken = default); /// /// Hello @@ -85,8 +85,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<Guid>>> - Task>> HelloAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task HelloAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Hello @@ -95,8 +95,8 @@ namespace Org.OpenAPITools.Api /// Hello /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<Guid>>> - Task>> HelloOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task HelloOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -106,8 +106,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<List<RolesReportsHash>>>> - Task>>> RolesReportGetAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task RolesReportGetAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -116,8 +116,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<List<RolesReportsHash>>>> - Task>>> RolesReportGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task RolesReportGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Retrieve an existing Notificationtest's Elements @@ -127,8 +127,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<NotificationtestGetElementsV1ResponseMPayload>> - Task> TestAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Retrieve an existing Notificationtest's Elements @@ -137,29 +137,88 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>NotificationtestGetElementsV1ResponseMPayload>> - Task> TestOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IFooGetApiResponse : Org.OpenAPITools.Client.IApiResponse, IDefault + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface IGetCountryApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IHelloApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IRolesReportGetApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class DefaultApiEvents { /// /// The event raised after the server response /// - public event EventHandler> OnFooGet; + public event EventHandler OnFooGet; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorFooGet; - internal void ExecuteOnFooGet(ApiResponse apiResponse) + internal void ExecuteOnFooGet(DefaultApi.FooGetApiResponse apiResponse) { - OnFooGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFooGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFooGet(Exception exception) @@ -170,16 +229,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnGetCountry; + public event EventHandler OnGetCountry; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorGetCountry; - internal void ExecuteOnGetCountry(ApiResponse apiResponse) + internal void ExecuteOnGetCountry(DefaultApi.GetCountryApiResponse apiResponse) { - OnGetCountry?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnGetCountry?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetCountry(Exception exception) @@ -190,16 +249,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>> OnHello; + public event EventHandler OnHello; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorHello; - internal void ExecuteOnHello(ApiResponse> apiResponse) + internal void ExecuteOnHello(DefaultApi.HelloApiResponse apiResponse) { - OnHello?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnHello?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorHello(Exception exception) @@ -210,16 +269,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>>> OnRolesReportGet; + public event EventHandler OnRolesReportGet; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorRolesReportGet; - internal void ExecuteOnRolesReportGet(ApiResponse>> apiResponse) + internal void ExecuteOnRolesReportGet(DefaultApi.RolesReportGetApiResponse apiResponse) { - OnRolesReportGet?.Invoke(this, new ApiResponseEventArgs>>(apiResponse)); + OnRolesReportGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorRolesReportGet(Exception exception) @@ -230,16 +289,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTest; + public event EventHandler OnTest; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTest; - internal void ExecuteOnTest(ApiResponse apiResponse) + internal void ExecuteOnTest(DefaultApi.TestApiResponse apiResponse) { - OnTest?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTest?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTest(Exception exception) @@ -255,6 +314,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -299,7 +363,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public DefaultApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, DefaultApiEvents defaultApiEvents, + public DefaultApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, DefaultApiEvents defaultApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -307,7 +371,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = defaultApiEvents; ApiKeyProvider = apiKeyProvider; @@ -321,7 +386,7 @@ namespace Org.OpenAPITools.Api /// Processes the server response /// /// - private void AfterFooGetDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterFooGetDefaultImplementation(IFooGetApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterFooGet(ref suppressDefaultLog, apiResponseLocalVar); @@ -334,7 +399,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFooGet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterFooGet(ref bool suppressDefaultLog, IFooGetApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -363,8 +428,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FooGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FooGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -381,8 +446,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FooGetAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FooGetAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -414,7 +479,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/foo", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FooGetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/foo", requestedAtLocalVar, _jsonSerializerOptions); AfterFooGetDefaultImplementation(apiResponseLocalVar); @@ -432,6 +499,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FooGetApiResponse : Org.OpenAPITools.Client.ApiResponse, IFooGetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FooGetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + /// + /// Deserializes the response if the response is 0 Default + /// + /// + public Org.OpenAPITools.Model.FooGetDefaultResponse Default() + { + // This logic may be modified with the AsModel.mustache template + return IsDefault + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 0 Default and the deserialized response is not null + /// + /// + /// + public bool TryDefault([NotNullWhen(true)]out Org.OpenAPITools.Model.FooGetDefaultResponse result) + { + result = null; + + try + { + result = Default(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)0); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatGetCountry(ref string country); /// @@ -450,7 +594,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterGetCountryDefaultImplementation(ApiResponse apiResponseLocalVar, string country) + private void AfterGetCountryDefaultImplementation(IGetCountryApiResponse apiResponseLocalVar, string country) { bool suppressDefaultLog = false; AfterGetCountry(ref suppressDefaultLog, apiResponseLocalVar, country); @@ -464,7 +608,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetCountry(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string country); + partial void AfterGetCountry(ref bool suppressDefaultLog, IGetCountryApiResponse apiResponseLocalVar, string country); /// /// Logs exceptions that occur while retrieving the server response @@ -496,8 +640,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetCountryOrDefaultAsync(string country, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetCountryOrDefaultAsync(string country, System.Threading.CancellationToken cancellationToken = default) { try { @@ -515,8 +659,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetCountryAsync(string country, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetCountryAsync(string country, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -562,7 +706,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/country", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetCountryApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/country", requestedAtLocalVar, _jsonSerializerOptions); AfterGetCountryDefaultImplementation(apiResponseLocalVar, country); @@ -580,11 +726,56 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetCountryApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetCountryApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetCountryApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterHelloDefaultImplementation(ApiResponse> apiResponseLocalVar) + private void AfterHelloDefaultImplementation(IHelloApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterHello(ref suppressDefaultLog, apiResponseLocalVar); @@ -597,7 +788,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterHello(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar); + partial void AfterHello(ref bool suppressDefaultLog, IHelloApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -626,8 +817,8 @@ namespace Org.OpenAPITools.Api /// Hello Hello /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> HelloOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task HelloOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -644,8 +835,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> HelloAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task HelloAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -677,7 +868,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/hello", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + HelloApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/hello", requestedAtLocalVar, _jsonSerializerOptions); AfterHelloDefaultImplementation(apiResponseLocalVar); @@ -695,11 +888,88 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class HelloApiResponse : Org.OpenAPITools.Client.ApiResponse, IHelloApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public HelloApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out List result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterRolesReportGetDefaultImplementation(ApiResponse>> apiResponseLocalVar) + private void AfterRolesReportGetDefaultImplementation(IRolesReportGetApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterRolesReportGet(ref suppressDefaultLog, apiResponseLocalVar); @@ -712,7 +982,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterRolesReportGet(ref bool suppressDefaultLog, ApiResponse>> apiResponseLocalVar); + partial void AfterRolesReportGet(ref bool suppressDefaultLog, IRolesReportGetApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -741,8 +1011,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>>> RolesReportGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task RolesReportGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -759,8 +1029,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>>> RolesReportGetAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task RolesReportGetAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -792,7 +1062,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse>> apiResponseLocalVar = new ApiResponse>>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/roles/report", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + RolesReportGetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/roles/report", requestedAtLocalVar, _jsonSerializerOptions); AfterRolesReportGetDefaultImplementation(apiResponseLocalVar); @@ -810,11 +1082,88 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class RolesReportGetApiResponse : Org.OpenAPITools.Client.ApiResponse, IRolesReportGetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public RolesReportGetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out List result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterTestDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterTestDefaultImplementation(ITestApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterTest(ref suppressDefaultLog, apiResponseLocalVar); @@ -827,7 +1176,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTest(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterTest(ref bool suppressDefaultLog, ITestApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -856,8 +1205,8 @@ namespace Org.OpenAPITools.Api /// Retrieve an existing Notificationtest's Elements /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -874,8 +1223,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -907,7 +1256,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/test", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/test", requestedAtLocalVar, _jsonSerializerOptions); AfterTestDefaultImplementation(apiResponseLocalVar); @@ -924,5 +1275,82 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class TestApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.NotificationtestGetElementsV1ResponseMPayload Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.NotificationtestGetElementsV1ResponseMPayload result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/FakeApi.cs index 6ffdaac74e36..054d56da3cd0 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/FakeApi.cs @@ -17,8 +17,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -41,8 +41,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<HealthCheckResult>> - Task> FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Health check endpoint @@ -51,8 +51,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>HealthCheckResult>> - Task> FakeHealthGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeHealthGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -63,8 +63,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input boolean as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<bool>> - Task> FakeOuterBooleanSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterBooleanSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -74,8 +74,8 @@ namespace Org.OpenAPITools.Api /// /// Input boolean as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>bool>> - Task> FakeOuterBooleanSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterBooleanSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -86,8 +86,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input composite as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<OuterComposite>> - Task> FakeOuterCompositeSerializeAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterCompositeSerializeAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -97,8 +97,8 @@ namespace Org.OpenAPITools.Api /// /// Input composite as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>OuterComposite>> - Task> FakeOuterCompositeSerializeOrDefaultAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterCompositeSerializeOrDefaultAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -109,8 +109,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input number as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<decimal>> - Task> FakeOuterNumberSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterNumberSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -120,8 +120,8 @@ namespace Org.OpenAPITools.Api /// /// Input number as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>decimal>> - Task> FakeOuterNumberSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterNumberSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -133,8 +133,8 @@ namespace Org.OpenAPITools.Api /// Required UUID String /// Input string as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<string>> - Task> FakeOuterStringSerializeAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterStringSerializeAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -145,8 +145,8 @@ namespace Org.OpenAPITools.Api /// Required UUID String /// Input string as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>string>> - Task> FakeOuterStringSerializeOrDefaultAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterStringSerializeOrDefaultAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// Array of Enums @@ -156,8 +156,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<OuterEnum>>> - Task>> GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Array of Enums @@ -166,8 +166,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<OuterEnum>>> - Task>> GetArrayOfEnumsOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetArrayOfEnumsOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -178,8 +178,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -189,8 +189,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestBodyWithFileSchemaOrDefaultAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestBodyWithFileSchemaOrDefaultAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -202,8 +202,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestBodyWithQueryParamsAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestBodyWithQueryParamsAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -214,8 +214,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestBodyWithQueryParamsOrDefaultAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestBodyWithQueryParamsOrDefaultAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default); /// /// To test \"client\" model @@ -226,8 +226,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ModelClient>> - Task> TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); /// /// To test \"client\" model @@ -237,8 +237,8 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ModelClient>> - Task> TestClientModelOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestClientModelOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); /// /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 @@ -262,8 +262,8 @@ namespace Org.OpenAPITools.Api /// None (optional) /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestEndpointParametersAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestEndpointParametersAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default); /// /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 @@ -286,8 +286,8 @@ namespace Org.OpenAPITools.Api /// None (optional) /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestEndpointParametersOrDefaultAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestEndpointParametersOrDefaultAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default); /// /// To test enum parameters @@ -305,8 +305,8 @@ namespace Org.OpenAPITools.Api /// Query parameter enum test (string) (optional, default to -efg) /// Form parameter enum test (string) (optional, default to -efg) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestEnumParametersAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestEnumParametersAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default); /// /// To test enum parameters @@ -323,8 +323,8 @@ namespace Org.OpenAPITools.Api /// Query parameter enum test (string) (optional, default to -efg) /// Form parameter enum test (string) (optional, default to -efg) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestEnumParametersOrDefaultAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestEnumParametersOrDefaultAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default); /// /// Fake endpoint to test group parameters (optional) @@ -340,8 +340,8 @@ namespace Org.OpenAPITools.Api /// String in group parameters (optional) /// Integer in group parameters (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestGroupParametersAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestGroupParametersAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default); /// /// Fake endpoint to test group parameters (optional) @@ -356,8 +356,8 @@ namespace Org.OpenAPITools.Api /// String in group parameters (optional) /// Integer in group parameters (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestGroupParametersOrDefaultAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestGroupParametersOrDefaultAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default); /// /// test inline additionalProperties @@ -368,8 +368,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// request body /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default); /// /// test inline additionalProperties @@ -379,8 +379,8 @@ namespace Org.OpenAPITools.Api /// /// request body /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestInlineAdditionalPropertiesOrDefaultAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestInlineAdditionalPropertiesOrDefaultAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default); /// /// test inline free-form additionalProperties @@ -391,8 +391,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// request body /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestInlineFreeformAdditionalPropertiesAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestInlineFreeformAdditionalPropertiesAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default); /// /// test inline free-form additionalProperties @@ -402,8 +402,8 @@ namespace Org.OpenAPITools.Api /// /// request body /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestInlineFreeformAdditionalPropertiesOrDefaultAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestInlineFreeformAdditionalPropertiesOrDefaultAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default); /// /// test json serialization of form data @@ -415,8 +415,8 @@ namespace Org.OpenAPITools.Api /// field1 /// field2 /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default); /// /// test json serialization of form data @@ -427,8 +427,8 @@ namespace Org.OpenAPITools.Api /// field1 /// field2 /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestJsonFormDataOrDefaultAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestJsonFormDataOrDefaultAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -447,8 +447,8 @@ namespace Org.OpenAPITools.Api /// (optional) /// (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -466,29 +466,232 @@ namespace Org.OpenAPITools.Api /// (optional) /// (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestQueryParameterCollectionFormatOrDefaultAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestQueryParameterCollectionFormatOrDefaultAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IFakeHealthGetApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IFakeOuterBooleanSerializeApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IFakeOuterCompositeSerializeApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IFakeOuterNumberSerializeApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IFakeOuterStringSerializeApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IGetArrayOfEnumsApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestBodyWithFileSchemaApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestBodyWithQueryParamsApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestClientModelApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestEndpointParametersApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface ITestEnumParametersApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface ITestGroupParametersApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface ITestInlineAdditionalPropertiesApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestInlineFreeformAdditionalPropertiesApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestJsonFormDataApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestQueryParameterCollectionFormatApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class FakeApiEvents { /// /// The event raised after the server response /// - public event EventHandler> OnFakeHealthGet; + public event EventHandler OnFakeHealthGet; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorFakeHealthGet; - internal void ExecuteOnFakeHealthGet(ApiResponse apiResponse) + internal void ExecuteOnFakeHealthGet(FakeApi.FakeHealthGetApiResponse apiResponse) { - OnFakeHealthGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeHealthGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeHealthGet(Exception exception) @@ -499,16 +702,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnFakeOuterBooleanSerialize; + public event EventHandler OnFakeOuterBooleanSerialize; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorFakeOuterBooleanSerialize; - internal void ExecuteOnFakeOuterBooleanSerialize(ApiResponse apiResponse) + internal void ExecuteOnFakeOuterBooleanSerialize(FakeApi.FakeOuterBooleanSerializeApiResponse apiResponse) { - OnFakeOuterBooleanSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeOuterBooleanSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeOuterBooleanSerialize(Exception exception) @@ -519,16 +722,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnFakeOuterCompositeSerialize; + public event EventHandler OnFakeOuterCompositeSerialize; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorFakeOuterCompositeSerialize; - internal void ExecuteOnFakeOuterCompositeSerialize(ApiResponse apiResponse) + internal void ExecuteOnFakeOuterCompositeSerialize(FakeApi.FakeOuterCompositeSerializeApiResponse apiResponse) { - OnFakeOuterCompositeSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeOuterCompositeSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeOuterCompositeSerialize(Exception exception) @@ -539,16 +742,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnFakeOuterNumberSerialize; + public event EventHandler OnFakeOuterNumberSerialize; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorFakeOuterNumberSerialize; - internal void ExecuteOnFakeOuterNumberSerialize(ApiResponse apiResponse) + internal void ExecuteOnFakeOuterNumberSerialize(FakeApi.FakeOuterNumberSerializeApiResponse apiResponse) { - OnFakeOuterNumberSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeOuterNumberSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeOuterNumberSerialize(Exception exception) @@ -559,16 +762,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnFakeOuterStringSerialize; + public event EventHandler OnFakeOuterStringSerialize; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorFakeOuterStringSerialize; - internal void ExecuteOnFakeOuterStringSerialize(ApiResponse apiResponse) + internal void ExecuteOnFakeOuterStringSerialize(FakeApi.FakeOuterStringSerializeApiResponse apiResponse) { - OnFakeOuterStringSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeOuterStringSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeOuterStringSerialize(Exception exception) @@ -579,16 +782,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>> OnGetArrayOfEnums; + public event EventHandler OnGetArrayOfEnums; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorGetArrayOfEnums; - internal void ExecuteOnGetArrayOfEnums(ApiResponse> apiResponse) + internal void ExecuteOnGetArrayOfEnums(FakeApi.GetArrayOfEnumsApiResponse apiResponse) { - OnGetArrayOfEnums?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnGetArrayOfEnums?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetArrayOfEnums(Exception exception) @@ -599,16 +802,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestBodyWithFileSchema; + public event EventHandler OnTestBodyWithFileSchema; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestBodyWithFileSchema; - internal void ExecuteOnTestBodyWithFileSchema(ApiResponse apiResponse) + internal void ExecuteOnTestBodyWithFileSchema(FakeApi.TestBodyWithFileSchemaApiResponse apiResponse) { - OnTestBodyWithFileSchema?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestBodyWithFileSchema?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestBodyWithFileSchema(Exception exception) @@ -619,16 +822,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestBodyWithQueryParams; + public event EventHandler OnTestBodyWithQueryParams; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestBodyWithQueryParams; - internal void ExecuteOnTestBodyWithQueryParams(ApiResponse apiResponse) + internal void ExecuteOnTestBodyWithQueryParams(FakeApi.TestBodyWithQueryParamsApiResponse apiResponse) { - OnTestBodyWithQueryParams?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestBodyWithQueryParams?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestBodyWithQueryParams(Exception exception) @@ -639,16 +842,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestClientModel; + public event EventHandler OnTestClientModel; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestClientModel; - internal void ExecuteOnTestClientModel(ApiResponse apiResponse) + internal void ExecuteOnTestClientModel(FakeApi.TestClientModelApiResponse apiResponse) { - OnTestClientModel?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestClientModel?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestClientModel(Exception exception) @@ -659,16 +862,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestEndpointParameters; + public event EventHandler OnTestEndpointParameters; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestEndpointParameters; - internal void ExecuteOnTestEndpointParameters(ApiResponse apiResponse) + internal void ExecuteOnTestEndpointParameters(FakeApi.TestEndpointParametersApiResponse apiResponse) { - OnTestEndpointParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestEndpointParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestEndpointParameters(Exception exception) @@ -679,16 +882,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestEnumParameters; + public event EventHandler OnTestEnumParameters; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestEnumParameters; - internal void ExecuteOnTestEnumParameters(ApiResponse apiResponse) + internal void ExecuteOnTestEnumParameters(FakeApi.TestEnumParametersApiResponse apiResponse) { - OnTestEnumParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestEnumParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestEnumParameters(Exception exception) @@ -699,16 +902,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestGroupParameters; + public event EventHandler OnTestGroupParameters; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestGroupParameters; - internal void ExecuteOnTestGroupParameters(ApiResponse apiResponse) + internal void ExecuteOnTestGroupParameters(FakeApi.TestGroupParametersApiResponse apiResponse) { - OnTestGroupParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestGroupParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestGroupParameters(Exception exception) @@ -719,16 +922,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestInlineAdditionalProperties; + public event EventHandler OnTestInlineAdditionalProperties; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestInlineAdditionalProperties; - internal void ExecuteOnTestInlineAdditionalProperties(ApiResponse apiResponse) + internal void ExecuteOnTestInlineAdditionalProperties(FakeApi.TestInlineAdditionalPropertiesApiResponse apiResponse) { - OnTestInlineAdditionalProperties?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestInlineAdditionalProperties?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestInlineAdditionalProperties(Exception exception) @@ -739,16 +942,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestInlineFreeformAdditionalProperties; + public event EventHandler OnTestInlineFreeformAdditionalProperties; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestInlineFreeformAdditionalProperties; - internal void ExecuteOnTestInlineFreeformAdditionalProperties(ApiResponse apiResponse) + internal void ExecuteOnTestInlineFreeformAdditionalProperties(FakeApi.TestInlineFreeformAdditionalPropertiesApiResponse apiResponse) { - OnTestInlineFreeformAdditionalProperties?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestInlineFreeformAdditionalProperties?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestInlineFreeformAdditionalProperties(Exception exception) @@ -759,16 +962,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestJsonFormData; + public event EventHandler OnTestJsonFormData; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestJsonFormData; - internal void ExecuteOnTestJsonFormData(ApiResponse apiResponse) + internal void ExecuteOnTestJsonFormData(FakeApi.TestJsonFormDataApiResponse apiResponse) { - OnTestJsonFormData?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestJsonFormData?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestJsonFormData(Exception exception) @@ -779,16 +982,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestQueryParameterCollectionFormat; + public event EventHandler OnTestQueryParameterCollectionFormat; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestQueryParameterCollectionFormat; - internal void ExecuteOnTestQueryParameterCollectionFormat(ApiResponse apiResponse) + internal void ExecuteOnTestQueryParameterCollectionFormat(FakeApi.TestQueryParameterCollectionFormatApiResponse apiResponse) { - OnTestQueryParameterCollectionFormat?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestQueryParameterCollectionFormat?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestQueryParameterCollectionFormat(Exception exception) @@ -804,6 +1007,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -848,7 +1056,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public FakeApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, FakeApiEvents fakeApiEvents, + public FakeApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, FakeApiEvents fakeApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -856,7 +1064,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = fakeApiEvents; ApiKeyProvider = apiKeyProvider; @@ -870,7 +1079,7 @@ namespace Org.OpenAPITools.Api /// Processes the server response /// /// - private void AfterFakeHealthGetDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterFakeHealthGetDefaultImplementation(IFakeHealthGetApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterFakeHealthGet(ref suppressDefaultLog, apiResponseLocalVar); @@ -883,7 +1092,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFakeHealthGet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterFakeHealthGet(ref bool suppressDefaultLog, IFakeHealthGetApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -912,8 +1121,8 @@ namespace Org.OpenAPITools.Api /// Health check endpoint /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeHealthGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeHealthGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -930,8 +1139,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -963,7 +1172,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/health", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeHealthGetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/health", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeHealthGetDefaultImplementation(apiResponseLocalVar); @@ -981,6 +1192,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FakeHealthGetApiResponse : Org.OpenAPITools.Client.ApiResponse, IFakeHealthGetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeHealthGetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.HealthCheckResult Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.HealthCheckResult result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFakeOuterBooleanSerialize(ref Option body); /// @@ -988,7 +1276,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFakeOuterBooleanSerializeDefaultImplementation(ApiResponse apiResponseLocalVar, Option body) + private void AfterFakeOuterBooleanSerializeDefaultImplementation(IFakeOuterBooleanSerializeApiResponse apiResponseLocalVar, Option body) { bool suppressDefaultLog = false; AfterFakeOuterBooleanSerialize(ref suppressDefaultLog, apiResponseLocalVar, body); @@ -1002,7 +1290,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFakeOuterBooleanSerialize(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Option body); + partial void AfterFakeOuterBooleanSerialize(ref bool suppressDefaultLog, IFakeOuterBooleanSerializeApiResponse apiResponseLocalVar, Option body); /// /// Logs exceptions that occur while retrieving the server response @@ -1034,8 +1322,8 @@ namespace Org.OpenAPITools.Api /// /// Input boolean as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterBooleanSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterBooleanSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1053,8 +1341,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input boolean as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterBooleanSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterBooleanSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1102,7 +1390,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/boolean", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeOuterBooleanSerializeApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/boolean", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeOuterBooleanSerializeDefaultImplementation(apiResponseLocalVar, body); @@ -1120,6 +1410,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FakeOuterBooleanSerializeApiResponse : Org.OpenAPITools.Client.ApiResponse, IFakeOuterBooleanSerializeApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeOuterBooleanSerializeApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public bool? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out bool? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFakeOuterCompositeSerialize(Option outerComposite); /// @@ -1138,7 +1505,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFakeOuterCompositeSerializeDefaultImplementation(ApiResponse apiResponseLocalVar, Option outerComposite) + private void AfterFakeOuterCompositeSerializeDefaultImplementation(IFakeOuterCompositeSerializeApiResponse apiResponseLocalVar, Option outerComposite) { bool suppressDefaultLog = false; AfterFakeOuterCompositeSerialize(ref suppressDefaultLog, apiResponseLocalVar, outerComposite); @@ -1152,7 +1519,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFakeOuterCompositeSerialize(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Option outerComposite); + partial void AfterFakeOuterCompositeSerialize(ref bool suppressDefaultLog, IFakeOuterCompositeSerializeApiResponse apiResponseLocalVar, Option outerComposite); /// /// Logs exceptions that occur while retrieving the server response @@ -1184,8 +1551,8 @@ namespace Org.OpenAPITools.Api /// /// Input composite as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterCompositeSerializeOrDefaultAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterCompositeSerializeOrDefaultAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1203,8 +1570,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input composite as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterCompositeSerializeAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterCompositeSerializeAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1254,7 +1621,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/composite", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeOuterCompositeSerializeApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/composite", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeOuterCompositeSerializeDefaultImplementation(apiResponseLocalVar, outerComposite); @@ -1272,6 +1641,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FakeOuterCompositeSerializeApiResponse : Org.OpenAPITools.Client.ApiResponse, IFakeOuterCompositeSerializeApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeOuterCompositeSerializeApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.OuterComposite Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.OuterComposite result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFakeOuterNumberSerialize(ref Option body); /// @@ -1279,7 +1725,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFakeOuterNumberSerializeDefaultImplementation(ApiResponse apiResponseLocalVar, Option body) + private void AfterFakeOuterNumberSerializeDefaultImplementation(IFakeOuterNumberSerializeApiResponse apiResponseLocalVar, Option body) { bool suppressDefaultLog = false; AfterFakeOuterNumberSerialize(ref suppressDefaultLog, apiResponseLocalVar, body); @@ -1293,7 +1739,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFakeOuterNumberSerialize(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Option body); + partial void AfterFakeOuterNumberSerialize(ref bool suppressDefaultLog, IFakeOuterNumberSerializeApiResponse apiResponseLocalVar, Option body); /// /// Logs exceptions that occur while retrieving the server response @@ -1325,8 +1771,8 @@ namespace Org.OpenAPITools.Api /// /// Input number as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterNumberSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterNumberSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1344,8 +1790,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input number as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterNumberSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterNumberSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1393,7 +1839,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/number", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeOuterNumberSerializeApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/number", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeOuterNumberSerializeDefaultImplementation(apiResponseLocalVar, body); @@ -1411,6 +1859,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FakeOuterNumberSerializeApiResponse : Org.OpenAPITools.Client.ApiResponse, IFakeOuterNumberSerializeApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeOuterNumberSerializeApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public decimal? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out decimal? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFakeOuterStringSerialize(ref Guid requiredStringUuid, ref Option body); /// @@ -1430,7 +1955,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFakeOuterStringSerializeDefaultImplementation(ApiResponse apiResponseLocalVar, Guid requiredStringUuid, Option body) + private void AfterFakeOuterStringSerializeDefaultImplementation(IFakeOuterStringSerializeApiResponse apiResponseLocalVar, Guid requiredStringUuid, Option body) { bool suppressDefaultLog = false; AfterFakeOuterStringSerialize(ref suppressDefaultLog, apiResponseLocalVar, requiredStringUuid, body); @@ -1445,7 +1970,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFakeOuterStringSerialize(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Guid requiredStringUuid, Option body); + partial void AfterFakeOuterStringSerialize(ref bool suppressDefaultLog, IFakeOuterStringSerializeApiResponse apiResponseLocalVar, Guid requiredStringUuid, Option body); /// /// Logs exceptions that occur while retrieving the server response @@ -1480,8 +2005,8 @@ namespace Org.OpenAPITools.Api /// Required UUID String /// Input string as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterStringSerializeOrDefaultAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterStringSerializeOrDefaultAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1500,8 +2025,8 @@ namespace Org.OpenAPITools.Api /// Required UUID String /// Input string as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterStringSerializeAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterStringSerializeAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1557,7 +2082,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/string", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeOuterStringSerializeApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/string", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeOuterStringSerializeDefaultImplementation(apiResponseLocalVar, requiredStringUuid, body); @@ -1575,11 +2102,88 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FakeOuterStringSerializeApiResponse : Org.OpenAPITools.Client.ApiResponse, IFakeOuterStringSerializeApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeOuterStringSerializeApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public string Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out string result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterGetArrayOfEnumsDefaultImplementation(ApiResponse> apiResponseLocalVar) + private void AfterGetArrayOfEnumsDefaultImplementation(IGetArrayOfEnumsApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterGetArrayOfEnums(ref suppressDefaultLog, apiResponseLocalVar); @@ -1592,7 +2196,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetArrayOfEnums(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar); + partial void AfterGetArrayOfEnums(ref bool suppressDefaultLog, IGetArrayOfEnumsApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -1621,8 +2225,8 @@ namespace Org.OpenAPITools.Api /// Array of Enums /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> GetArrayOfEnumsOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetArrayOfEnumsOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -1639,8 +2243,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1672,7 +2276,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/array-of-enums", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetArrayOfEnumsApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/array-of-enums", requestedAtLocalVar, _jsonSerializerOptions); AfterGetArrayOfEnumsDefaultImplementation(apiResponseLocalVar); @@ -1690,6 +2296,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetArrayOfEnumsApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetArrayOfEnumsApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetArrayOfEnumsApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out List result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestBodyWithFileSchema(FileSchemaTestClass fileSchemaTestClass); /// @@ -1708,7 +2391,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestBodyWithFileSchemaDefaultImplementation(ApiResponse apiResponseLocalVar, FileSchemaTestClass fileSchemaTestClass) + private void AfterTestBodyWithFileSchemaDefaultImplementation(ITestBodyWithFileSchemaApiResponse apiResponseLocalVar, FileSchemaTestClass fileSchemaTestClass) { bool suppressDefaultLog = false; AfterTestBodyWithFileSchema(ref suppressDefaultLog, apiResponseLocalVar, fileSchemaTestClass); @@ -1722,7 +2405,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestBodyWithFileSchema(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, FileSchemaTestClass fileSchemaTestClass); + partial void AfterTestBodyWithFileSchema(ref bool suppressDefaultLog, ITestBodyWithFileSchemaApiResponse apiResponseLocalVar, FileSchemaTestClass fileSchemaTestClass); /// /// Logs exceptions that occur while retrieving the server response @@ -1754,8 +2437,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestBodyWithFileSchemaOrDefaultAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestBodyWithFileSchemaOrDefaultAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1773,8 +2456,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1814,7 +2497,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/body-with-file-schema", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestBodyWithFileSchemaApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/body-with-file-schema", requestedAtLocalVar, _jsonSerializerOptions); AfterTestBodyWithFileSchemaDefaultImplementation(apiResponseLocalVar, fileSchemaTestClass); @@ -1832,6 +2517,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestBodyWithFileSchemaApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestBodyWithFileSchemaApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestBodyWithFileSchemaApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestBodyWithQueryParams(User user, ref string query); /// @@ -1855,7 +2585,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestBodyWithQueryParamsDefaultImplementation(ApiResponse apiResponseLocalVar, User user, string query) + private void AfterTestBodyWithQueryParamsDefaultImplementation(ITestBodyWithQueryParamsApiResponse apiResponseLocalVar, User user, string query) { bool suppressDefaultLog = false; AfterTestBodyWithQueryParams(ref suppressDefaultLog, apiResponseLocalVar, user, query); @@ -1870,7 +2600,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestBodyWithQueryParams(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, User user, string query); + partial void AfterTestBodyWithQueryParams(ref bool suppressDefaultLog, ITestBodyWithQueryParamsApiResponse apiResponseLocalVar, User user, string query); /// /// Logs exceptions that occur while retrieving the server response @@ -1905,8 +2635,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestBodyWithQueryParamsOrDefaultAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestBodyWithQueryParamsOrDefaultAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1925,8 +2655,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestBodyWithQueryParamsAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestBodyWithQueryParamsAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1972,7 +2702,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/body-with-query-params", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestBodyWithQueryParamsApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/body-with-query-params", requestedAtLocalVar, _jsonSerializerOptions); AfterTestBodyWithQueryParamsDefaultImplementation(apiResponseLocalVar, user, query); @@ -1990,6 +2722,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestBodyWithQueryParamsApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestBodyWithQueryParamsApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestBodyWithQueryParamsApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestClientModel(ModelClient modelClient); /// @@ -2008,7 +2785,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestClientModelDefaultImplementation(ApiResponse apiResponseLocalVar, ModelClient modelClient) + private void AfterTestClientModelDefaultImplementation(ITestClientModelApiResponse apiResponseLocalVar, ModelClient modelClient) { bool suppressDefaultLog = false; AfterTestClientModel(ref suppressDefaultLog, apiResponseLocalVar, modelClient); @@ -2022,7 +2799,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestClientModel(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, ModelClient modelClient); + partial void AfterTestClientModel(ref bool suppressDefaultLog, ITestClientModelApiResponse apiResponseLocalVar, ModelClient modelClient); /// /// Logs exceptions that occur while retrieving the server response @@ -2054,8 +2831,8 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestClientModelOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestClientModelOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2073,8 +2850,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2123,7 +2900,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestClientModelApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); AfterTestClientModelDefaultImplementation(apiResponseLocalVar, modelClient); @@ -2141,6 +2920,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestClientModelApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestClientModelApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestClientModelApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.ModelClient Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.ModelClient result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestEndpointParameters(ref byte[] varByte, ref decimal number, ref double varDouble, ref string patternWithoutDelimiter, ref Option date, ref Option binary, ref Option varFloat, ref Option integer, ref Option int32, ref Option int64, ref Option varString, ref Option password, ref Option callback, ref Option dateTime); /// @@ -2192,7 +3048,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestEndpointParametersDefaultImplementation(ApiResponse apiResponseLocalVar, byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date, Option binary, Option varFloat, Option integer, Option int32, Option int64, Option varString, Option password, Option callback, Option dateTime) + private void AfterTestEndpointParametersDefaultImplementation(ITestEndpointParametersApiResponse apiResponseLocalVar, byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date, Option binary, Option varFloat, Option integer, Option int32, Option int64, Option varString, Option password, Option callback, Option dateTime) { bool suppressDefaultLog = false; AfterTestEndpointParameters(ref suppressDefaultLog, apiResponseLocalVar, varByte, number, varDouble, patternWithoutDelimiter, date, binary, varFloat, integer, int32, int64, varString, password, callback, dateTime); @@ -2219,7 +3075,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestEndpointParameters(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date, Option binary, Option varFloat, Option integer, Option int32, Option int64, Option varString, Option password, Option callback, Option dateTime); + partial void AfterTestEndpointParameters(ref bool suppressDefaultLog, ITestEndpointParametersApiResponse apiResponseLocalVar, byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date, Option binary, Option varFloat, Option integer, Option int32, Option int64, Option varString, Option password, Option callback, Option dateTime); /// /// Logs exceptions that occur while retrieving the server response @@ -2290,8 +3146,8 @@ namespace Org.OpenAPITools.Api /// None (optional) /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestEndpointParametersOrDefaultAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestEndpointParametersOrDefaultAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2322,8 +3178,8 @@ namespace Org.OpenAPITools.Api /// None (optional) /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestEndpointParametersAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestEndpointParametersAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2413,7 +3269,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestEndpointParametersApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); AfterTestEndpointParametersDefaultImplementation(apiResponseLocalVar, varByte, number, varDouble, patternWithoutDelimiter, date, binary, varFloat, integer, int32, int64, varString, password, callback, dateTime); @@ -2435,6 +3293,57 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestEndpointParametersApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestEndpointParametersApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestEndpointParametersApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestEnumParameters(Option> enumHeaderStringArray, Option> enumQueryStringArray, ref Option enumQueryDouble, ref Option enumQueryInteger, Option> enumFormStringArray, ref Option enumHeaderString, ref Option enumQueryString, ref Option enumFormString); /// @@ -2480,7 +3389,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestEnumParametersDefaultImplementation(ApiResponse apiResponseLocalVar, Option> enumHeaderStringArray, Option> enumQueryStringArray, Option enumQueryDouble, Option enumQueryInteger, Option> enumFormStringArray, Option enumHeaderString, Option enumQueryString, Option enumFormString) + private void AfterTestEnumParametersDefaultImplementation(ITestEnumParametersApiResponse apiResponseLocalVar, Option> enumHeaderStringArray, Option> enumQueryStringArray, Option enumQueryDouble, Option enumQueryInteger, Option> enumFormStringArray, Option enumHeaderString, Option enumQueryString, Option enumFormString) { bool suppressDefaultLog = false; AfterTestEnumParameters(ref suppressDefaultLog, apiResponseLocalVar, enumHeaderStringArray, enumQueryStringArray, enumQueryDouble, enumQueryInteger, enumFormStringArray, enumHeaderString, enumQueryString, enumFormString); @@ -2501,7 +3410,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestEnumParameters(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Option> enumHeaderStringArray, Option> enumQueryStringArray, Option enumQueryDouble, Option enumQueryInteger, Option> enumFormStringArray, Option enumHeaderString, Option enumQueryString, Option enumFormString); + partial void AfterTestEnumParameters(ref bool suppressDefaultLog, ITestEnumParametersApiResponse apiResponseLocalVar, Option> enumHeaderStringArray, Option> enumQueryStringArray, Option enumQueryDouble, Option enumQueryInteger, Option> enumFormStringArray, Option enumHeaderString, Option enumQueryString, Option enumFormString); /// /// Logs exceptions that occur while retrieving the server response @@ -2554,8 +3463,8 @@ namespace Org.OpenAPITools.Api /// Query parameter enum test (string) (optional, default to -efg) /// Form parameter enum test (string) (optional, default to -efg) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestEnumParametersOrDefaultAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestEnumParametersOrDefaultAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2580,8 +3489,8 @@ namespace Org.OpenAPITools.Api /// Query parameter enum test (string) (optional, default to -efg) /// Form parameter enum test (string) (optional, default to -efg) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestEnumParametersAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestEnumParametersAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2651,7 +3560,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestEnumParametersApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); AfterTestEnumParametersDefaultImplementation(apiResponseLocalVar, enumHeaderStringArray, enumQueryStringArray, enumQueryDouble, enumQueryInteger, enumFormStringArray, enumHeaderString, enumQueryString, enumFormString); @@ -2669,6 +3580,57 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestEnumParametersApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestEnumParametersApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestEnumParametersApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestGroupParameters(ref bool requiredBooleanGroup, ref int requiredStringGroup, ref long requiredInt64Group, ref Option booleanGroup, ref Option stringGroup, ref Option int64Group); /// @@ -2681,7 +3643,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestGroupParametersDefaultImplementation(ApiResponse apiResponseLocalVar, bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup, Option stringGroup, Option int64Group) + private void AfterTestGroupParametersDefaultImplementation(ITestGroupParametersApiResponse apiResponseLocalVar, bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup, Option stringGroup, Option int64Group) { bool suppressDefaultLog = false; AfterTestGroupParameters(ref suppressDefaultLog, apiResponseLocalVar, requiredBooleanGroup, requiredStringGroup, requiredInt64Group, booleanGroup, stringGroup, int64Group); @@ -2700,7 +3662,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestGroupParameters(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup, Option stringGroup, Option int64Group); + partial void AfterTestGroupParameters(ref bool suppressDefaultLog, ITestGroupParametersApiResponse apiResponseLocalVar, bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup, Option stringGroup, Option int64Group); /// /// Logs exceptions that occur while retrieving the server response @@ -2747,8 +3709,8 @@ namespace Org.OpenAPITools.Api /// String in group parameters (optional) /// Integer in group parameters (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestGroupParametersOrDefaultAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestGroupParametersOrDefaultAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2771,8 +3733,8 @@ namespace Org.OpenAPITools.Api /// String in group parameters (optional) /// Integer in group parameters (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestGroupParametersAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestGroupParametersAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2823,7 +3785,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestGroupParametersApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); AfterTestGroupParametersDefaultImplementation(apiResponseLocalVar, requiredBooleanGroup, requiredStringGroup, requiredInt64Group, booleanGroup, stringGroup, int64Group); @@ -2845,6 +3809,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestGroupParametersApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestGroupParametersApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestGroupParametersApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestInlineAdditionalProperties(Dictionary requestBody); /// @@ -2863,7 +3872,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestInlineAdditionalPropertiesDefaultImplementation(ApiResponse apiResponseLocalVar, Dictionary requestBody) + private void AfterTestInlineAdditionalPropertiesDefaultImplementation(ITestInlineAdditionalPropertiesApiResponse apiResponseLocalVar, Dictionary requestBody) { bool suppressDefaultLog = false; AfterTestInlineAdditionalProperties(ref suppressDefaultLog, apiResponseLocalVar, requestBody); @@ -2877,7 +3886,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestInlineAdditionalProperties(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Dictionary requestBody); + partial void AfterTestInlineAdditionalProperties(ref bool suppressDefaultLog, ITestInlineAdditionalPropertiesApiResponse apiResponseLocalVar, Dictionary requestBody); /// /// Logs exceptions that occur while retrieving the server response @@ -2909,8 +3918,8 @@ namespace Org.OpenAPITools.Api /// /// request body /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestInlineAdditionalPropertiesOrDefaultAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestInlineAdditionalPropertiesOrDefaultAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2928,8 +3937,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// request body /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2969,7 +3978,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/inline-additionalProperties", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestInlineAdditionalPropertiesApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/inline-additionalProperties", requestedAtLocalVar, _jsonSerializerOptions); AfterTestInlineAdditionalPropertiesDefaultImplementation(apiResponseLocalVar, requestBody); @@ -2987,6 +3998,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestInlineAdditionalPropertiesApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestInlineAdditionalPropertiesApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestInlineAdditionalPropertiesApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestInlineFreeformAdditionalProperties(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest); /// @@ -3005,7 +4061,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestInlineFreeformAdditionalPropertiesDefaultImplementation(ApiResponse apiResponseLocalVar, TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest) + private void AfterTestInlineFreeformAdditionalPropertiesDefaultImplementation(ITestInlineFreeformAdditionalPropertiesApiResponse apiResponseLocalVar, TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest) { bool suppressDefaultLog = false; AfterTestInlineFreeformAdditionalProperties(ref suppressDefaultLog, apiResponseLocalVar, testInlineFreeformAdditionalPropertiesRequest); @@ -3019,7 +4075,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestInlineFreeformAdditionalProperties(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest); + partial void AfterTestInlineFreeformAdditionalProperties(ref bool suppressDefaultLog, ITestInlineFreeformAdditionalPropertiesApiResponse apiResponseLocalVar, TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest); /// /// Logs exceptions that occur while retrieving the server response @@ -3051,8 +4107,8 @@ namespace Org.OpenAPITools.Api /// /// request body /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestInlineFreeformAdditionalPropertiesOrDefaultAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestInlineFreeformAdditionalPropertiesOrDefaultAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default) { try { @@ -3070,8 +4126,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// request body /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestInlineFreeformAdditionalPropertiesAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestInlineFreeformAdditionalPropertiesAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -3111,7 +4167,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/inline-freeform-additionalProperties", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestInlineFreeformAdditionalPropertiesApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/inline-freeform-additionalProperties", requestedAtLocalVar, _jsonSerializerOptions); AfterTestInlineFreeformAdditionalPropertiesDefaultImplementation(apiResponseLocalVar, testInlineFreeformAdditionalPropertiesRequest); @@ -3129,6 +4187,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestInlineFreeformAdditionalPropertiesApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestInlineFreeformAdditionalPropertiesApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestInlineFreeformAdditionalPropertiesApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestJsonFormData(ref string param, ref string param2); /// @@ -3152,7 +4255,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestJsonFormDataDefaultImplementation(ApiResponse apiResponseLocalVar, string param, string param2) + private void AfterTestJsonFormDataDefaultImplementation(ITestJsonFormDataApiResponse apiResponseLocalVar, string param, string param2) { bool suppressDefaultLog = false; AfterTestJsonFormData(ref suppressDefaultLog, apiResponseLocalVar, param, param2); @@ -3167,7 +4270,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestJsonFormData(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string param, string param2); + partial void AfterTestJsonFormData(ref bool suppressDefaultLog, ITestJsonFormDataApiResponse apiResponseLocalVar, string param, string param2); /// /// Logs exceptions that occur while retrieving the server response @@ -3202,8 +4305,8 @@ namespace Org.OpenAPITools.Api /// field1 /// field2 /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestJsonFormDataOrDefaultAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestJsonFormDataOrDefaultAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default) { try { @@ -3222,8 +4325,8 @@ namespace Org.OpenAPITools.Api /// field1 /// field2 /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -3271,7 +4374,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/jsonFormData", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestJsonFormDataApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/jsonFormData", requestedAtLocalVar, _jsonSerializerOptions); AfterTestJsonFormDataDefaultImplementation(apiResponseLocalVar, param, param2); @@ -3289,6 +4394,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestJsonFormDataApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestJsonFormDataApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestJsonFormDataApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestQueryParameterCollectionFormat(List pipe, List ioutil, List http, List url, List context, ref string requiredNotNullable, ref string requiredNullable, ref Option notRequiredNotNullable, ref Option notRequiredNullable); /// @@ -3339,7 +4489,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestQueryParameterCollectionFormatDefaultImplementation(ApiResponse apiResponseLocalVar, List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable, Option notRequiredNotNullable, Option notRequiredNullable) + private void AfterTestQueryParameterCollectionFormatDefaultImplementation(ITestQueryParameterCollectionFormatApiResponse apiResponseLocalVar, List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable, Option notRequiredNotNullable, Option notRequiredNullable) { bool suppressDefaultLog = false; AfterTestQueryParameterCollectionFormat(ref suppressDefaultLog, apiResponseLocalVar, pipe, ioutil, http, url, context, requiredNotNullable, requiredNullable, notRequiredNotNullable, notRequiredNullable); @@ -3361,7 +4511,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestQueryParameterCollectionFormat(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable, Option notRequiredNotNullable, Option notRequiredNullable); + partial void AfterTestQueryParameterCollectionFormat(ref bool suppressDefaultLog, ITestQueryParameterCollectionFormatApiResponse apiResponseLocalVar, List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable, Option notRequiredNotNullable, Option notRequiredNullable); /// /// Logs exceptions that occur while retrieving the server response @@ -3417,8 +4567,8 @@ namespace Org.OpenAPITools.Api /// (optional) /// (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestQueryParameterCollectionFormatOrDefaultAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestQueryParameterCollectionFormatOrDefaultAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -3444,8 +4594,8 @@ namespace Org.OpenAPITools.Api /// (optional) /// (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -3490,7 +4640,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/test-query-parameters", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestQueryParameterCollectionFormatApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/test-query-parameters", requestedAtLocalVar, _jsonSerializerOptions); AfterTestQueryParameterCollectionFormatDefaultImplementation(apiResponseLocalVar, pipe, ioutil, http, url, context, requiredNotNullable, requiredNullable, notRequiredNotNullable, notRequiredNullable); @@ -3507,5 +4659,50 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class TestQueryParameterCollectionFormatApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestQueryParameterCollectionFormatApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestQueryParameterCollectionFormatApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 1c0b09292be4..bc3841e55e1b 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -17,8 +17,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -42,8 +42,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ModelClient>> - Task> TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); /// /// To test class name in snake case @@ -53,29 +53,40 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ModelClient>> - Task> TestClassnameOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestClassnameOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface ITestClassnameApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class FakeClassnameTags123ApiEvents { /// /// The event raised after the server response /// - public event EventHandler> OnTestClassname; + public event EventHandler OnTestClassname; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestClassname; - internal void ExecuteOnTestClassname(ApiResponse apiResponse) + internal void ExecuteOnTestClassname(FakeClassnameTags123Api.TestClassnameApiResponse apiResponse) { - OnTestClassname?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestClassname?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestClassname(Exception exception) @@ -91,6 +102,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -135,7 +151,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public FakeClassnameTags123Api(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, FakeClassnameTags123ApiEvents fakeClassnameTags123ApiEvents, + public FakeClassnameTags123Api(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, FakeClassnameTags123ApiEvents fakeClassnameTags123ApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -143,7 +159,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = fakeClassnameTags123ApiEvents; ApiKeyProvider = apiKeyProvider; @@ -171,7 +188,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestClassnameDefaultImplementation(ApiResponse apiResponseLocalVar, ModelClient modelClient) + private void AfterTestClassnameDefaultImplementation(ITestClassnameApiResponse apiResponseLocalVar, ModelClient modelClient) { bool suppressDefaultLog = false; AfterTestClassname(ref suppressDefaultLog, apiResponseLocalVar, modelClient); @@ -185,7 +202,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestClassname(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, ModelClient modelClient); + partial void AfterTestClassname(ref bool suppressDefaultLog, ITestClassnameApiResponse apiResponseLocalVar, ModelClient modelClient); /// /// Logs exceptions that occur while retrieving the server response @@ -217,8 +234,8 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestClassnameOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestClassnameOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { try { @@ -236,8 +253,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -297,7 +314,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake_classname_test", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestClassnameApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake_classname_test", requestedAtLocalVar, _jsonSerializerOptions); AfterTestClassnameDefaultImplementation(apiResponseLocalVar, modelClient); @@ -318,5 +337,82 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class TestClassnameApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestClassnameApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestClassnameApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.ModelClient Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.ModelClient result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/PetApi.cs index 5dd03f2352da..5618c593f814 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/PetApi.cs @@ -17,8 +17,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -42,8 +42,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); /// /// Add a new pet to the store @@ -53,8 +53,8 @@ namespace Org.OpenAPITools.Api /// /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> AddPetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task AddPetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); /// /// Deletes a pet @@ -66,8 +66,8 @@ namespace Org.OpenAPITools.Api /// Pet id to delete /// (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> DeletePetAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeletePetAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default); /// /// Deletes a pet @@ -78,8 +78,8 @@ namespace Org.OpenAPITools.Api /// Pet id to delete /// (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> DeletePetOrDefaultAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeletePetOrDefaultAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default); /// /// Finds Pets by status @@ -90,8 +90,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Status values that need to be considered for filter /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<Pet>>> - Task>> FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default); /// /// Finds Pets by status @@ -101,8 +101,8 @@ namespace Org.OpenAPITools.Api /// /// Status values that need to be considered for filter /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<Pet>>> - Task>> FindPetsByStatusOrDefaultAsync(List status, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FindPetsByStatusOrDefaultAsync(List status, System.Threading.CancellationToken cancellationToken = default); /// /// Finds Pets by tags @@ -113,8 +113,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Tags to filter by /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<Pet>>> - Task>> FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default); /// /// Finds Pets by tags @@ -124,8 +124,8 @@ namespace Org.OpenAPITools.Api /// /// Tags to filter by /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<Pet>>> - Task>> FindPetsByTagsOrDefaultAsync(List tags, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FindPetsByTagsOrDefaultAsync(List tags, System.Threading.CancellationToken cancellationToken = default); /// /// Find pet by ID @@ -136,8 +136,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of pet to return /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Pet>> - Task> GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default); /// /// Find pet by ID @@ -147,8 +147,8 @@ namespace Org.OpenAPITools.Api /// /// ID of pet to return /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Pet>> - Task> GetPetByIdOrDefaultAsync(long petId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetPetByIdOrDefaultAsync(long petId, System.Threading.CancellationToken cancellationToken = default); /// /// Update an existing pet @@ -159,8 +159,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); /// /// Update an existing pet @@ -170,8 +170,8 @@ namespace Org.OpenAPITools.Api /// /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> UpdatePetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdatePetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); /// /// Updates a pet in the store with form data @@ -184,8 +184,8 @@ namespace Org.OpenAPITools.Api /// Updated name of the pet (optional) /// Updated status of the pet (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> UpdatePetWithFormAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdatePetWithFormAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default); /// /// Updates a pet in the store with form data @@ -197,8 +197,8 @@ namespace Org.OpenAPITools.Api /// Updated name of the pet (optional) /// Updated status of the pet (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> UpdatePetWithFormOrDefaultAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdatePetWithFormOrDefaultAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default); /// /// uploads an image @@ -211,8 +211,8 @@ namespace Org.OpenAPITools.Api /// file to upload (optional) /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ApiResponse>> - Task> UploadFileAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UploadFileAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); /// /// uploads an image @@ -224,8 +224,8 @@ namespace Org.OpenAPITools.Api /// file to upload (optional) /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ApiResponse>> - Task> UploadFileOrDefaultAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UploadFileOrDefaultAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); /// /// uploads an image (required) @@ -238,8 +238,8 @@ namespace Org.OpenAPITools.Api /// ID of pet to update /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ApiResponse>> - Task> UploadFileWithRequiredFileAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UploadFileWithRequiredFileAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); /// /// uploads an image (required) @@ -251,29 +251,172 @@ namespace Org.OpenAPITools.Api /// ID of pet to update /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ApiResponse>> - Task> UploadFileWithRequiredFileOrDefaultAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UploadFileWithRequiredFileOrDefaultAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IAddPetApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + bool IsMethodNotAllowed { get; } + } + + /// + /// The + /// + public interface IDeletePetApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface IFindPetsByStatusApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface IFindPetsByTagsApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface IGetPetByIdApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface IUpdatePetApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + bool IsMethodNotAllowed { get; } + } + + /// + /// The + /// + public interface IUpdatePetWithFormApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + bool IsMethodNotAllowed { get; } + } + + /// + /// The + /// + public interface IUploadFileApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IUploadFileWithRequiredFileApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class PetApiEvents { /// /// The event raised after the server response /// - public event EventHandler> OnAddPet; + public event EventHandler OnAddPet; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorAddPet; - internal void ExecuteOnAddPet(ApiResponse apiResponse) + internal void ExecuteOnAddPet(PetApi.AddPetApiResponse apiResponse) { - OnAddPet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnAddPet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorAddPet(Exception exception) @@ -284,16 +427,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnDeletePet; + public event EventHandler OnDeletePet; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorDeletePet; - internal void ExecuteOnDeletePet(ApiResponse apiResponse) + internal void ExecuteOnDeletePet(PetApi.DeletePetApiResponse apiResponse) { - OnDeletePet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnDeletePet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorDeletePet(Exception exception) @@ -304,16 +447,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>> OnFindPetsByStatus; + public event EventHandler OnFindPetsByStatus; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorFindPetsByStatus; - internal void ExecuteOnFindPetsByStatus(ApiResponse> apiResponse) + internal void ExecuteOnFindPetsByStatus(PetApi.FindPetsByStatusApiResponse apiResponse) { - OnFindPetsByStatus?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnFindPetsByStatus?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFindPetsByStatus(Exception exception) @@ -324,16 +467,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>> OnFindPetsByTags; + public event EventHandler OnFindPetsByTags; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorFindPetsByTags; - internal void ExecuteOnFindPetsByTags(ApiResponse> apiResponse) + internal void ExecuteOnFindPetsByTags(PetApi.FindPetsByTagsApiResponse apiResponse) { - OnFindPetsByTags?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnFindPetsByTags?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFindPetsByTags(Exception exception) @@ -344,16 +487,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnGetPetById; + public event EventHandler OnGetPetById; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorGetPetById; - internal void ExecuteOnGetPetById(ApiResponse apiResponse) + internal void ExecuteOnGetPetById(PetApi.GetPetByIdApiResponse apiResponse) { - OnGetPetById?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnGetPetById?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetPetById(Exception exception) @@ -364,16 +507,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnUpdatePet; + public event EventHandler OnUpdatePet; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorUpdatePet; - internal void ExecuteOnUpdatePet(ApiResponse apiResponse) + internal void ExecuteOnUpdatePet(PetApi.UpdatePetApiResponse apiResponse) { - OnUpdatePet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUpdatePet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUpdatePet(Exception exception) @@ -384,16 +527,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnUpdatePetWithForm; + public event EventHandler OnUpdatePetWithForm; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorUpdatePetWithForm; - internal void ExecuteOnUpdatePetWithForm(ApiResponse apiResponse) + internal void ExecuteOnUpdatePetWithForm(PetApi.UpdatePetWithFormApiResponse apiResponse) { - OnUpdatePetWithForm?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUpdatePetWithForm?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUpdatePetWithForm(Exception exception) @@ -404,16 +547,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnUploadFile; + public event EventHandler OnUploadFile; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorUploadFile; - internal void ExecuteOnUploadFile(ApiResponse apiResponse) + internal void ExecuteOnUploadFile(PetApi.UploadFileApiResponse apiResponse) { - OnUploadFile?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUploadFile?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUploadFile(Exception exception) @@ -424,16 +567,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnUploadFileWithRequiredFile; + public event EventHandler OnUploadFileWithRequiredFile; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorUploadFileWithRequiredFile; - internal void ExecuteOnUploadFileWithRequiredFile(ApiResponse apiResponse) + internal void ExecuteOnUploadFileWithRequiredFile(PetApi.UploadFileWithRequiredFileApiResponse apiResponse) { - OnUploadFileWithRequiredFile?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUploadFileWithRequiredFile?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUploadFileWithRequiredFile(Exception exception) @@ -449,6 +592,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -493,7 +641,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public PetApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, PetApiEvents petApiEvents, + public PetApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, PetApiEvents petApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -501,7 +649,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = petApiEvents; ApiKeyProvider = apiKeyProvider; @@ -529,7 +678,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterAddPetDefaultImplementation(ApiResponse apiResponseLocalVar, Pet pet) + private void AfterAddPetDefaultImplementation(IAddPetApiResponse apiResponseLocalVar, Pet pet) { bool suppressDefaultLog = false; AfterAddPet(ref suppressDefaultLog, apiResponseLocalVar, pet); @@ -543,7 +692,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterAddPet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Pet pet); + partial void AfterAddPet(ref bool suppressDefaultLog, IAddPetApiResponse apiResponseLocalVar, Pet pet); /// /// Logs exceptions that occur while retrieving the server response @@ -575,8 +724,8 @@ namespace Org.OpenAPITools.Api /// /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> AddPetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task AddPetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) { try { @@ -594,8 +743,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -654,16 +803,14 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + AddPetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet", requestedAtLocalVar, _jsonSerializerOptions); AfterAddPetDefaultImplementation(apiResponseLocalVar, pet); Events.ExecuteOnAddPet(apiResponseLocalVar); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) - foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) - tokenBaseLocalVar.BeginRateLimit(); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); @@ -680,6 +827,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class AddPetApiResponse : Org.OpenAPITools.Client.ApiResponse, IAddPetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public AddPetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + public bool IsMethodNotAllowed => 405 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatDeletePet(ref long petId, ref Option apiKey); /// @@ -699,7 +891,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterDeletePetDefaultImplementation(ApiResponse apiResponseLocalVar, long petId, Option apiKey) + private void AfterDeletePetDefaultImplementation(IDeletePetApiResponse apiResponseLocalVar, long petId, Option apiKey) { bool suppressDefaultLog = false; AfterDeletePet(ref suppressDefaultLog, apiResponseLocalVar, petId, apiKey); @@ -714,7 +906,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterDeletePet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long petId, Option apiKey); + partial void AfterDeletePet(ref bool suppressDefaultLog, IDeletePetApiResponse apiResponseLocalVar, long petId, Option apiKey); /// /// Logs exceptions that occur while retrieving the server response @@ -749,8 +941,8 @@ namespace Org.OpenAPITools.Api /// Pet id to delete /// (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeletePetOrDefaultAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeletePetOrDefaultAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -769,8 +961,8 @@ namespace Org.OpenAPITools.Api /// Pet id to delete /// (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeletePetAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeletePetAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -809,7 +1001,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + DeletePetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); AfterDeletePetDefaultImplementation(apiResponseLocalVar, petId, apiKey); @@ -831,6 +1025,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class DeletePetApiResponse : Org.OpenAPITools.Client.ApiResponse, IDeletePetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public DeletePetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFindPetsByStatus(List status); /// @@ -849,7 +1088,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFindPetsByStatusDefaultImplementation(ApiResponse> apiResponseLocalVar, List status) + private void AfterFindPetsByStatusDefaultImplementation(IFindPetsByStatusApiResponse apiResponseLocalVar, List status) { bool suppressDefaultLog = false; AfterFindPetsByStatus(ref suppressDefaultLog, apiResponseLocalVar, status); @@ -863,7 +1102,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFindPetsByStatus(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar, List status); + partial void AfterFindPetsByStatus(ref bool suppressDefaultLog, IFindPetsByStatusApiResponse apiResponseLocalVar, List status); /// /// Logs exceptions that occur while retrieving the server response @@ -895,8 +1134,8 @@ namespace Org.OpenAPITools.Api /// /// Status values that need to be considered for filter /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> FindPetsByStatusOrDefaultAsync(List status, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FindPetsByStatusOrDefaultAsync(List status, System.Threading.CancellationToken cancellationToken = default) { try { @@ -914,8 +1153,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Status values that need to be considered for filter /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -976,16 +1215,14 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/findByStatus", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FindPetsByStatusApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/findByStatus", requestedAtLocalVar, _jsonSerializerOptions); AfterFindPetsByStatusDefaultImplementation(apiResponseLocalVar, status); Events.ExecuteOnFindPetsByStatus(apiResponseLocalVar); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) - foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) - tokenBaseLocalVar.BeginRateLimit(); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); @@ -1002,6 +1239,89 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FindPetsByStatusApiResponse : Org.OpenAPITools.Client.ApiResponse, IFindPetsByStatusApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FindPetsByStatusApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out List result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFindPetsByTags(List tags); /// @@ -1020,7 +1340,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFindPetsByTagsDefaultImplementation(ApiResponse> apiResponseLocalVar, List tags) + private void AfterFindPetsByTagsDefaultImplementation(IFindPetsByTagsApiResponse apiResponseLocalVar, List tags) { bool suppressDefaultLog = false; AfterFindPetsByTags(ref suppressDefaultLog, apiResponseLocalVar, tags); @@ -1034,7 +1354,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFindPetsByTags(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar, List tags); + partial void AfterFindPetsByTags(ref bool suppressDefaultLog, IFindPetsByTagsApiResponse apiResponseLocalVar, List tags); /// /// Logs exceptions that occur while retrieving the server response @@ -1066,8 +1386,8 @@ namespace Org.OpenAPITools.Api /// /// Tags to filter by /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> FindPetsByTagsOrDefaultAsync(List tags, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FindPetsByTagsOrDefaultAsync(List tags, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1085,8 +1405,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Tags to filter by /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1147,16 +1467,14 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/findByTags", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FindPetsByTagsApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/findByTags", requestedAtLocalVar, _jsonSerializerOptions); AfterFindPetsByTagsDefaultImplementation(apiResponseLocalVar, tags); Events.ExecuteOnFindPetsByTags(apiResponseLocalVar); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) - foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) - tokenBaseLocalVar.BeginRateLimit(); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); @@ -1173,6 +1491,89 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FindPetsByTagsApiResponse : Org.OpenAPITools.Client.ApiResponse, IFindPetsByTagsApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FindPetsByTagsApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out List result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatGetPetById(ref long petId); /// @@ -1180,7 +1581,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterGetPetByIdDefaultImplementation(ApiResponse apiResponseLocalVar, long petId) + private void AfterGetPetByIdDefaultImplementation(IGetPetByIdApiResponse apiResponseLocalVar, long petId) { bool suppressDefaultLog = false; AfterGetPetById(ref suppressDefaultLog, apiResponseLocalVar, petId); @@ -1194,7 +1595,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetPetById(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long petId); + partial void AfterGetPetById(ref bool suppressDefaultLog, IGetPetByIdApiResponse apiResponseLocalVar, long petId); /// /// Logs exceptions that occur while retrieving the server response @@ -1226,8 +1627,8 @@ namespace Org.OpenAPITools.Api /// /// ID of pet to return /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetPetByIdOrDefaultAsync(long petId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetPetByIdOrDefaultAsync(long petId, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1245,8 +1646,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of pet to return /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1290,7 +1691,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetPetByIdApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); AfterGetPetByIdDefaultImplementation(apiResponseLocalVar, petId); @@ -1312,6 +1715,95 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetPetByIdApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetPetByIdApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetPetByIdApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.Pet Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.Pet result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUpdatePet(Pet pet); /// @@ -1330,7 +1822,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterUpdatePetDefaultImplementation(ApiResponse apiResponseLocalVar, Pet pet) + private void AfterUpdatePetDefaultImplementation(IUpdatePetApiResponse apiResponseLocalVar, Pet pet) { bool suppressDefaultLog = false; AfterUpdatePet(ref suppressDefaultLog, apiResponseLocalVar, pet); @@ -1344,7 +1836,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterUpdatePet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Pet pet); + partial void AfterUpdatePet(ref bool suppressDefaultLog, IUpdatePetApiResponse apiResponseLocalVar, Pet pet); /// /// Logs exceptions that occur while retrieving the server response @@ -1376,8 +1868,8 @@ namespace Org.OpenAPITools.Api /// /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdatePetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdatePetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1395,8 +1887,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1455,16 +1947,14 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UpdatePetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet", requestedAtLocalVar, _jsonSerializerOptions); AfterUpdatePetDefaultImplementation(apiResponseLocalVar, pet); Events.ExecuteOnUpdatePet(apiResponseLocalVar); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) - foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) - tokenBaseLocalVar.BeginRateLimit(); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); @@ -1481,6 +1971,63 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class UpdatePetApiResponse : Org.OpenAPITools.Client.ApiResponse, IUpdatePetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UpdatePetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + public bool IsMethodNotAllowed => 405 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUpdatePetWithForm(ref long petId, ref Option name, ref Option status); /// @@ -1505,7 +2052,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterUpdatePetWithFormDefaultImplementation(ApiResponse apiResponseLocalVar, long petId, Option name, Option status) + private void AfterUpdatePetWithFormDefaultImplementation(IUpdatePetWithFormApiResponse apiResponseLocalVar, long petId, Option name, Option status) { bool suppressDefaultLog = false; AfterUpdatePetWithForm(ref suppressDefaultLog, apiResponseLocalVar, petId, name, status); @@ -1521,7 +2068,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterUpdatePetWithForm(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long petId, Option name, Option status); + partial void AfterUpdatePetWithForm(ref bool suppressDefaultLog, IUpdatePetWithFormApiResponse apiResponseLocalVar, long petId, Option name, Option status); /// /// Logs exceptions that occur while retrieving the server response @@ -1559,8 +2106,8 @@ namespace Org.OpenAPITools.Api /// Updated name of the pet (optional) /// Updated status of the pet (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdatePetWithFormOrDefaultAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdatePetWithFormOrDefaultAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1580,8 +2127,8 @@ namespace Org.OpenAPITools.Api /// Updated name of the pet (optional) /// Updated status of the pet (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdatePetWithFormAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdatePetWithFormAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1638,7 +2185,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UpdatePetWithFormApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); AfterUpdatePetWithFormDefaultImplementation(apiResponseLocalVar, petId, name, status); @@ -1660,6 +2209,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class UpdatePetWithFormApiResponse : Org.OpenAPITools.Client.ApiResponse, IUpdatePetWithFormApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UpdatePetWithFormApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + public bool IsMethodNotAllowed => 405 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUploadFile(ref long petId, ref Option file, ref Option additionalMetadata); /// @@ -1684,7 +2278,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterUploadFileDefaultImplementation(ApiResponse apiResponseLocalVar, long petId, Option file, Option additionalMetadata) + private void AfterUploadFileDefaultImplementation(IUploadFileApiResponse apiResponseLocalVar, long petId, Option file, Option additionalMetadata) { bool suppressDefaultLog = false; AfterUploadFile(ref suppressDefaultLog, apiResponseLocalVar, petId, file, additionalMetadata); @@ -1700,7 +2294,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterUploadFile(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long petId, Option file, Option additionalMetadata); + partial void AfterUploadFile(ref bool suppressDefaultLog, IUploadFileApiResponse apiResponseLocalVar, long petId, Option file, Option additionalMetadata); /// /// Logs exceptions that occur while retrieving the server response @@ -1738,8 +2332,8 @@ namespace Org.OpenAPITools.Api /// file to upload (optional) /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UploadFileOrDefaultAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UploadFileOrDefaultAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1759,8 +2353,8 @@ namespace Org.OpenAPITools.Api /// file to upload (optional) /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UploadFileAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UploadFileAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1826,7 +2420,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}/uploadImage", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UploadFileApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}/uploadImage", requestedAtLocalVar, _jsonSerializerOptions); AfterUploadFileDefaultImplementation(apiResponseLocalVar, petId, file, additionalMetadata); @@ -1848,6 +2444,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class UploadFileApiResponse : Org.OpenAPITools.Client.ApiResponse, IUploadFileApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UploadFileApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.ApiResponse Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.ApiResponse result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUploadFileWithRequiredFile(ref System.IO.Stream requiredFile, ref long petId, ref Option additionalMetadata); /// @@ -1872,7 +2545,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterUploadFileWithRequiredFileDefaultImplementation(ApiResponse apiResponseLocalVar, System.IO.Stream requiredFile, long petId, Option additionalMetadata) + private void AfterUploadFileWithRequiredFileDefaultImplementation(IUploadFileWithRequiredFileApiResponse apiResponseLocalVar, System.IO.Stream requiredFile, long petId, Option additionalMetadata) { bool suppressDefaultLog = false; AfterUploadFileWithRequiredFile(ref suppressDefaultLog, apiResponseLocalVar, requiredFile, petId, additionalMetadata); @@ -1888,7 +2561,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterUploadFileWithRequiredFile(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, System.IO.Stream requiredFile, long petId, Option additionalMetadata); + partial void AfterUploadFileWithRequiredFile(ref bool suppressDefaultLog, IUploadFileWithRequiredFileApiResponse apiResponseLocalVar, System.IO.Stream requiredFile, long petId, Option additionalMetadata); /// /// Logs exceptions that occur while retrieving the server response @@ -1926,8 +2599,8 @@ namespace Org.OpenAPITools.Api /// ID of pet to update /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UploadFileWithRequiredFileOrDefaultAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UploadFileWithRequiredFileOrDefaultAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1947,8 +2620,8 @@ namespace Org.OpenAPITools.Api /// ID of pet to update /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UploadFileWithRequiredFileAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UploadFileWithRequiredFileAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2014,7 +2687,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/{petId}/uploadImageWithRequiredFile", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UploadFileWithRequiredFileApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/{petId}/uploadImageWithRequiredFile", requestedAtLocalVar, _jsonSerializerOptions); AfterUploadFileWithRequiredFileDefaultImplementation(apiResponseLocalVar, requiredFile, petId, additionalMetadata); @@ -2035,5 +2710,82 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class UploadFileWithRequiredFileApiResponse : Org.OpenAPITools.Client.ApiResponse, IUploadFileWithRequiredFileApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UploadFileWithRequiredFileApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.ApiResponse Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.ApiResponse result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/StoreApi.cs index 27dfa739a190..25a31f0a4378 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/StoreApi.cs @@ -17,8 +17,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -42,8 +42,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of the order that needs to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default); /// /// Delete purchase order by ID @@ -53,8 +53,8 @@ namespace Org.OpenAPITools.Api /// /// ID of the order that needs to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> DeleteOrderOrDefaultAsync(string orderId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeleteOrderOrDefaultAsync(string orderId, System.Threading.CancellationToken cancellationToken = default); /// /// Returns pet inventories by status @@ -64,8 +64,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Dictionary<string, int>>> - Task>> GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Returns pet inventories by status @@ -74,8 +74,8 @@ namespace Org.OpenAPITools.Api /// Returns a map of status codes to quantities /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Dictionary<string, int>>> - Task>> GetInventoryOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetInventoryOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Find purchase order by ID @@ -86,8 +86,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of pet that needs to be fetched /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Order>> - Task> GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default); /// /// Find purchase order by ID @@ -97,8 +97,8 @@ namespace Org.OpenAPITools.Api /// /// ID of pet that needs to be fetched /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Order>> - Task> GetOrderByIdOrDefaultAsync(long orderId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetOrderByIdOrDefaultAsync(long orderId, System.Threading.CancellationToken cancellationToken = default); /// /// Place an order for a pet @@ -109,8 +109,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// order placed for purchasing the pet /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Order>> - Task> PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default); /// /// Place an order for a pet @@ -120,29 +120,100 @@ namespace Org.OpenAPITools.Api /// /// order placed for purchasing the pet /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Order>> - Task> PlaceOrderOrDefaultAsync(Order order, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task PlaceOrderOrDefaultAsync(Order order, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IDeleteOrderApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface IGetInventoryApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IGetOrderByIdApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface IPlaceOrderApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class StoreApiEvents { /// /// The event raised after the server response /// - public event EventHandler> OnDeleteOrder; + public event EventHandler OnDeleteOrder; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorDeleteOrder; - internal void ExecuteOnDeleteOrder(ApiResponse apiResponse) + internal void ExecuteOnDeleteOrder(StoreApi.DeleteOrderApiResponse apiResponse) { - OnDeleteOrder?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnDeleteOrder?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorDeleteOrder(Exception exception) @@ -153,16 +224,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>> OnGetInventory; + public event EventHandler OnGetInventory; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorGetInventory; - internal void ExecuteOnGetInventory(ApiResponse> apiResponse) + internal void ExecuteOnGetInventory(StoreApi.GetInventoryApiResponse apiResponse) { - OnGetInventory?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnGetInventory?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetInventory(Exception exception) @@ -173,16 +244,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnGetOrderById; + public event EventHandler OnGetOrderById; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorGetOrderById; - internal void ExecuteOnGetOrderById(ApiResponse apiResponse) + internal void ExecuteOnGetOrderById(StoreApi.GetOrderByIdApiResponse apiResponse) { - OnGetOrderById?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnGetOrderById?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetOrderById(Exception exception) @@ -193,16 +264,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnPlaceOrder; + public event EventHandler OnPlaceOrder; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorPlaceOrder; - internal void ExecuteOnPlaceOrder(ApiResponse apiResponse) + internal void ExecuteOnPlaceOrder(StoreApi.PlaceOrderApiResponse apiResponse) { - OnPlaceOrder?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnPlaceOrder?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorPlaceOrder(Exception exception) @@ -218,6 +289,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -262,7 +338,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public StoreApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, StoreApiEvents storeApiEvents, + public StoreApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, StoreApiEvents storeApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -270,7 +346,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = storeApiEvents; ApiKeyProvider = apiKeyProvider; @@ -298,7 +375,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterDeleteOrderDefaultImplementation(ApiResponse apiResponseLocalVar, string orderId) + private void AfterDeleteOrderDefaultImplementation(IDeleteOrderApiResponse apiResponseLocalVar, string orderId) { bool suppressDefaultLog = false; AfterDeleteOrder(ref suppressDefaultLog, apiResponseLocalVar, orderId); @@ -312,7 +389,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterDeleteOrder(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string orderId); + partial void AfterDeleteOrder(ref bool suppressDefaultLog, IDeleteOrderApiResponse apiResponseLocalVar, string orderId); /// /// Logs exceptions that occur while retrieving the server response @@ -344,8 +421,8 @@ namespace Org.OpenAPITools.Api /// /// ID of the order that needs to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeleteOrderOrDefaultAsync(string orderId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeleteOrderOrDefaultAsync(string orderId, System.Threading.CancellationToken cancellationToken = default) { try { @@ -363,8 +440,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of the order that needs to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -392,7 +469,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order/{order_id}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + DeleteOrderApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order/{order_id}", requestedAtLocalVar, _jsonSerializerOptions); AfterDeleteOrderDefaultImplementation(apiResponseLocalVar, orderId); @@ -410,11 +489,62 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class DeleteOrderApiResponse : Org.OpenAPITools.Client.ApiResponse, IDeleteOrderApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public DeleteOrderApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterGetInventoryDefaultImplementation(ApiResponse> apiResponseLocalVar) + private void AfterGetInventoryDefaultImplementation(IGetInventoryApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterGetInventory(ref suppressDefaultLog, apiResponseLocalVar); @@ -427,7 +557,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetInventory(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar); + partial void AfterGetInventory(ref bool suppressDefaultLog, IGetInventoryApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -456,8 +586,8 @@ namespace Org.OpenAPITools.Api /// Returns pet inventories by status Returns a map of status codes to quantities /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> GetInventoryOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetInventoryOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -474,8 +604,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -515,7 +645,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/inventory", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetInventoryApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/inventory", requestedAtLocalVar, _jsonSerializerOptions); AfterGetInventoryDefaultImplementation(apiResponseLocalVar); @@ -537,6 +669,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetInventoryApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetInventoryApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetInventoryApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Dictionary Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Dictionary result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatGetOrderById(ref long orderId); /// @@ -544,7 +753,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterGetOrderByIdDefaultImplementation(ApiResponse apiResponseLocalVar, long orderId) + private void AfterGetOrderByIdDefaultImplementation(IGetOrderByIdApiResponse apiResponseLocalVar, long orderId) { bool suppressDefaultLog = false; AfterGetOrderById(ref suppressDefaultLog, apiResponseLocalVar, orderId); @@ -558,7 +767,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetOrderById(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long orderId); + partial void AfterGetOrderById(ref bool suppressDefaultLog, IGetOrderByIdApiResponse apiResponseLocalVar, long orderId); /// /// Logs exceptions that occur while retrieving the server response @@ -590,8 +799,8 @@ namespace Org.OpenAPITools.Api /// /// ID of pet that needs to be fetched /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetOrderByIdOrDefaultAsync(long orderId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetOrderByIdOrDefaultAsync(long orderId, System.Threading.CancellationToken cancellationToken = default) { try { @@ -609,8 +818,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of pet that needs to be fetched /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -646,7 +855,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order/{order_id}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetOrderByIdApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order/{order_id}", requestedAtLocalVar, _jsonSerializerOptions); AfterGetOrderByIdDefaultImplementation(apiResponseLocalVar, orderId); @@ -664,6 +875,95 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetOrderByIdApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetOrderByIdApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetOrderByIdApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.Order Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.Order result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatPlaceOrder(Order order); /// @@ -682,7 +982,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterPlaceOrderDefaultImplementation(ApiResponse apiResponseLocalVar, Order order) + private void AfterPlaceOrderDefaultImplementation(IPlaceOrderApiResponse apiResponseLocalVar, Order order) { bool suppressDefaultLog = false; AfterPlaceOrder(ref suppressDefaultLog, apiResponseLocalVar, order); @@ -696,7 +996,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterPlaceOrder(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Order order); + partial void AfterPlaceOrder(ref bool suppressDefaultLog, IPlaceOrderApiResponse apiResponseLocalVar, Order order); /// /// Logs exceptions that occur while retrieving the server response @@ -728,8 +1028,8 @@ namespace Org.OpenAPITools.Api /// /// order placed for purchasing the pet /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> PlaceOrderOrDefaultAsync(Order order, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task PlaceOrderOrDefaultAsync(Order order, System.Threading.CancellationToken cancellationToken = default) { try { @@ -747,8 +1047,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// order placed for purchasing the pet /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -798,7 +1098,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + PlaceOrderApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order", requestedAtLocalVar, _jsonSerializerOptions); AfterPlaceOrderDefaultImplementation(apiResponseLocalVar, order); @@ -815,5 +1117,88 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class PlaceOrderApiResponse : Org.OpenAPITools.Client.ApiResponse, IPlaceOrderApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public PlaceOrderApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.Order Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.Order result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/UserApi.cs index 1fe6462438a8..d8bba20a4d72 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Api/UserApi.cs @@ -17,8 +17,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -42,8 +42,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Created user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default); /// /// Create user @@ -53,8 +53,8 @@ namespace Org.OpenAPITools.Api /// /// Created user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> CreateUserOrDefaultAsync(User user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUserOrDefaultAsync(User user, System.Threading.CancellationToken cancellationToken = default); /// /// Creates list of users with given input array @@ -65,8 +65,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// List of user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default); /// /// Creates list of users with given input array @@ -76,8 +76,8 @@ namespace Org.OpenAPITools.Api /// /// List of user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> CreateUsersWithArrayInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUsersWithArrayInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default); /// /// Creates list of users with given input array @@ -88,8 +88,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// List of user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default); /// /// Creates list of users with given input array @@ -99,8 +99,8 @@ namespace Org.OpenAPITools.Api /// /// List of user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> CreateUsersWithListInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUsersWithListInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default); /// /// Delete user @@ -111,8 +111,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// The name that needs to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default); /// /// Delete user @@ -122,8 +122,8 @@ namespace Org.OpenAPITools.Api /// /// The name that needs to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> DeleteUserOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeleteUserOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default); /// /// Get user by user name @@ -134,8 +134,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// The name that needs to be fetched. Use user1 for testing. /// Cancellation Token to cancel the request. - /// Task<ApiResponse<User>> - Task> GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default); /// /// Get user by user name @@ -145,8 +145,8 @@ namespace Org.OpenAPITools.Api /// /// The name that needs to be fetched. Use user1 for testing. /// Cancellation Token to cancel the request. - /// Task<ApiResponse>User>> - Task> GetUserByNameOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetUserByNameOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default); /// /// Logs user into the system @@ -158,8 +158,8 @@ namespace Org.OpenAPITools.Api /// The user name for login /// The password for login in clear text /// Cancellation Token to cancel the request. - /// Task<ApiResponse<string>> - Task> LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default); /// /// Logs user into the system @@ -170,8 +170,8 @@ namespace Org.OpenAPITools.Api /// The user name for login /// The password for login in clear text /// Cancellation Token to cancel the request. - /// Task<ApiResponse>string>> - Task> LoginUserOrDefaultAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task LoginUserOrDefaultAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default); /// /// Logs out current logged in user session @@ -181,8 +181,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Logs out current logged in user session @@ -191,8 +191,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> LogoutUserOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task LogoutUserOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Updated user @@ -204,8 +204,8 @@ namespace Org.OpenAPITools.Api /// Updated user object /// name that need to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> UpdateUserAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdateUserAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default); /// /// Updated user @@ -216,29 +216,154 @@ namespace Org.OpenAPITools.Api /// Updated user object /// name that need to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> UpdateUserOrDefaultAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdateUserOrDefaultAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface ICreateUserApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface ICreateUsersWithArrayInputApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface ICreateUsersWithListInputApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface IDeleteUserApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface IGetUserByNameApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface ILoginUserApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface ILogoutUserApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface IUpdateUserApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class UserApiEvents { /// /// The event raised after the server response /// - public event EventHandler> OnCreateUser; + public event EventHandler OnCreateUser; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorCreateUser; - internal void ExecuteOnCreateUser(ApiResponse apiResponse) + internal void ExecuteOnCreateUser(UserApi.CreateUserApiResponse apiResponse) { - OnCreateUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnCreateUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorCreateUser(Exception exception) @@ -249,16 +374,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnCreateUsersWithArrayInput; + public event EventHandler OnCreateUsersWithArrayInput; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorCreateUsersWithArrayInput; - internal void ExecuteOnCreateUsersWithArrayInput(ApiResponse apiResponse) + internal void ExecuteOnCreateUsersWithArrayInput(UserApi.CreateUsersWithArrayInputApiResponse apiResponse) { - OnCreateUsersWithArrayInput?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnCreateUsersWithArrayInput?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorCreateUsersWithArrayInput(Exception exception) @@ -269,16 +394,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnCreateUsersWithListInput; + public event EventHandler OnCreateUsersWithListInput; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorCreateUsersWithListInput; - internal void ExecuteOnCreateUsersWithListInput(ApiResponse apiResponse) + internal void ExecuteOnCreateUsersWithListInput(UserApi.CreateUsersWithListInputApiResponse apiResponse) { - OnCreateUsersWithListInput?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnCreateUsersWithListInput?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorCreateUsersWithListInput(Exception exception) @@ -289,16 +414,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnDeleteUser; + public event EventHandler OnDeleteUser; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorDeleteUser; - internal void ExecuteOnDeleteUser(ApiResponse apiResponse) + internal void ExecuteOnDeleteUser(UserApi.DeleteUserApiResponse apiResponse) { - OnDeleteUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnDeleteUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorDeleteUser(Exception exception) @@ -309,16 +434,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnGetUserByName; + public event EventHandler OnGetUserByName; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorGetUserByName; - internal void ExecuteOnGetUserByName(ApiResponse apiResponse) + internal void ExecuteOnGetUserByName(UserApi.GetUserByNameApiResponse apiResponse) { - OnGetUserByName?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnGetUserByName?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetUserByName(Exception exception) @@ -329,16 +454,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnLoginUser; + public event EventHandler OnLoginUser; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorLoginUser; - internal void ExecuteOnLoginUser(ApiResponse apiResponse) + internal void ExecuteOnLoginUser(UserApi.LoginUserApiResponse apiResponse) { - OnLoginUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnLoginUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorLoginUser(Exception exception) @@ -349,16 +474,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnLogoutUser; + public event EventHandler OnLogoutUser; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorLogoutUser; - internal void ExecuteOnLogoutUser(ApiResponse apiResponse) + internal void ExecuteOnLogoutUser(UserApi.LogoutUserApiResponse apiResponse) { - OnLogoutUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnLogoutUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorLogoutUser(Exception exception) @@ -369,16 +494,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnUpdateUser; + public event EventHandler OnUpdateUser; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorUpdateUser; - internal void ExecuteOnUpdateUser(ApiResponse apiResponse) + internal void ExecuteOnUpdateUser(UserApi.UpdateUserApiResponse apiResponse) { - OnUpdateUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUpdateUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUpdateUser(Exception exception) @@ -394,6 +519,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -438,7 +568,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public UserApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, UserApiEvents userApiEvents, + public UserApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, UserApiEvents userApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -446,7 +576,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = userApiEvents; ApiKeyProvider = apiKeyProvider; @@ -474,7 +605,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterCreateUserDefaultImplementation(ApiResponse apiResponseLocalVar, User user) + private void AfterCreateUserDefaultImplementation(ICreateUserApiResponse apiResponseLocalVar, User user) { bool suppressDefaultLog = false; AfterCreateUser(ref suppressDefaultLog, apiResponseLocalVar, user); @@ -488,7 +619,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterCreateUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, User user); + partial void AfterCreateUser(ref bool suppressDefaultLog, ICreateUserApiResponse apiResponseLocalVar, User user); /// /// Logs exceptions that occur while retrieving the server response @@ -520,8 +651,8 @@ namespace Org.OpenAPITools.Api /// /// Created user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUserOrDefaultAsync(User user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUserOrDefaultAsync(User user, System.Threading.CancellationToken cancellationToken = default) { try { @@ -539,8 +670,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Created user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -580,7 +711,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + CreateUserApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user", requestedAtLocalVar, _jsonSerializerOptions); AfterCreateUserDefaultImplementation(apiResponseLocalVar, user); @@ -598,6 +731,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class CreateUserApiResponse : Org.OpenAPITools.Client.ApiResponse, ICreateUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public CreateUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatCreateUsersWithArrayInput(List user); /// @@ -616,7 +794,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterCreateUsersWithArrayInputDefaultImplementation(ApiResponse apiResponseLocalVar, List user) + private void AfterCreateUsersWithArrayInputDefaultImplementation(ICreateUsersWithArrayInputApiResponse apiResponseLocalVar, List user) { bool suppressDefaultLog = false; AfterCreateUsersWithArrayInput(ref suppressDefaultLog, apiResponseLocalVar, user); @@ -630,7 +808,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterCreateUsersWithArrayInput(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, List user); + partial void AfterCreateUsersWithArrayInput(ref bool suppressDefaultLog, ICreateUsersWithArrayInputApiResponse apiResponseLocalVar, List user); /// /// Logs exceptions that occur while retrieving the server response @@ -662,8 +840,8 @@ namespace Org.OpenAPITools.Api /// /// List of user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUsersWithArrayInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUsersWithArrayInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default) { try { @@ -681,8 +859,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// List of user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -722,7 +900,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/createWithArray", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + CreateUsersWithArrayInputApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/createWithArray", requestedAtLocalVar, _jsonSerializerOptions); AfterCreateUsersWithArrayInputDefaultImplementation(apiResponseLocalVar, user); @@ -740,6 +920,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class CreateUsersWithArrayInputApiResponse : Org.OpenAPITools.Client.ApiResponse, ICreateUsersWithArrayInputApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public CreateUsersWithArrayInputApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatCreateUsersWithListInput(List user); /// @@ -758,7 +983,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterCreateUsersWithListInputDefaultImplementation(ApiResponse apiResponseLocalVar, List user) + private void AfterCreateUsersWithListInputDefaultImplementation(ICreateUsersWithListInputApiResponse apiResponseLocalVar, List user) { bool suppressDefaultLog = false; AfterCreateUsersWithListInput(ref suppressDefaultLog, apiResponseLocalVar, user); @@ -772,7 +997,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterCreateUsersWithListInput(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, List user); + partial void AfterCreateUsersWithListInput(ref bool suppressDefaultLog, ICreateUsersWithListInputApiResponse apiResponseLocalVar, List user); /// /// Logs exceptions that occur while retrieving the server response @@ -804,8 +1029,8 @@ namespace Org.OpenAPITools.Api /// /// List of user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUsersWithListInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUsersWithListInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default) { try { @@ -823,8 +1048,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// List of user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -864,7 +1089,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/createWithList", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + CreateUsersWithListInputApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/createWithList", requestedAtLocalVar, _jsonSerializerOptions); AfterCreateUsersWithListInputDefaultImplementation(apiResponseLocalVar, user); @@ -882,6 +1109,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class CreateUsersWithListInputApiResponse : Org.OpenAPITools.Client.ApiResponse, ICreateUsersWithListInputApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public CreateUsersWithListInputApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatDeleteUser(ref string username); /// @@ -900,7 +1172,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterDeleteUserDefaultImplementation(ApiResponse apiResponseLocalVar, string username) + private void AfterDeleteUserDefaultImplementation(IDeleteUserApiResponse apiResponseLocalVar, string username) { bool suppressDefaultLog = false; AfterDeleteUser(ref suppressDefaultLog, apiResponseLocalVar, username); @@ -914,7 +1186,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterDeleteUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string username); + partial void AfterDeleteUser(ref bool suppressDefaultLog, IDeleteUserApiResponse apiResponseLocalVar, string username); /// /// Logs exceptions that occur while retrieving the server response @@ -946,8 +1218,8 @@ namespace Org.OpenAPITools.Api /// /// The name that needs to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeleteUserOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeleteUserOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default) { try { @@ -965,8 +1237,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// The name that needs to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -994,7 +1266,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + DeleteUserApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); AfterDeleteUserDefaultImplementation(apiResponseLocalVar, username); @@ -1012,6 +1286,57 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class DeleteUserApiResponse : Org.OpenAPITools.Client.ApiResponse, IDeleteUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public DeleteUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatGetUserByName(ref string username); /// @@ -1030,7 +1355,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterGetUserByNameDefaultImplementation(ApiResponse apiResponseLocalVar, string username) + private void AfterGetUserByNameDefaultImplementation(IGetUserByNameApiResponse apiResponseLocalVar, string username) { bool suppressDefaultLog = false; AfterGetUserByName(ref suppressDefaultLog, apiResponseLocalVar, username); @@ -1044,7 +1369,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetUserByName(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string username); + partial void AfterGetUserByName(ref bool suppressDefaultLog, IGetUserByNameApiResponse apiResponseLocalVar, string username); /// /// Logs exceptions that occur while retrieving the server response @@ -1076,8 +1401,8 @@ namespace Org.OpenAPITools.Api /// /// The name that needs to be fetched. Use user1 for testing. /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetUserByNameOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetUserByNameOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1095,8 +1420,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// The name that needs to be fetched. Use user1 for testing. /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1134,7 +1459,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetUserByNameApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); AfterGetUserByNameDefaultImplementation(apiResponseLocalVar, username); @@ -1152,6 +1479,95 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetUserByNameApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetUserByNameApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetUserByNameApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.User Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.User result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatLoginUser(ref string username, ref string password); /// @@ -1175,7 +1591,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterLoginUserDefaultImplementation(ApiResponse apiResponseLocalVar, string username, string password) + private void AfterLoginUserDefaultImplementation(ILoginUserApiResponse apiResponseLocalVar, string username, string password) { bool suppressDefaultLog = false; AfterLoginUser(ref suppressDefaultLog, apiResponseLocalVar, username, password); @@ -1190,7 +1606,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterLoginUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string username, string password); + partial void AfterLoginUser(ref bool suppressDefaultLog, ILoginUserApiResponse apiResponseLocalVar, string username, string password); /// /// Logs exceptions that occur while retrieving the server response @@ -1225,8 +1641,8 @@ namespace Org.OpenAPITools.Api /// The user name for login /// The password for login in clear text /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> LoginUserOrDefaultAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task LoginUserOrDefaultAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1245,8 +1661,8 @@ namespace Org.OpenAPITools.Api /// The user name for login /// The password for login in clear text /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1290,7 +1706,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/login", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + LoginUserApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/login", requestedAtLocalVar, _jsonSerializerOptions); AfterLoginUserDefaultImplementation(apiResponseLocalVar, username, password); @@ -1308,11 +1726,94 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class LoginUserApiResponse : Org.OpenAPITools.Client.ApiResponse, ILoginUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public LoginUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public string Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out string result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterLogoutUserDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterLogoutUserDefaultImplementation(ILogoutUserApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterLogoutUser(ref suppressDefaultLog, apiResponseLocalVar); @@ -1325,7 +1826,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterLogoutUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterLogoutUser(ref bool suppressDefaultLog, ILogoutUserApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -1354,8 +1855,8 @@ namespace Org.OpenAPITools.Api /// Logs out current logged in user session /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> LogoutUserOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task LogoutUserOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -1372,8 +1873,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1396,7 +1897,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/logout", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + LogoutUserApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/logout", requestedAtLocalVar, _jsonSerializerOptions); AfterLogoutUserDefaultImplementation(apiResponseLocalVar); @@ -1414,6 +1917,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class LogoutUserApiResponse : Org.OpenAPITools.Client.ApiResponse, ILogoutUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public LogoutUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUpdateUser(User user, ref string username); /// @@ -1437,7 +1985,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterUpdateUserDefaultImplementation(ApiResponse apiResponseLocalVar, User user, string username) + private void AfterUpdateUserDefaultImplementation(IUpdateUserApiResponse apiResponseLocalVar, User user, string username) { bool suppressDefaultLog = false; AfterUpdateUser(ref suppressDefaultLog, apiResponseLocalVar, user, username); @@ -1452,7 +2000,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterUpdateUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, User user, string username); + partial void AfterUpdateUser(ref bool suppressDefaultLog, IUpdateUserApiResponse apiResponseLocalVar, User user, string username); /// /// Logs exceptions that occur while retrieving the server response @@ -1487,8 +2035,8 @@ namespace Org.OpenAPITools.Api /// Updated user object /// name that need to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdateUserOrDefaultAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdateUserOrDefaultAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1507,8 +2055,8 @@ namespace Org.OpenAPITools.Api /// Updated user object /// name that need to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdateUserAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdateUserAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1549,7 +2097,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UpdateUserApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); AfterUpdateUserDefaultImplementation(apiResponseLocalVar, user, username); @@ -1566,5 +2116,56 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class UpdateUserApiResponse : Org.OpenAPITools.Client.ApiResponse, IUpdateUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UpdateUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs index 28d50d6378f8..3cb65e5adc0b 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs @@ -5,18 +5,18 @@ namespace Org.OpenAPITools.Client /// /// Useful for tracking server health /// - public class ApiResponseEventArgs : EventArgs + public class ApiResponseEventArgs : EventArgs { /// /// The ApiResponse /// - public ApiResponse ApiResponse { get; } + public ApiResponse ApiResponse { get; } /// /// The ApiResponseEventArgs /// /// - public ApiResponseEventArgs(ApiResponse apiResponse) + public ApiResponseEventArgs(ApiResponse apiResponse) { ApiResponse = apiResponse; } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 00289f34557e..9608a10138cd 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -9,7 +9,6 @@ */ using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Net; @@ -18,15 +17,15 @@ namespace Org.OpenAPITools.Client /// /// Provides a non-generic contract for the ApiResponse wrapper. /// - public interface IApiResponse + public partial interface IApiResponse { /// - /// The type that represents the server's response. + /// The IsSuccessStatusCode from the api response /// - Type ResponseType { get; } + bool IsSuccessStatusCode { get; } /// - /// Gets or sets the status code (HTTP status code) + /// Gets the status code (HTTP status code) /// /// The status code. HttpStatusCode StatusCode { get; } @@ -41,11 +40,26 @@ namespace Org.OpenAPITools.Client /// DateTime DownloadedAt { get; } + /// + /// The headers contained in the api response + /// + System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// /// The path used when making the request. /// string Path { get; } + /// + /// The reason phrase contained in the api response + /// + string ReasonPhrase { get; } + + /// + /// The DateTime when the request was sent. + /// + DateTime RequestedAt { get; } + /// /// The Uri used when making the request. /// @@ -55,26 +69,18 @@ namespace Org.OpenAPITools.Client /// /// API Response /// - public partial class ApiResponse : IApiResponse + public partial class ApiResponse : IApiResponse { /// - /// Gets or sets the status code (HTTP status code) + /// Gets the status code (HTTP status code) /// /// The status code. public HttpStatusCode StatusCode { get; } - /// - /// The type that represents the server's response. - /// - public Type ResponseType - { - get { return typeof(T); } - } - /// /// The raw data /// - public string RawContent { get; private set; } + public string RawContent { get; protected set; } /// /// The IsSuccessStatusCode from the api response @@ -112,9 +118,9 @@ namespace Org.OpenAPITools.Client public Uri RequestUri { get; } /// - /// The JsonSerialzierOptions + /// The /// - private System.Text.Json.JsonSerializerOptions _jsonSerializerOptions; + protected System.Text.Json.JsonSerializerOptions _jsonSerializerOptions; /// /// Construct the response using an HttpResponseMessage @@ -140,33 +146,45 @@ namespace Org.OpenAPITools.Client } partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + } + + /// + /// An interface for responses of type + /// + /// + public interface IOk : IApiResponse + { + /// + /// Deserializes the response if the response is Ok + /// + /// + TType Ok(); /// - /// Deserializes the server's response + /// Returns true if the response is Ok and the deserialized response is not null /// - public T AsModel() - { - // This logic may be modified with the AsModel.mustache template - return IsSuccessStatusCode - ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) - : default(T); - } + /// + /// + bool TryOk([NotNullWhen(true)]out TType result); + } + + /// + /// An interface for responses of type + /// + /// + public interface IDefault : IApiResponse + { + /// + /// Deserializes the response if the response is Default + /// + /// + TType Default(); /// - /// Returns true when the model can be deserialized + /// Returns true if the response is Default and the deserialized response is not null /// - public bool TryToModel([NotNullWhen(true)] out T model) - { - try - { - model = AsModel(); - return model != null; - } - catch - { - model = default(T); - return false; - } - } + /// + /// + bool TryDefault([NotNullWhen(true)]out TType result); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/README.md b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/README.md index dc12f50bd266..f35af0325070 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/README.md +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/README.md @@ -61,8 +61,8 @@ namespace YourProject { var host = CreateHostBuilder(args).Build(); var api = host.Services.GetRequiredService(); - ApiResponse response = await api.Call123TestSpecialTagsAsync("todo"); - ModelClient model = response.AsModel(); + Call123TestSpecialTagsApiResponse apiResponse = await api.Call123TestSpecialTagsAsync("todo"); + ModelClient model = apiResponse.Ok(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs index 15f4078256d7..6151cce5b8b5 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs @@ -58,7 +58,7 @@ namespace Org.OpenAPITools.Test.Api { string personId = default!; var response = await _instance.ListAsync(personId); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Api/DefaultApi.cs index b4e94a2c418e..8a23b09ad625 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -44,8 +44,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// The id of the person to retrieve /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Person>> - Task> ListAsync(string personId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task ListAsync(string personId, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -55,29 +55,40 @@ namespace Org.OpenAPITools.Api /// /// The id of the person to retrieve /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Person>?> - Task?> ListOrDefaultAsync(string personId, System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task ListOrDefaultAsync(string personId, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IListApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class DefaultApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnList; + public event EventHandler? OnList; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorList; - internal void ExecuteOnList(ApiResponse apiResponse) + internal void ExecuteOnList(DefaultApi.ListApiResponse apiResponse) { - OnList?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnList?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorList(Exception exception) @@ -93,6 +104,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -112,10 +128,11 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public DefaultApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, DefaultApiEvents defaultApiEvents) + public DefaultApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, DefaultApiEvents defaultApiEvents) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = defaultApiEvents; } @@ -138,7 +155,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterListDefaultImplementation(ApiResponse apiResponseLocalVar, string personId) + private void AfterListDefaultImplementation(IListApiResponse apiResponseLocalVar, string personId) { bool suppressDefaultLog = false; AfterList(ref suppressDefaultLog, apiResponseLocalVar, personId); @@ -152,7 +169,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterList(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string personId); + partial void AfterList(ref bool suppressDefaultLog, IListApiResponse apiResponseLocalVar, string personId); /// /// Logs exceptions that occur while retrieving the server response @@ -184,8 +201,8 @@ namespace Org.OpenAPITools.Api /// /// The id of the person to retrieve /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> ListOrDefaultAsync(string personId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task ListOrDefaultAsync(string personId, System.Threading.CancellationToken cancellationToken = default) { try { @@ -203,8 +220,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// The id of the person to retrieve /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> ListAsync(string personId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task ListAsync(string personId, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -241,7 +258,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/person/display/{personId}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + ListApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/person/display/{personId}", requestedAtLocalVar, _jsonSerializerOptions); AfterListDefaultImplementation(apiResponseLocalVar, personId); @@ -258,5 +277,82 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class ListApiResponse : Org.OpenAPITools.Client.ApiResponse, IListApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public ListApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.Person? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.Person? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs index 28d50d6378f8..3cb65e5adc0b 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs @@ -5,18 +5,18 @@ namespace Org.OpenAPITools.Client /// /// Useful for tracking server health /// - public class ApiResponseEventArgs : EventArgs + public class ApiResponseEventArgs : EventArgs { /// /// The ApiResponse /// - public ApiResponse ApiResponse { get; } + public ApiResponse ApiResponse { get; } /// /// The ApiResponseEventArgs /// /// - public ApiResponseEventArgs(ApiResponse apiResponse) + public ApiResponseEventArgs(ApiResponse apiResponse) { ApiResponse = apiResponse; } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 61edc84f21c9..eeeecf2e00ee 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -11,7 +11,6 @@ #nullable enable using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Net; @@ -20,15 +19,15 @@ namespace Org.OpenAPITools.Client /// /// Provides a non-generic contract for the ApiResponse wrapper. /// - public interface IApiResponse + public partial interface IApiResponse { /// - /// The type that represents the server's response. + /// The IsSuccessStatusCode from the api response /// - Type ResponseType { get; } + bool IsSuccessStatusCode { get; } /// - /// Gets or sets the status code (HTTP status code) + /// Gets the status code (HTTP status code) /// /// The status code. HttpStatusCode StatusCode { get; } @@ -43,11 +42,26 @@ namespace Org.OpenAPITools.Client /// DateTime DownloadedAt { get; } + /// + /// The headers contained in the api response + /// + System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// /// The path used when making the request. /// string Path { get; } + /// + /// The reason phrase contained in the api response + /// + string? ReasonPhrase { get; } + + /// + /// The DateTime when the request was sent. + /// + DateTime RequestedAt { get; } + /// /// The Uri used when making the request. /// @@ -57,26 +71,18 @@ namespace Org.OpenAPITools.Client /// /// API Response /// - public partial class ApiResponse : IApiResponse + public partial class ApiResponse : IApiResponse { /// - /// Gets or sets the status code (HTTP status code) + /// Gets the status code (HTTP status code) /// /// The status code. public HttpStatusCode StatusCode { get; } - /// - /// The type that represents the server's response. - /// - public Type ResponseType - { - get { return typeof(T); } - } - /// /// The raw data /// - public string RawContent { get; private set; } + public string RawContent { get; protected set; } /// /// The IsSuccessStatusCode from the api response @@ -114,9 +120,9 @@ namespace Org.OpenAPITools.Client public Uri? RequestUri { get; } /// - /// The JsonSerialzierOptions + /// The /// - private System.Text.Json.JsonSerializerOptions _jsonSerializerOptions; + protected System.Text.Json.JsonSerializerOptions _jsonSerializerOptions; /// /// Construct the response using an HttpResponseMessage @@ -142,33 +148,25 @@ namespace Org.OpenAPITools.Client } partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + } + + /// + /// An interface for responses of type + /// + /// + public interface IOk : IApiResponse + { + /// + /// Deserializes the response if the response is Ok + /// + /// + TType Ok(); /// - /// Deserializes the server's response + /// Returns true if the response is Ok and the deserialized response is not null /// - public T? AsModel() - { - // This logic may be modified with the AsModel.mustache template - return IsSuccessStatusCode - ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) - : default(T); - } - - /// - /// Returns true when the model can be deserialized - /// - public bool TryToModel([NotNullWhen(true)] out T? model) - { - try - { - model = AsModel(); - return model != null; - } - catch - { - model = default(T); - return false; - } - } + /// + /// + bool TryOk([NotNullWhen(true)]out TType? result); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/README.md b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/README.md index 57de5c669204..404458e0b5a3 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/README.md +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/README.md @@ -61,8 +61,8 @@ namespace YourProject { var host = CreateHostBuilder(args).Build(); var api = host.Services.GetRequiredService(); - ApiResponse response = await api.ListAsync("todo"); - Person model = response.AsModel(); + ListApiResponse apiResponse = await api.ListAsync("todo"); + Person model = apiResponse.Ok(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs index ef682d1d3b5e..b7bcc281037a 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs @@ -57,7 +57,7 @@ namespace Org.OpenAPITools.Test.Api public async Task RootGetAsyncTest() { var response = await _instance.RootGetAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Api/DefaultApi.cs index 61d06e706247..7065114d02f2 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -43,8 +43,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Fruit>> - Task> RootGetAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task RootGetAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -53,29 +53,40 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Fruit>?> - Task?> RootGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task RootGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IRootGetApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class DefaultApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnRootGet; + public event EventHandler? OnRootGet; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorRootGet; - internal void ExecuteOnRootGet(ApiResponse apiResponse) + internal void ExecuteOnRootGet(DefaultApi.RootGetApiResponse apiResponse) { - OnRootGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnRootGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorRootGet(Exception exception) @@ -91,6 +102,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -110,10 +126,11 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public DefaultApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, DefaultApiEvents defaultApiEvents) + public DefaultApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, DefaultApiEvents defaultApiEvents) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = defaultApiEvents; } @@ -122,7 +139,7 @@ namespace Org.OpenAPITools.Api /// Processes the server response /// /// - private void AfterRootGetDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterRootGetDefaultImplementation(IRootGetApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterRootGet(ref suppressDefaultLog, apiResponseLocalVar); @@ -135,7 +152,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterRootGet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterRootGet(ref bool suppressDefaultLog, IRootGetApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -164,8 +181,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> RootGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task RootGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -182,8 +199,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> RootGetAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task RootGetAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -215,7 +232,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + RootGetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/", requestedAtLocalVar, _jsonSerializerOptions); AfterRootGetDefaultImplementation(apiResponseLocalVar); @@ -232,5 +251,82 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class RootGetApiResponse : Org.OpenAPITools.Client.ApiResponse, IRootGetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public RootGetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.Fruit? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.Fruit? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs index 28d50d6378f8..3cb65e5adc0b 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs @@ -5,18 +5,18 @@ namespace Org.OpenAPITools.Client /// /// Useful for tracking server health /// - public class ApiResponseEventArgs : EventArgs + public class ApiResponseEventArgs : EventArgs { /// /// The ApiResponse /// - public ApiResponse ApiResponse { get; } + public ApiResponse ApiResponse { get; } /// /// The ApiResponseEventArgs /// /// - public ApiResponseEventArgs(ApiResponse apiResponse) + public ApiResponseEventArgs(ApiResponse apiResponse) { ApiResponse = apiResponse; } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 8a2f03913d50..d1800251d6c7 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -11,7 +11,6 @@ #nullable enable using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Net; @@ -20,15 +19,15 @@ namespace Org.OpenAPITools.Client /// /// Provides a non-generic contract for the ApiResponse wrapper. /// - public interface IApiResponse + public partial interface IApiResponse { /// - /// The type that represents the server's response. + /// The IsSuccessStatusCode from the api response /// - Type ResponseType { get; } + bool IsSuccessStatusCode { get; } /// - /// Gets or sets the status code (HTTP status code) + /// Gets the status code (HTTP status code) /// /// The status code. HttpStatusCode StatusCode { get; } @@ -43,11 +42,26 @@ namespace Org.OpenAPITools.Client /// DateTime DownloadedAt { get; } + /// + /// The headers contained in the api response + /// + System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// /// The path used when making the request. /// string Path { get; } + /// + /// The reason phrase contained in the api response + /// + string? ReasonPhrase { get; } + + /// + /// The DateTime when the request was sent. + /// + DateTime RequestedAt { get; } + /// /// The Uri used when making the request. /// @@ -57,26 +71,18 @@ namespace Org.OpenAPITools.Client /// /// API Response /// - public partial class ApiResponse : IApiResponse + public partial class ApiResponse : IApiResponse { /// - /// Gets or sets the status code (HTTP status code) + /// Gets the status code (HTTP status code) /// /// The status code. public HttpStatusCode StatusCode { get; } - /// - /// The type that represents the server's response. - /// - public Type ResponseType - { - get { return typeof(T); } - } - /// /// The raw data /// - public string RawContent { get; private set; } + public string RawContent { get; protected set; } /// /// The IsSuccessStatusCode from the api response @@ -114,9 +120,9 @@ namespace Org.OpenAPITools.Client public Uri? RequestUri { get; } /// - /// The JsonSerialzierOptions + /// The /// - private System.Text.Json.JsonSerializerOptions _jsonSerializerOptions; + protected System.Text.Json.JsonSerializerOptions _jsonSerializerOptions; /// /// Construct the response using an HttpResponseMessage @@ -142,33 +148,25 @@ namespace Org.OpenAPITools.Client } partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + } + + /// + /// An interface for responses of type + /// + /// + public interface IOk : IApiResponse + { + /// + /// Deserializes the response if the response is Ok + /// + /// + TType Ok(); /// - /// Deserializes the server's response + /// Returns true if the response is Ok and the deserialized response is not null /// - public T? AsModel() - { - // This logic may be modified with the AsModel.mustache template - return IsSuccessStatusCode - ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) - : default(T); - } - - /// - /// Returns true when the model can be deserialized - /// - public bool TryToModel([NotNullWhen(true)] out T? model) - { - try - { - model = AsModel(); - return model != null; - } - catch - { - model = default(T); - return false; - } - } + /// + /// + bool TryOk([NotNullWhen(true)]out TType? result); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/README.md b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/README.md index 4a338350fd9f..d4c30c3cd7bb 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/README.md +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/README.md @@ -61,8 +61,8 @@ namespace YourProject { var host = CreateHostBuilder(args).Build(); var api = host.Services.GetRequiredService(); - ApiResponse response = await api.RootGetAsync("todo"); - Fruit model = response.AsModel(); + RootGetApiResponse apiResponse = await api.RootGetAsync("todo"); + Fruit model = apiResponse.Ok(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs index ef682d1d3b5e..b7bcc281037a 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs @@ -57,7 +57,7 @@ namespace Org.OpenAPITools.Test.Api public async Task RootGetAsyncTest() { var response = await _instance.RootGetAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Api/DefaultApi.cs index 61d06e706247..7065114d02f2 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -19,8 +19,8 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; +using System.Diagnostics.CodeAnalysis; namespace Org.OpenAPITools.Api { @@ -43,8 +43,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Fruit>> - Task> RootGetAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task RootGetAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -53,29 +53,40 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Fruit>?> - Task?> RootGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <?> + Task RootGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IRootGetApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class DefaultApiEvents { /// /// The event raised after the server response /// - public event EventHandler>? OnRootGet; + public event EventHandler? OnRootGet; /// /// The event raised after an error querying the server /// public event EventHandler? OnErrorRootGet; - internal void ExecuteOnRootGet(ApiResponse apiResponse) + internal void ExecuteOnRootGet(DefaultApi.RootGetApiResponse apiResponse) { - OnRootGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnRootGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorRootGet(Exception exception) @@ -91,6 +102,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -110,10 +126,11 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public DefaultApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, DefaultApiEvents defaultApiEvents) + public DefaultApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, DefaultApiEvents defaultApiEvents) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = defaultApiEvents; } @@ -122,7 +139,7 @@ namespace Org.OpenAPITools.Api /// Processes the server response /// /// - private void AfterRootGetDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterRootGetDefaultImplementation(IRootGetApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterRootGet(ref suppressDefaultLog, apiResponseLocalVar); @@ -135,7 +152,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterRootGet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterRootGet(ref bool suppressDefaultLog, IRootGetApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -164,8 +181,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task?> RootGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task RootGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -182,8 +199,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> RootGetAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task RootGetAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -215,7 +232,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + RootGetApiResponse apiResponseLocalVar = new(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/", requestedAtLocalVar, _jsonSerializerOptions); AfterRootGetDefaultImplementation(apiResponseLocalVar); @@ -232,5 +251,82 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class RootGetApiResponse : Org.OpenAPITools.Client.ApiResponse, IRootGetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public RootGetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.Fruit? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : null; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk([NotNullWhen(true)]out Org.OpenAPITools.Model.Fruit? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs index 28d50d6378f8..3cb65e5adc0b 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs @@ -5,18 +5,18 @@ namespace Org.OpenAPITools.Client /// /// Useful for tracking server health /// - public class ApiResponseEventArgs : EventArgs + public class ApiResponseEventArgs : EventArgs { /// /// The ApiResponse /// - public ApiResponse ApiResponse { get; } + public ApiResponse ApiResponse { get; } /// /// The ApiResponseEventArgs /// /// - public ApiResponseEventArgs(ApiResponse apiResponse) + public ApiResponseEventArgs(ApiResponse apiResponse) { ApiResponse = apiResponse; } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 8a2f03913d50..d1800251d6c7 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -11,7 +11,6 @@ #nullable enable using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Net; @@ -20,15 +19,15 @@ namespace Org.OpenAPITools.Client /// /// Provides a non-generic contract for the ApiResponse wrapper. /// - public interface IApiResponse + public partial interface IApiResponse { /// - /// The type that represents the server's response. + /// The IsSuccessStatusCode from the api response /// - Type ResponseType { get; } + bool IsSuccessStatusCode { get; } /// - /// Gets or sets the status code (HTTP status code) + /// Gets the status code (HTTP status code) /// /// The status code. HttpStatusCode StatusCode { get; } @@ -43,11 +42,26 @@ namespace Org.OpenAPITools.Client /// DateTime DownloadedAt { get; } + /// + /// The headers contained in the api response + /// + System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// /// The path used when making the request. /// string Path { get; } + /// + /// The reason phrase contained in the api response + /// + string? ReasonPhrase { get; } + + /// + /// The DateTime when the request was sent. + /// + DateTime RequestedAt { get; } + /// /// The Uri used when making the request. /// @@ -57,26 +71,18 @@ namespace Org.OpenAPITools.Client /// /// API Response /// - public partial class ApiResponse : IApiResponse + public partial class ApiResponse : IApiResponse { /// - /// Gets or sets the status code (HTTP status code) + /// Gets the status code (HTTP status code) /// /// The status code. public HttpStatusCode StatusCode { get; } - /// - /// The type that represents the server's response. - /// - public Type ResponseType - { - get { return typeof(T); } - } - /// /// The raw data /// - public string RawContent { get; private set; } + public string RawContent { get; protected set; } /// /// The IsSuccessStatusCode from the api response @@ -114,9 +120,9 @@ namespace Org.OpenAPITools.Client public Uri? RequestUri { get; } /// - /// The JsonSerialzierOptions + /// The /// - private System.Text.Json.JsonSerializerOptions _jsonSerializerOptions; + protected System.Text.Json.JsonSerializerOptions _jsonSerializerOptions; /// /// Construct the response using an HttpResponseMessage @@ -142,33 +148,25 @@ namespace Org.OpenAPITools.Client } partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + } + + /// + /// An interface for responses of type + /// + /// + public interface IOk : IApiResponse + { + /// + /// Deserializes the response if the response is Ok + /// + /// + TType Ok(); /// - /// Deserializes the server's response + /// Returns true if the response is Ok and the deserialized response is not null /// - public T? AsModel() - { - // This logic may be modified with the AsModel.mustache template - return IsSuccessStatusCode - ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) - : default(T); - } - - /// - /// Returns true when the model can be deserialized - /// - public bool TryToModel([NotNullWhen(true)] out T? model) - { - try - { - model = AsModel(); - return model != null; - } - catch - { - model = default(T); - return false; - } - } + /// + /// + bool TryOk([NotNullWhen(true)]out TType? result); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/README.md b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/README.md index 4a338350fd9f..d4c30c3cd7bb 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/README.md +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/README.md @@ -61,8 +61,8 @@ namespace YourProject { var host = CreateHostBuilder(args).Build(); var api = host.Services.GetRequiredService(); - ApiResponse response = await api.RootGetAsync("todo"); - Fruit model = response.AsModel(); + RootGetApiResponse apiResponse = await api.RootGetAsync("todo"); + Fruit model = apiResponse.Ok(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs index 9d8aa32892e6..cf82a3e39bd6 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/AnotherFakeApiTests.cs @@ -58,7 +58,7 @@ namespace Org.OpenAPITools.Test.Api { ModelClient modelClient = default; var response = await _instance.Call123TestSpecialTagsAsync(modelClient); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs index 80a091338361..88cf05ba9ed8 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs @@ -57,7 +57,7 @@ namespace Org.OpenAPITools.Test.Api public async Task FooGetAsyncTest() { var response = await _instance.FooGetAsync(); - var model = response.AsModel(); + var model = response.Default(); Assert.IsType(model); } @@ -78,8 +78,30 @@ namespace Org.OpenAPITools.Test.Api public async Task HelloAsyncTest() { var response = await _instance.HelloAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } + + /// + /// Test RolesReportGet + /// + [Fact (Skip = "not implemented")] + public async Task RolesReportGetAsyncTest() + { + var response = await _instance.RolesReportGetAsync(); + var model = response.Ok(); + Assert.IsType>>(model); + } + + /// + /// Test Test + /// + [Fact (Skip = "not implemented")] + public async Task TestAsyncTest() + { + var response = await _instance.TestAsync(); + var model = response.Ok(); + Assert.IsType(model); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs index bc5d327bda06..6c82be59af88 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/FakeApiTests.cs @@ -57,7 +57,7 @@ namespace Org.OpenAPITools.Test.Api public async Task FakeHealthGetAsyncTest() { var response = await _instance.FakeHealthGetAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -69,7 +69,7 @@ namespace Org.OpenAPITools.Test.Api { Client.Option body = default; var response = await _instance.FakeOuterBooleanSerializeAsync(body); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -81,7 +81,7 @@ namespace Org.OpenAPITools.Test.Api { Client.Option outerComposite = default; var response = await _instance.FakeOuterCompositeSerializeAsync(outerComposite); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -93,7 +93,7 @@ namespace Org.OpenAPITools.Test.Api { Client.Option body = default; var response = await _instance.FakeOuterNumberSerializeAsync(body); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -106,7 +106,7 @@ namespace Org.OpenAPITools.Test.Api Guid requiredStringUuid = default; Client.Option body = default; var response = await _instance.FakeOuterStringSerializeAsync(requiredStringUuid, body); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -117,7 +117,7 @@ namespace Org.OpenAPITools.Test.Api public async Task GetArrayOfEnumsAsyncTest() { var response = await _instance.GetArrayOfEnumsAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } @@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Test.Api { ModelClient modelClient = default; var response = await _instance.TestClientModelAsync(modelClient); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs index f57b69b4769e..5964bf6e51d6 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/FakeClassnameTags123ApiTests.cs @@ -58,7 +58,7 @@ namespace Org.OpenAPITools.Test.Api { ModelClient modelClient = default; var response = await _instance.TestClassnameAsync(modelClient); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/PetApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/PetApiTests.cs index c6da93dbfa77..c5e6e7e2f9d2 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/PetApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/PetApiTests.cs @@ -79,7 +79,7 @@ namespace Org.OpenAPITools.Test.Api { List status = default; var response = await _instance.FindPetsByStatusAsync(status); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } @@ -91,7 +91,7 @@ namespace Org.OpenAPITools.Test.Api { List tags = default; var response = await _instance.FindPetsByTagsAsync(tags); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } @@ -103,7 +103,7 @@ namespace Org.OpenAPITools.Test.Api { long petId = default; var response = await _instance.GetPetByIdAsync(petId); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -139,7 +139,7 @@ namespace Org.OpenAPITools.Test.Api Client.Option file = default; Client.Option additionalMetadata = default; var response = await _instance.UploadFileAsync(petId, file, additionalMetadata); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -153,7 +153,7 @@ namespace Org.OpenAPITools.Test.Api long petId = default; Client.Option additionalMetadata = default; var response = await _instance.UploadFileWithRequiredFileAsync(requiredFile, petId, additionalMetadata); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs index 9c419760defa..1b75e3417005 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/StoreApiTests.cs @@ -67,7 +67,7 @@ namespace Org.OpenAPITools.Test.Api public async Task GetInventoryAsyncTest() { var response = await _instance.GetInventoryAsync(); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType>(model); } @@ -79,7 +79,7 @@ namespace Org.OpenAPITools.Test.Api { long orderId = default; var response = await _instance.GetOrderByIdAsync(orderId); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -91,7 +91,7 @@ namespace Org.OpenAPITools.Test.Api { Order order = default; var response = await _instance.PlaceOrderAsync(order); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/UserApiTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/UserApiTests.cs index c79f103fbef2..38ee1125438a 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/UserApiTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Api/UserApiTests.cs @@ -98,7 +98,7 @@ namespace Org.OpenAPITools.Test.Api { string username = default; var response = await _instance.GetUserByNameAsync(username); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } @@ -111,7 +111,7 @@ namespace Org.OpenAPITools.Test.Api string username = default; string password = default; var response = await _instance.LoginUserAsync(username, password); - var model = response.AsModel(); + var model = response.Ok(); Assert.IsType(model); } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Model/AppleTests.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Model/AppleTests.cs index a66d14b310bd..c7c8ccd47c11 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Model/AppleTests.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools.Test/Model/AppleTests.cs @@ -53,6 +53,15 @@ namespace Org.OpenAPITools.Test.Model //Assert.IsType(instance); } + /// + /// Test the property 'ColorCode' + /// + [Fact] + public void ColorCodeTest() + { + // TODO unit test for the property 'ColorCode' + } + /// /// Test the property 'Cultivar' /// diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/AnotherFakeApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/AnotherFakeApi.cs index 86dc387d166d..2748a0eb3067 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/AnotherFakeApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/AnotherFakeApi.cs @@ -17,7 +17,6 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; namespace Org.OpenAPITools.Api @@ -42,8 +41,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ModelClient>> - Task> Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); /// /// To test special tags @@ -53,29 +52,40 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ModelClient>> - Task> Call123TestSpecialTagsOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task Call123TestSpecialTagsOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface ICall123TestSpecialTagsApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class AnotherFakeApiEvents { /// /// The event raised after the server response /// - public event EventHandler> OnCall123TestSpecialTags; + public event EventHandler OnCall123TestSpecialTags; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorCall123TestSpecialTags; - internal void ExecuteOnCall123TestSpecialTags(ApiResponse apiResponse) + internal void ExecuteOnCall123TestSpecialTags(AnotherFakeApi.Call123TestSpecialTagsApiResponse apiResponse) { - OnCall123TestSpecialTags?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnCall123TestSpecialTags?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorCall123TestSpecialTags(Exception exception) @@ -91,6 +101,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -135,7 +150,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public AnotherFakeApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, AnotherFakeApiEvents anotherFakeApiEvents, + public AnotherFakeApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, AnotherFakeApiEvents anotherFakeApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -143,7 +158,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = anotherFakeApiEvents; ApiKeyProvider = apiKeyProvider; @@ -171,7 +187,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterCall123TestSpecialTagsDefaultImplementation(ApiResponse apiResponseLocalVar, ModelClient modelClient) + private void AfterCall123TestSpecialTagsDefaultImplementation(ICall123TestSpecialTagsApiResponse apiResponseLocalVar, ModelClient modelClient) { bool suppressDefaultLog = false; AfterCall123TestSpecialTags(ref suppressDefaultLog, apiResponseLocalVar, modelClient); @@ -185,7 +201,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterCall123TestSpecialTags(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, ModelClient modelClient); + partial void AfterCall123TestSpecialTags(ref bool suppressDefaultLog, ICall123TestSpecialTagsApiResponse apiResponseLocalVar, ModelClient modelClient); /// /// Logs exceptions that occur while retrieving the server response @@ -217,8 +233,8 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> Call123TestSpecialTagsOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task Call123TestSpecialTagsOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { try { @@ -236,8 +252,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task Call123TestSpecialTagsAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -285,7 +301,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/another-fake/dummy", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + Call123TestSpecialTagsApiResponse apiResponseLocalVar = new Call123TestSpecialTagsApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/another-fake/dummy", requestedAtLocalVar, _jsonSerializerOptions); AfterCall123TestSpecialTagsDefaultImplementation(apiResponseLocalVar, modelClient); @@ -302,5 +320,82 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class Call123TestSpecialTagsApiResponse : Org.OpenAPITools.Client.ApiResponse, ICall123TestSpecialTagsApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public Call123TestSpecialTagsApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.ModelClient Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out Org.OpenAPITools.Model.ModelClient result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/DefaultApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/DefaultApi.cs index 8bd35ff71ad0..d37e6b70e695 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/DefaultApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/DefaultApi.cs @@ -17,7 +17,6 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; namespace Org.OpenAPITools.Api @@ -41,8 +40,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<FooGetDefaultResponse>> - Task> FooGetAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FooGetAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -51,8 +50,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>FooGetDefaultResponse>> - Task> FooGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FooGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -63,8 +62,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> GetCountryAsync(string country, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetCountryAsync(string country, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -74,8 +73,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> GetCountryOrDefaultAsync(string country, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetCountryOrDefaultAsync(string country, System.Threading.CancellationToken cancellationToken = default); /// /// Hello @@ -85,8 +84,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<Guid>>> - Task>> HelloAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task HelloAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Hello @@ -95,8 +94,8 @@ namespace Org.OpenAPITools.Api /// Hello /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<Guid>>> - Task>> HelloOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task HelloOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -106,8 +105,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<List<RolesReportsHash>>>> - Task>>> RolesReportGetAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task RolesReportGetAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -116,8 +115,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<List<RolesReportsHash>>>> - Task>>> RolesReportGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task RolesReportGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Retrieve an existing Notificationtest's Elements @@ -127,8 +126,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<NotificationtestGetElementsV1ResponseMPayload>> - Task> TestAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Retrieve an existing Notificationtest's Elements @@ -137,29 +136,88 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>NotificationtestGetElementsV1ResponseMPayload>> - Task> TestOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IFooGetApiResponse : Org.OpenAPITools.Client.IApiResponse, IDefault + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface IGetCountryApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IHelloApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IRolesReportGetApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class DefaultApiEvents { /// /// The event raised after the server response /// - public event EventHandler> OnFooGet; + public event EventHandler OnFooGet; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorFooGet; - internal void ExecuteOnFooGet(ApiResponse apiResponse) + internal void ExecuteOnFooGet(DefaultApi.FooGetApiResponse apiResponse) { - OnFooGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFooGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFooGet(Exception exception) @@ -170,16 +228,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnGetCountry; + public event EventHandler OnGetCountry; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorGetCountry; - internal void ExecuteOnGetCountry(ApiResponse apiResponse) + internal void ExecuteOnGetCountry(DefaultApi.GetCountryApiResponse apiResponse) { - OnGetCountry?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnGetCountry?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetCountry(Exception exception) @@ -190,16 +248,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>> OnHello; + public event EventHandler OnHello; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorHello; - internal void ExecuteOnHello(ApiResponse> apiResponse) + internal void ExecuteOnHello(DefaultApi.HelloApiResponse apiResponse) { - OnHello?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnHello?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorHello(Exception exception) @@ -210,16 +268,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>>> OnRolesReportGet; + public event EventHandler OnRolesReportGet; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorRolesReportGet; - internal void ExecuteOnRolesReportGet(ApiResponse>> apiResponse) + internal void ExecuteOnRolesReportGet(DefaultApi.RolesReportGetApiResponse apiResponse) { - OnRolesReportGet?.Invoke(this, new ApiResponseEventArgs>>(apiResponse)); + OnRolesReportGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorRolesReportGet(Exception exception) @@ -230,16 +288,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTest; + public event EventHandler OnTest; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTest; - internal void ExecuteOnTest(ApiResponse apiResponse) + internal void ExecuteOnTest(DefaultApi.TestApiResponse apiResponse) { - OnTest?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTest?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTest(Exception exception) @@ -255,6 +313,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -299,7 +362,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public DefaultApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, DefaultApiEvents defaultApiEvents, + public DefaultApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, DefaultApiEvents defaultApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -307,7 +370,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = defaultApiEvents; ApiKeyProvider = apiKeyProvider; @@ -321,7 +385,7 @@ namespace Org.OpenAPITools.Api /// Processes the server response /// /// - private void AfterFooGetDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterFooGetDefaultImplementation(IFooGetApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterFooGet(ref suppressDefaultLog, apiResponseLocalVar); @@ -334,7 +398,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFooGet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterFooGet(ref bool suppressDefaultLog, IFooGetApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -363,8 +427,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FooGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FooGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -381,8 +445,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FooGetAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FooGetAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -413,7 +477,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/foo", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FooGetApiResponse apiResponseLocalVar = new FooGetApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/foo", requestedAtLocalVar, _jsonSerializerOptions); AfterFooGetDefaultImplementation(apiResponseLocalVar); @@ -431,6 +497,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FooGetApiResponse : Org.OpenAPITools.Client.ApiResponse, IFooGetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FooGetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + /// + /// Deserializes the response if the response is 0 Default + /// + /// + public Org.OpenAPITools.Model.FooGetDefaultResponse Default() + { + // This logic may be modified with the AsModel.mustache template + return IsDefault + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 0 Default and the deserialized response is not null + /// + /// + /// + public bool TryDefault(out Org.OpenAPITools.Model.FooGetDefaultResponse result) + { + result = null; + + try + { + result = Default(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)0); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatGetCountry(ref string country); /// @@ -449,7 +592,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterGetCountryDefaultImplementation(ApiResponse apiResponseLocalVar, string country) + private void AfterGetCountryDefaultImplementation(IGetCountryApiResponse apiResponseLocalVar, string country) { bool suppressDefaultLog = false; AfterGetCountry(ref suppressDefaultLog, apiResponseLocalVar, country); @@ -463,7 +606,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetCountry(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string country); + partial void AfterGetCountry(ref bool suppressDefaultLog, IGetCountryApiResponse apiResponseLocalVar, string country); /// /// Logs exceptions that occur while retrieving the server response @@ -495,8 +638,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetCountryOrDefaultAsync(string country, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetCountryOrDefaultAsync(string country, System.Threading.CancellationToken cancellationToken = default) { try { @@ -514,8 +657,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetCountryAsync(string country, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetCountryAsync(string country, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -561,7 +704,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/country", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetCountryApiResponse apiResponseLocalVar = new GetCountryApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/country", requestedAtLocalVar, _jsonSerializerOptions); AfterGetCountryDefaultImplementation(apiResponseLocalVar, country); @@ -579,11 +724,56 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetCountryApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetCountryApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetCountryApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterHelloDefaultImplementation(ApiResponse> apiResponseLocalVar) + private void AfterHelloDefaultImplementation(IHelloApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterHello(ref suppressDefaultLog, apiResponseLocalVar); @@ -596,7 +786,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterHello(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar); + partial void AfterHello(ref bool suppressDefaultLog, IHelloApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -625,8 +815,8 @@ namespace Org.OpenAPITools.Api /// Hello Hello /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> HelloOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task HelloOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -643,8 +833,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> HelloAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task HelloAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -675,7 +865,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/hello", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + HelloApiResponse apiResponseLocalVar = new HelloApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/hello", requestedAtLocalVar, _jsonSerializerOptions); AfterHelloDefaultImplementation(apiResponseLocalVar); @@ -693,11 +885,88 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class HelloApiResponse : Org.OpenAPITools.Client.ApiResponse, IHelloApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public HelloApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out List result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterRolesReportGetDefaultImplementation(ApiResponse>> apiResponseLocalVar) + private void AfterRolesReportGetDefaultImplementation(IRolesReportGetApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterRolesReportGet(ref suppressDefaultLog, apiResponseLocalVar); @@ -710,7 +979,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterRolesReportGet(ref bool suppressDefaultLog, ApiResponse>> apiResponseLocalVar); + partial void AfterRolesReportGet(ref bool suppressDefaultLog, IRolesReportGetApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -739,8 +1008,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>>> RolesReportGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task RolesReportGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -757,8 +1026,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>>> RolesReportGetAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task RolesReportGetAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -789,7 +1058,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse>> apiResponseLocalVar = new ApiResponse>>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/roles/report", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + RolesReportGetApiResponse apiResponseLocalVar = new RolesReportGetApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/roles/report", requestedAtLocalVar, _jsonSerializerOptions); AfterRolesReportGetDefaultImplementation(apiResponseLocalVar); @@ -807,11 +1078,88 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class RolesReportGetApiResponse : Org.OpenAPITools.Client.ApiResponse, IRolesReportGetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public RolesReportGetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out List result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterTestDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterTestDefaultImplementation(ITestApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterTest(ref suppressDefaultLog, apiResponseLocalVar); @@ -824,7 +1172,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTest(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterTest(ref bool suppressDefaultLog, ITestApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -853,8 +1201,8 @@ namespace Org.OpenAPITools.Api /// Retrieve an existing Notificationtest's Elements /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -871,8 +1219,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -903,7 +1251,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/test", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestApiResponse apiResponseLocalVar = new TestApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/test", requestedAtLocalVar, _jsonSerializerOptions); AfterTestDefaultImplementation(apiResponseLocalVar); @@ -920,5 +1270,82 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class TestApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.NotificationtestGetElementsV1ResponseMPayload Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out Org.OpenAPITools.Model.NotificationtestGetElementsV1ResponseMPayload result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/FakeApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/FakeApi.cs index b3c97b9d368b..7dfa027962fd 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/FakeApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/FakeApi.cs @@ -17,7 +17,6 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; namespace Org.OpenAPITools.Api @@ -41,8 +40,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<HealthCheckResult>> - Task> FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Health check endpoint @@ -51,8 +50,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>HealthCheckResult>> - Task> FakeHealthGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeHealthGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -63,8 +62,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input boolean as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<bool>> - Task> FakeOuterBooleanSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterBooleanSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -74,8 +73,8 @@ namespace Org.OpenAPITools.Api /// /// Input boolean as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>bool>> - Task> FakeOuterBooleanSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterBooleanSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -86,8 +85,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input composite as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<OuterComposite>> - Task> FakeOuterCompositeSerializeAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterCompositeSerializeAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -97,8 +96,8 @@ namespace Org.OpenAPITools.Api /// /// Input composite as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>OuterComposite>> - Task> FakeOuterCompositeSerializeOrDefaultAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterCompositeSerializeOrDefaultAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -109,8 +108,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input number as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<decimal>> - Task> FakeOuterNumberSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterNumberSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -120,8 +119,8 @@ namespace Org.OpenAPITools.Api /// /// Input number as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>decimal>> - Task> FakeOuterNumberSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterNumberSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -133,8 +132,8 @@ namespace Org.OpenAPITools.Api /// Required UUID String /// Input string as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<string>> - Task> FakeOuterStringSerializeAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterStringSerializeAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -145,8 +144,8 @@ namespace Org.OpenAPITools.Api /// Required UUID String /// Input string as post body (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>string>> - Task> FakeOuterStringSerializeOrDefaultAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FakeOuterStringSerializeOrDefaultAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default); /// /// Array of Enums @@ -156,8 +155,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<OuterEnum>>> - Task>> GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Array of Enums @@ -166,8 +165,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<OuterEnum>>> - Task>> GetArrayOfEnumsOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetArrayOfEnumsOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// @@ -178,8 +177,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -189,8 +188,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestBodyWithFileSchemaOrDefaultAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestBodyWithFileSchemaOrDefaultAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -202,8 +201,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestBodyWithQueryParamsAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestBodyWithQueryParamsAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -214,8 +213,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestBodyWithQueryParamsOrDefaultAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestBodyWithQueryParamsOrDefaultAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default); /// /// To test \"client\" model @@ -226,8 +225,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ModelClient>> - Task> TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); /// /// To test \"client\" model @@ -237,8 +236,8 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ModelClient>> - Task> TestClientModelOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestClientModelOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); /// /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 @@ -262,8 +261,8 @@ namespace Org.OpenAPITools.Api /// None (optional) /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestEndpointParametersAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestEndpointParametersAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default); /// /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 @@ -286,8 +285,8 @@ namespace Org.OpenAPITools.Api /// None (optional) /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestEndpointParametersOrDefaultAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestEndpointParametersOrDefaultAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default); /// /// To test enum parameters @@ -305,8 +304,8 @@ namespace Org.OpenAPITools.Api /// Query parameter enum test (string) (optional, default to -efg) /// Form parameter enum test (string) (optional, default to -efg) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestEnumParametersAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestEnumParametersAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default); /// /// To test enum parameters @@ -323,8 +322,8 @@ namespace Org.OpenAPITools.Api /// Query parameter enum test (string) (optional, default to -efg) /// Form parameter enum test (string) (optional, default to -efg) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestEnumParametersOrDefaultAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestEnumParametersOrDefaultAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default); /// /// Fake endpoint to test group parameters (optional) @@ -340,8 +339,8 @@ namespace Org.OpenAPITools.Api /// String in group parameters (optional) /// Integer in group parameters (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestGroupParametersAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestGroupParametersAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default); /// /// Fake endpoint to test group parameters (optional) @@ -356,8 +355,8 @@ namespace Org.OpenAPITools.Api /// String in group parameters (optional) /// Integer in group parameters (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestGroupParametersOrDefaultAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestGroupParametersOrDefaultAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default); /// /// test inline additionalProperties @@ -368,8 +367,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// request body /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default); /// /// test inline additionalProperties @@ -379,8 +378,8 @@ namespace Org.OpenAPITools.Api /// /// request body /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestInlineAdditionalPropertiesOrDefaultAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestInlineAdditionalPropertiesOrDefaultAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default); /// /// test inline free-form additionalProperties @@ -391,8 +390,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// request body /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestInlineFreeformAdditionalPropertiesAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestInlineFreeformAdditionalPropertiesAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default); /// /// test inline free-form additionalProperties @@ -402,8 +401,8 @@ namespace Org.OpenAPITools.Api /// /// request body /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestInlineFreeformAdditionalPropertiesOrDefaultAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestInlineFreeformAdditionalPropertiesOrDefaultAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default); /// /// test json serialization of form data @@ -415,8 +414,8 @@ namespace Org.OpenAPITools.Api /// field1 /// field2 /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default); /// /// test json serialization of form data @@ -427,8 +426,8 @@ namespace Org.OpenAPITools.Api /// field1 /// field2 /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestJsonFormDataOrDefaultAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestJsonFormDataOrDefaultAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -447,8 +446,8 @@ namespace Org.OpenAPITools.Api /// (optional) /// (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default); /// /// @@ -466,29 +465,232 @@ namespace Org.OpenAPITools.Api /// (optional) /// (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> TestQueryParameterCollectionFormatOrDefaultAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestQueryParameterCollectionFormatOrDefaultAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IFakeHealthGetApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IFakeOuterBooleanSerializeApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IFakeOuterCompositeSerializeApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IFakeOuterNumberSerializeApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IFakeOuterStringSerializeApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IGetArrayOfEnumsApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestBodyWithFileSchemaApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestBodyWithQueryParamsApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestClientModelApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestEndpointParametersApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface ITestEnumParametersApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface ITestGroupParametersApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface ITestInlineAdditionalPropertiesApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestInlineFreeformAdditionalPropertiesApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestJsonFormDataApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface ITestQueryParameterCollectionFormatApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class FakeApiEvents { /// /// The event raised after the server response /// - public event EventHandler> OnFakeHealthGet; + public event EventHandler OnFakeHealthGet; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorFakeHealthGet; - internal void ExecuteOnFakeHealthGet(ApiResponse apiResponse) + internal void ExecuteOnFakeHealthGet(FakeApi.FakeHealthGetApiResponse apiResponse) { - OnFakeHealthGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeHealthGet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeHealthGet(Exception exception) @@ -499,16 +701,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnFakeOuterBooleanSerialize; + public event EventHandler OnFakeOuterBooleanSerialize; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorFakeOuterBooleanSerialize; - internal void ExecuteOnFakeOuterBooleanSerialize(ApiResponse apiResponse) + internal void ExecuteOnFakeOuterBooleanSerialize(FakeApi.FakeOuterBooleanSerializeApiResponse apiResponse) { - OnFakeOuterBooleanSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeOuterBooleanSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeOuterBooleanSerialize(Exception exception) @@ -519,16 +721,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnFakeOuterCompositeSerialize; + public event EventHandler OnFakeOuterCompositeSerialize; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorFakeOuterCompositeSerialize; - internal void ExecuteOnFakeOuterCompositeSerialize(ApiResponse apiResponse) + internal void ExecuteOnFakeOuterCompositeSerialize(FakeApi.FakeOuterCompositeSerializeApiResponse apiResponse) { - OnFakeOuterCompositeSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeOuterCompositeSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeOuterCompositeSerialize(Exception exception) @@ -539,16 +741,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnFakeOuterNumberSerialize; + public event EventHandler OnFakeOuterNumberSerialize; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorFakeOuterNumberSerialize; - internal void ExecuteOnFakeOuterNumberSerialize(ApiResponse apiResponse) + internal void ExecuteOnFakeOuterNumberSerialize(FakeApi.FakeOuterNumberSerializeApiResponse apiResponse) { - OnFakeOuterNumberSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeOuterNumberSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeOuterNumberSerialize(Exception exception) @@ -559,16 +761,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnFakeOuterStringSerialize; + public event EventHandler OnFakeOuterStringSerialize; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorFakeOuterStringSerialize; - internal void ExecuteOnFakeOuterStringSerialize(ApiResponse apiResponse) + internal void ExecuteOnFakeOuterStringSerialize(FakeApi.FakeOuterStringSerializeApiResponse apiResponse) { - OnFakeOuterStringSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnFakeOuterStringSerialize?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFakeOuterStringSerialize(Exception exception) @@ -579,16 +781,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>> OnGetArrayOfEnums; + public event EventHandler OnGetArrayOfEnums; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorGetArrayOfEnums; - internal void ExecuteOnGetArrayOfEnums(ApiResponse> apiResponse) + internal void ExecuteOnGetArrayOfEnums(FakeApi.GetArrayOfEnumsApiResponse apiResponse) { - OnGetArrayOfEnums?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnGetArrayOfEnums?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetArrayOfEnums(Exception exception) @@ -599,16 +801,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestBodyWithFileSchema; + public event EventHandler OnTestBodyWithFileSchema; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestBodyWithFileSchema; - internal void ExecuteOnTestBodyWithFileSchema(ApiResponse apiResponse) + internal void ExecuteOnTestBodyWithFileSchema(FakeApi.TestBodyWithFileSchemaApiResponse apiResponse) { - OnTestBodyWithFileSchema?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestBodyWithFileSchema?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestBodyWithFileSchema(Exception exception) @@ -619,16 +821,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestBodyWithQueryParams; + public event EventHandler OnTestBodyWithQueryParams; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestBodyWithQueryParams; - internal void ExecuteOnTestBodyWithQueryParams(ApiResponse apiResponse) + internal void ExecuteOnTestBodyWithQueryParams(FakeApi.TestBodyWithQueryParamsApiResponse apiResponse) { - OnTestBodyWithQueryParams?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestBodyWithQueryParams?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestBodyWithQueryParams(Exception exception) @@ -639,16 +841,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestClientModel; + public event EventHandler OnTestClientModel; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestClientModel; - internal void ExecuteOnTestClientModel(ApiResponse apiResponse) + internal void ExecuteOnTestClientModel(FakeApi.TestClientModelApiResponse apiResponse) { - OnTestClientModel?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestClientModel?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestClientModel(Exception exception) @@ -659,16 +861,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestEndpointParameters; + public event EventHandler OnTestEndpointParameters; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestEndpointParameters; - internal void ExecuteOnTestEndpointParameters(ApiResponse apiResponse) + internal void ExecuteOnTestEndpointParameters(FakeApi.TestEndpointParametersApiResponse apiResponse) { - OnTestEndpointParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestEndpointParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestEndpointParameters(Exception exception) @@ -679,16 +881,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestEnumParameters; + public event EventHandler OnTestEnumParameters; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestEnumParameters; - internal void ExecuteOnTestEnumParameters(ApiResponse apiResponse) + internal void ExecuteOnTestEnumParameters(FakeApi.TestEnumParametersApiResponse apiResponse) { - OnTestEnumParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestEnumParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestEnumParameters(Exception exception) @@ -699,16 +901,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestGroupParameters; + public event EventHandler OnTestGroupParameters; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestGroupParameters; - internal void ExecuteOnTestGroupParameters(ApiResponse apiResponse) + internal void ExecuteOnTestGroupParameters(FakeApi.TestGroupParametersApiResponse apiResponse) { - OnTestGroupParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestGroupParameters?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestGroupParameters(Exception exception) @@ -719,16 +921,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestInlineAdditionalProperties; + public event EventHandler OnTestInlineAdditionalProperties; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestInlineAdditionalProperties; - internal void ExecuteOnTestInlineAdditionalProperties(ApiResponse apiResponse) + internal void ExecuteOnTestInlineAdditionalProperties(FakeApi.TestInlineAdditionalPropertiesApiResponse apiResponse) { - OnTestInlineAdditionalProperties?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestInlineAdditionalProperties?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestInlineAdditionalProperties(Exception exception) @@ -739,16 +941,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestInlineFreeformAdditionalProperties; + public event EventHandler OnTestInlineFreeformAdditionalProperties; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestInlineFreeformAdditionalProperties; - internal void ExecuteOnTestInlineFreeformAdditionalProperties(ApiResponse apiResponse) + internal void ExecuteOnTestInlineFreeformAdditionalProperties(FakeApi.TestInlineFreeformAdditionalPropertiesApiResponse apiResponse) { - OnTestInlineFreeformAdditionalProperties?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestInlineFreeformAdditionalProperties?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestInlineFreeformAdditionalProperties(Exception exception) @@ -759,16 +961,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestJsonFormData; + public event EventHandler OnTestJsonFormData; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestJsonFormData; - internal void ExecuteOnTestJsonFormData(ApiResponse apiResponse) + internal void ExecuteOnTestJsonFormData(FakeApi.TestJsonFormDataApiResponse apiResponse) { - OnTestJsonFormData?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestJsonFormData?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestJsonFormData(Exception exception) @@ -779,16 +981,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnTestQueryParameterCollectionFormat; + public event EventHandler OnTestQueryParameterCollectionFormat; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestQueryParameterCollectionFormat; - internal void ExecuteOnTestQueryParameterCollectionFormat(ApiResponse apiResponse) + internal void ExecuteOnTestQueryParameterCollectionFormat(FakeApi.TestQueryParameterCollectionFormatApiResponse apiResponse) { - OnTestQueryParameterCollectionFormat?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestQueryParameterCollectionFormat?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestQueryParameterCollectionFormat(Exception exception) @@ -804,6 +1006,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -848,7 +1055,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public FakeApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, FakeApiEvents fakeApiEvents, + public FakeApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, FakeApiEvents fakeApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -856,7 +1063,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = fakeApiEvents; ApiKeyProvider = apiKeyProvider; @@ -870,7 +1078,7 @@ namespace Org.OpenAPITools.Api /// Processes the server response /// /// - private void AfterFakeHealthGetDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterFakeHealthGetDefaultImplementation(IFakeHealthGetApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterFakeHealthGet(ref suppressDefaultLog, apiResponseLocalVar); @@ -883,7 +1091,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFakeHealthGet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterFakeHealthGet(ref bool suppressDefaultLog, IFakeHealthGetApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -912,8 +1120,8 @@ namespace Org.OpenAPITools.Api /// Health check endpoint /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeHealthGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeHealthGetOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -930,8 +1138,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeHealthGetAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -962,7 +1170,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/health", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeHealthGetApiResponse apiResponseLocalVar = new FakeHealthGetApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/health", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeHealthGetDefaultImplementation(apiResponseLocalVar); @@ -980,6 +1190,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FakeHealthGetApiResponse : Org.OpenAPITools.Client.ApiResponse, IFakeHealthGetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeHealthGetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.HealthCheckResult Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out Org.OpenAPITools.Model.HealthCheckResult result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFakeOuterBooleanSerialize(ref Option body); /// @@ -987,7 +1274,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFakeOuterBooleanSerializeDefaultImplementation(ApiResponse apiResponseLocalVar, Option body) + private void AfterFakeOuterBooleanSerializeDefaultImplementation(IFakeOuterBooleanSerializeApiResponse apiResponseLocalVar, Option body) { bool suppressDefaultLog = false; AfterFakeOuterBooleanSerialize(ref suppressDefaultLog, apiResponseLocalVar, body); @@ -1001,7 +1288,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFakeOuterBooleanSerialize(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Option body); + partial void AfterFakeOuterBooleanSerialize(ref bool suppressDefaultLog, IFakeOuterBooleanSerializeApiResponse apiResponseLocalVar, Option body); /// /// Logs exceptions that occur while retrieving the server response @@ -1033,8 +1320,8 @@ namespace Org.OpenAPITools.Api /// /// Input boolean as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterBooleanSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterBooleanSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1052,8 +1339,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input boolean as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterBooleanSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterBooleanSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1100,7 +1387,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/boolean", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeOuterBooleanSerializeApiResponse apiResponseLocalVar = new FakeOuterBooleanSerializeApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/boolean", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeOuterBooleanSerializeDefaultImplementation(apiResponseLocalVar, body); @@ -1118,6 +1407,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FakeOuterBooleanSerializeApiResponse : Org.OpenAPITools.Client.ApiResponse, IFakeOuterBooleanSerializeApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeOuterBooleanSerializeApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public bool? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out bool? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFakeOuterCompositeSerialize(Option outerComposite); /// @@ -1136,7 +1502,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFakeOuterCompositeSerializeDefaultImplementation(ApiResponse apiResponseLocalVar, Option outerComposite) + private void AfterFakeOuterCompositeSerializeDefaultImplementation(IFakeOuterCompositeSerializeApiResponse apiResponseLocalVar, Option outerComposite) { bool suppressDefaultLog = false; AfterFakeOuterCompositeSerialize(ref suppressDefaultLog, apiResponseLocalVar, outerComposite); @@ -1150,7 +1516,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFakeOuterCompositeSerialize(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Option outerComposite); + partial void AfterFakeOuterCompositeSerialize(ref bool suppressDefaultLog, IFakeOuterCompositeSerializeApiResponse apiResponseLocalVar, Option outerComposite); /// /// Logs exceptions that occur while retrieving the server response @@ -1182,8 +1548,8 @@ namespace Org.OpenAPITools.Api /// /// Input composite as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterCompositeSerializeOrDefaultAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterCompositeSerializeOrDefaultAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1201,8 +1567,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input composite as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterCompositeSerializeAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterCompositeSerializeAsync(Option outerComposite = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1251,7 +1617,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/composite", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeOuterCompositeSerializeApiResponse apiResponseLocalVar = new FakeOuterCompositeSerializeApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/composite", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeOuterCompositeSerializeDefaultImplementation(apiResponseLocalVar, outerComposite); @@ -1269,6 +1637,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FakeOuterCompositeSerializeApiResponse : Org.OpenAPITools.Client.ApiResponse, IFakeOuterCompositeSerializeApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeOuterCompositeSerializeApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.OuterComposite Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out Org.OpenAPITools.Model.OuterComposite result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFakeOuterNumberSerialize(ref Option body); /// @@ -1276,7 +1721,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFakeOuterNumberSerializeDefaultImplementation(ApiResponse apiResponseLocalVar, Option body) + private void AfterFakeOuterNumberSerializeDefaultImplementation(IFakeOuterNumberSerializeApiResponse apiResponseLocalVar, Option body) { bool suppressDefaultLog = false; AfterFakeOuterNumberSerialize(ref suppressDefaultLog, apiResponseLocalVar, body); @@ -1290,7 +1735,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFakeOuterNumberSerialize(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Option body); + partial void AfterFakeOuterNumberSerialize(ref bool suppressDefaultLog, IFakeOuterNumberSerializeApiResponse apiResponseLocalVar, Option body); /// /// Logs exceptions that occur while retrieving the server response @@ -1322,8 +1767,8 @@ namespace Org.OpenAPITools.Api /// /// Input number as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterNumberSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterNumberSerializeOrDefaultAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1341,8 +1786,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Input number as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterNumberSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterNumberSerializeAsync(Option body = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1389,7 +1834,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/number", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeOuterNumberSerializeApiResponse apiResponseLocalVar = new FakeOuterNumberSerializeApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/number", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeOuterNumberSerializeDefaultImplementation(apiResponseLocalVar, body); @@ -1407,6 +1854,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FakeOuterNumberSerializeApiResponse : Org.OpenAPITools.Client.ApiResponse, IFakeOuterNumberSerializeApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeOuterNumberSerializeApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public decimal? Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out decimal? result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFakeOuterStringSerialize(ref Guid requiredStringUuid, ref Option body); /// @@ -1426,7 +1950,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFakeOuterStringSerializeDefaultImplementation(ApiResponse apiResponseLocalVar, Guid requiredStringUuid, Option body) + private void AfterFakeOuterStringSerializeDefaultImplementation(IFakeOuterStringSerializeApiResponse apiResponseLocalVar, Guid requiredStringUuid, Option body) { bool suppressDefaultLog = false; AfterFakeOuterStringSerialize(ref suppressDefaultLog, apiResponseLocalVar, requiredStringUuid, body); @@ -1441,7 +1965,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFakeOuterStringSerialize(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Guid requiredStringUuid, Option body); + partial void AfterFakeOuterStringSerialize(ref bool suppressDefaultLog, IFakeOuterStringSerializeApiResponse apiResponseLocalVar, Guid requiredStringUuid, Option body); /// /// Logs exceptions that occur while retrieving the server response @@ -1476,8 +2000,8 @@ namespace Org.OpenAPITools.Api /// Required UUID String /// Input string as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterStringSerializeOrDefaultAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterStringSerializeOrDefaultAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1496,8 +2020,8 @@ namespace Org.OpenAPITools.Api /// Required UUID String /// Input string as post body (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> FakeOuterStringSerializeAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FakeOuterStringSerializeAsync(Guid requiredStringUuid, Option body = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1552,7 +2076,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/string", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FakeOuterStringSerializeApiResponse apiResponseLocalVar = new FakeOuterStringSerializeApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/outer/string", requestedAtLocalVar, _jsonSerializerOptions); AfterFakeOuterStringSerializeDefaultImplementation(apiResponseLocalVar, requiredStringUuid, body); @@ -1570,11 +2096,88 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FakeOuterStringSerializeApiResponse : Org.OpenAPITools.Client.ApiResponse, IFakeOuterStringSerializeApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FakeOuterStringSerializeApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public string Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out string result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterGetArrayOfEnumsDefaultImplementation(ApiResponse> apiResponseLocalVar) + private void AfterGetArrayOfEnumsDefaultImplementation(IGetArrayOfEnumsApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterGetArrayOfEnums(ref suppressDefaultLog, apiResponseLocalVar); @@ -1587,7 +2190,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetArrayOfEnums(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar); + partial void AfterGetArrayOfEnums(ref bool suppressDefaultLog, IGetArrayOfEnumsApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -1616,8 +2219,8 @@ namespace Org.OpenAPITools.Api /// Array of Enums /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> GetArrayOfEnumsOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetArrayOfEnumsOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -1634,8 +2237,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetArrayOfEnumsAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1666,7 +2269,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/array-of-enums", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetArrayOfEnumsApiResponse apiResponseLocalVar = new GetArrayOfEnumsApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/array-of-enums", requestedAtLocalVar, _jsonSerializerOptions); AfterGetArrayOfEnumsDefaultImplementation(apiResponseLocalVar); @@ -1684,6 +2289,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetArrayOfEnumsApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetArrayOfEnumsApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetArrayOfEnumsApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out List result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestBodyWithFileSchema(FileSchemaTestClass fileSchemaTestClass); /// @@ -1702,7 +2384,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestBodyWithFileSchemaDefaultImplementation(ApiResponse apiResponseLocalVar, FileSchemaTestClass fileSchemaTestClass) + private void AfterTestBodyWithFileSchemaDefaultImplementation(ITestBodyWithFileSchemaApiResponse apiResponseLocalVar, FileSchemaTestClass fileSchemaTestClass) { bool suppressDefaultLog = false; AfterTestBodyWithFileSchema(ref suppressDefaultLog, apiResponseLocalVar, fileSchemaTestClass); @@ -1716,7 +2398,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestBodyWithFileSchema(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, FileSchemaTestClass fileSchemaTestClass); + partial void AfterTestBodyWithFileSchema(ref bool suppressDefaultLog, ITestBodyWithFileSchemaApiResponse apiResponseLocalVar, FileSchemaTestClass fileSchemaTestClass); /// /// Logs exceptions that occur while retrieving the server response @@ -1748,8 +2430,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestBodyWithFileSchemaOrDefaultAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestBodyWithFileSchemaOrDefaultAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1767,8 +2449,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestBodyWithFileSchemaAsync(FileSchemaTestClass fileSchemaTestClass, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1808,7 +2490,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/body-with-file-schema", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestBodyWithFileSchemaApiResponse apiResponseLocalVar = new TestBodyWithFileSchemaApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/body-with-file-schema", requestedAtLocalVar, _jsonSerializerOptions); AfterTestBodyWithFileSchemaDefaultImplementation(apiResponseLocalVar, fileSchemaTestClass); @@ -1826,6 +2510,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestBodyWithFileSchemaApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestBodyWithFileSchemaApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestBodyWithFileSchemaApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestBodyWithQueryParams(User user, ref string query); /// @@ -1849,7 +2578,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestBodyWithQueryParamsDefaultImplementation(ApiResponse apiResponseLocalVar, User user, string query) + private void AfterTestBodyWithQueryParamsDefaultImplementation(ITestBodyWithQueryParamsApiResponse apiResponseLocalVar, User user, string query) { bool suppressDefaultLog = false; AfterTestBodyWithQueryParams(ref suppressDefaultLog, apiResponseLocalVar, user, query); @@ -1864,7 +2593,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestBodyWithQueryParams(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, User user, string query); + partial void AfterTestBodyWithQueryParams(ref bool suppressDefaultLog, ITestBodyWithQueryParamsApiResponse apiResponseLocalVar, User user, string query); /// /// Logs exceptions that occur while retrieving the server response @@ -1899,8 +2628,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestBodyWithQueryParamsOrDefaultAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestBodyWithQueryParamsOrDefaultAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1919,8 +2648,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestBodyWithQueryParamsAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestBodyWithQueryParamsAsync(User user, string query, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1966,7 +2695,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/body-with-query-params", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestBodyWithQueryParamsApiResponse apiResponseLocalVar = new TestBodyWithQueryParamsApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/body-with-query-params", requestedAtLocalVar, _jsonSerializerOptions); AfterTestBodyWithQueryParamsDefaultImplementation(apiResponseLocalVar, user, query); @@ -1984,6 +2715,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestBodyWithQueryParamsApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestBodyWithQueryParamsApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestBodyWithQueryParamsApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestClientModel(ModelClient modelClient); /// @@ -2002,7 +2778,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestClientModelDefaultImplementation(ApiResponse apiResponseLocalVar, ModelClient modelClient) + private void AfterTestClientModelDefaultImplementation(ITestClientModelApiResponse apiResponseLocalVar, ModelClient modelClient) { bool suppressDefaultLog = false; AfterTestClientModel(ref suppressDefaultLog, apiResponseLocalVar, modelClient); @@ -2016,7 +2792,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestClientModel(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, ModelClient modelClient); + partial void AfterTestClientModel(ref bool suppressDefaultLog, ITestClientModelApiResponse apiResponseLocalVar, ModelClient modelClient); /// /// Logs exceptions that occur while retrieving the server response @@ -2048,8 +2824,8 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestClientModelOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestClientModelOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2067,8 +2843,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestClientModelAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2116,7 +2892,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestClientModelApiResponse apiResponseLocalVar = new TestClientModelApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); AfterTestClientModelDefaultImplementation(apiResponseLocalVar, modelClient); @@ -2134,6 +2912,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestClientModelApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestClientModelApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestClientModelApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.ModelClient Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out Org.OpenAPITools.Model.ModelClient result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestEndpointParameters(ref byte[] varByte, ref decimal number, ref double varDouble, ref string patternWithoutDelimiter, ref Option date, ref Option binary, ref Option varFloat, ref Option integer, ref Option int32, ref Option int64, ref Option varString, ref Option password, ref Option callback, ref Option dateTime); /// @@ -2185,7 +3040,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestEndpointParametersDefaultImplementation(ApiResponse apiResponseLocalVar, byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date, Option binary, Option varFloat, Option integer, Option int32, Option int64, Option varString, Option password, Option callback, Option dateTime) + private void AfterTestEndpointParametersDefaultImplementation(ITestEndpointParametersApiResponse apiResponseLocalVar, byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date, Option binary, Option varFloat, Option integer, Option int32, Option int64, Option varString, Option password, Option callback, Option dateTime) { bool suppressDefaultLog = false; AfterTestEndpointParameters(ref suppressDefaultLog, apiResponseLocalVar, varByte, number, varDouble, patternWithoutDelimiter, date, binary, varFloat, integer, int32, int64, varString, password, callback, dateTime); @@ -2212,7 +3067,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestEndpointParameters(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date, Option binary, Option varFloat, Option integer, Option int32, Option int64, Option varString, Option password, Option callback, Option dateTime); + partial void AfterTestEndpointParameters(ref bool suppressDefaultLog, ITestEndpointParametersApiResponse apiResponseLocalVar, byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date, Option binary, Option varFloat, Option integer, Option int32, Option int64, Option varString, Option password, Option callback, Option dateTime); /// /// Logs exceptions that occur while retrieving the server response @@ -2283,8 +3138,8 @@ namespace Org.OpenAPITools.Api /// None (optional) /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestEndpointParametersOrDefaultAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestEndpointParametersOrDefaultAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2315,8 +3170,8 @@ namespace Org.OpenAPITools.Api /// None (optional) /// None (optional, default to "2010-02-01T10:20:10.111110+01:00") /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestEndpointParametersAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestEndpointParametersAsync(byte[] varByte, decimal number, double varDouble, string patternWithoutDelimiter, Option date = default, Option binary = default, Option varFloat = default, Option integer = default, Option int32 = default, Option int64 = default, Option varString = default, Option password = default, Option callback = default, Option dateTime = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2406,7 +3261,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestEndpointParametersApiResponse apiResponseLocalVar = new TestEndpointParametersApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); AfterTestEndpointParametersDefaultImplementation(apiResponseLocalVar, varByte, number, varDouble, patternWithoutDelimiter, date, binary, varFloat, integer, int32, int64, varString, password, callback, dateTime); @@ -2428,6 +3285,57 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestEndpointParametersApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestEndpointParametersApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestEndpointParametersApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestEnumParameters(Option> enumHeaderStringArray, Option> enumQueryStringArray, ref Option enumQueryDouble, ref Option enumQueryInteger, Option> enumFormStringArray, ref Option enumHeaderString, ref Option enumQueryString, ref Option enumFormString); /// @@ -2473,7 +3381,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestEnumParametersDefaultImplementation(ApiResponse apiResponseLocalVar, Option> enumHeaderStringArray, Option> enumQueryStringArray, Option enumQueryDouble, Option enumQueryInteger, Option> enumFormStringArray, Option enumHeaderString, Option enumQueryString, Option enumFormString) + private void AfterTestEnumParametersDefaultImplementation(ITestEnumParametersApiResponse apiResponseLocalVar, Option> enumHeaderStringArray, Option> enumQueryStringArray, Option enumQueryDouble, Option enumQueryInteger, Option> enumFormStringArray, Option enumHeaderString, Option enumQueryString, Option enumFormString) { bool suppressDefaultLog = false; AfterTestEnumParameters(ref suppressDefaultLog, apiResponseLocalVar, enumHeaderStringArray, enumQueryStringArray, enumQueryDouble, enumQueryInteger, enumFormStringArray, enumHeaderString, enumQueryString, enumFormString); @@ -2494,7 +3402,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestEnumParameters(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Option> enumHeaderStringArray, Option> enumQueryStringArray, Option enumQueryDouble, Option enumQueryInteger, Option> enumFormStringArray, Option enumHeaderString, Option enumQueryString, Option enumFormString); + partial void AfterTestEnumParameters(ref bool suppressDefaultLog, ITestEnumParametersApiResponse apiResponseLocalVar, Option> enumHeaderStringArray, Option> enumQueryStringArray, Option enumQueryDouble, Option enumQueryInteger, Option> enumFormStringArray, Option enumHeaderString, Option enumQueryString, Option enumFormString); /// /// Logs exceptions that occur while retrieving the server response @@ -2547,8 +3455,8 @@ namespace Org.OpenAPITools.Api /// Query parameter enum test (string) (optional, default to -efg) /// Form parameter enum test (string) (optional, default to -efg) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestEnumParametersOrDefaultAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestEnumParametersOrDefaultAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2573,8 +3481,8 @@ namespace Org.OpenAPITools.Api /// Query parameter enum test (string) (optional, default to -efg) /// Form parameter enum test (string) (optional, default to -efg) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestEnumParametersAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestEnumParametersAsync(Option> enumHeaderStringArray = default, Option> enumQueryStringArray = default, Option enumQueryDouble = default, Option enumQueryInteger = default, Option> enumFormStringArray = default, Option enumHeaderString = default, Option enumQueryString = default, Option enumFormString = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2644,7 +3552,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestEnumParametersApiResponse apiResponseLocalVar = new TestEnumParametersApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); AfterTestEnumParametersDefaultImplementation(apiResponseLocalVar, enumHeaderStringArray, enumQueryStringArray, enumQueryDouble, enumQueryInteger, enumFormStringArray, enumHeaderString, enumQueryString, enumFormString); @@ -2662,6 +3572,57 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestEnumParametersApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestEnumParametersApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestEnumParametersApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestGroupParameters(ref bool requiredBooleanGroup, ref int requiredStringGroup, ref long requiredInt64Group, ref Option booleanGroup, ref Option stringGroup, ref Option int64Group); /// @@ -2674,7 +3635,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestGroupParametersDefaultImplementation(ApiResponse apiResponseLocalVar, bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup, Option stringGroup, Option int64Group) + private void AfterTestGroupParametersDefaultImplementation(ITestGroupParametersApiResponse apiResponseLocalVar, bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup, Option stringGroup, Option int64Group) { bool suppressDefaultLog = false; AfterTestGroupParameters(ref suppressDefaultLog, apiResponseLocalVar, requiredBooleanGroup, requiredStringGroup, requiredInt64Group, booleanGroup, stringGroup, int64Group); @@ -2693,7 +3654,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestGroupParameters(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup, Option stringGroup, Option int64Group); + partial void AfterTestGroupParameters(ref bool suppressDefaultLog, ITestGroupParametersApiResponse apiResponseLocalVar, bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup, Option stringGroup, Option int64Group); /// /// Logs exceptions that occur while retrieving the server response @@ -2740,8 +3701,8 @@ namespace Org.OpenAPITools.Api /// String in group parameters (optional) /// Integer in group parameters (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestGroupParametersOrDefaultAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestGroupParametersOrDefaultAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2764,8 +3725,8 @@ namespace Org.OpenAPITools.Api /// String in group parameters (optional) /// Integer in group parameters (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestGroupParametersAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestGroupParametersAsync(bool requiredBooleanGroup, int requiredStringGroup, long requiredInt64Group, Option booleanGroup = default, Option stringGroup = default, Option int64Group = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2815,7 +3776,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestGroupParametersApiResponse apiResponseLocalVar = new TestGroupParametersApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake", requestedAtLocalVar, _jsonSerializerOptions); AfterTestGroupParametersDefaultImplementation(apiResponseLocalVar, requiredBooleanGroup, requiredStringGroup, requiredInt64Group, booleanGroup, stringGroup, int64Group); @@ -2837,6 +3800,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestGroupParametersApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestGroupParametersApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestGroupParametersApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestInlineAdditionalProperties(Dictionary requestBody); /// @@ -2855,7 +3863,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestInlineAdditionalPropertiesDefaultImplementation(ApiResponse apiResponseLocalVar, Dictionary requestBody) + private void AfterTestInlineAdditionalPropertiesDefaultImplementation(ITestInlineAdditionalPropertiesApiResponse apiResponseLocalVar, Dictionary requestBody) { bool suppressDefaultLog = false; AfterTestInlineAdditionalProperties(ref suppressDefaultLog, apiResponseLocalVar, requestBody); @@ -2869,7 +3877,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestInlineAdditionalProperties(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Dictionary requestBody); + partial void AfterTestInlineAdditionalProperties(ref bool suppressDefaultLog, ITestInlineAdditionalPropertiesApiResponse apiResponseLocalVar, Dictionary requestBody); /// /// Logs exceptions that occur while retrieving the server response @@ -2901,8 +3909,8 @@ namespace Org.OpenAPITools.Api /// /// request body /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestInlineAdditionalPropertiesOrDefaultAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestInlineAdditionalPropertiesOrDefaultAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default) { try { @@ -2920,8 +3928,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// request body /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestInlineAdditionalPropertiesAsync(Dictionary requestBody, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2961,7 +3969,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/inline-additionalProperties", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestInlineAdditionalPropertiesApiResponse apiResponseLocalVar = new TestInlineAdditionalPropertiesApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/inline-additionalProperties", requestedAtLocalVar, _jsonSerializerOptions); AfterTestInlineAdditionalPropertiesDefaultImplementation(apiResponseLocalVar, requestBody); @@ -2979,6 +3989,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestInlineAdditionalPropertiesApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestInlineAdditionalPropertiesApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestInlineAdditionalPropertiesApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestInlineFreeformAdditionalProperties(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest); /// @@ -2997,7 +4052,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestInlineFreeformAdditionalPropertiesDefaultImplementation(ApiResponse apiResponseLocalVar, TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest) + private void AfterTestInlineFreeformAdditionalPropertiesDefaultImplementation(ITestInlineFreeformAdditionalPropertiesApiResponse apiResponseLocalVar, TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest) { bool suppressDefaultLog = false; AfterTestInlineFreeformAdditionalProperties(ref suppressDefaultLog, apiResponseLocalVar, testInlineFreeformAdditionalPropertiesRequest); @@ -3011,7 +4066,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestInlineFreeformAdditionalProperties(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest); + partial void AfterTestInlineFreeformAdditionalProperties(ref bool suppressDefaultLog, ITestInlineFreeformAdditionalPropertiesApiResponse apiResponseLocalVar, TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest); /// /// Logs exceptions that occur while retrieving the server response @@ -3043,8 +4098,8 @@ namespace Org.OpenAPITools.Api /// /// request body /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestInlineFreeformAdditionalPropertiesOrDefaultAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestInlineFreeformAdditionalPropertiesOrDefaultAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default) { try { @@ -3062,8 +4117,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// request body /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestInlineFreeformAdditionalPropertiesAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestInlineFreeformAdditionalPropertiesAsync(TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -3103,7 +4158,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/inline-freeform-additionalProperties", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestInlineFreeformAdditionalPropertiesApiResponse apiResponseLocalVar = new TestInlineFreeformAdditionalPropertiesApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/inline-freeform-additionalProperties", requestedAtLocalVar, _jsonSerializerOptions); AfterTestInlineFreeformAdditionalPropertiesDefaultImplementation(apiResponseLocalVar, testInlineFreeformAdditionalPropertiesRequest); @@ -3121,6 +4178,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestInlineFreeformAdditionalPropertiesApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestInlineFreeformAdditionalPropertiesApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestInlineFreeformAdditionalPropertiesApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestJsonFormData(ref string param, ref string param2); /// @@ -3144,7 +4246,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestJsonFormDataDefaultImplementation(ApiResponse apiResponseLocalVar, string param, string param2) + private void AfterTestJsonFormDataDefaultImplementation(ITestJsonFormDataApiResponse apiResponseLocalVar, string param, string param2) { bool suppressDefaultLog = false; AfterTestJsonFormData(ref suppressDefaultLog, apiResponseLocalVar, param, param2); @@ -3159,7 +4261,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestJsonFormData(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string param, string param2); + partial void AfterTestJsonFormData(ref bool suppressDefaultLog, ITestJsonFormDataApiResponse apiResponseLocalVar, string param, string param2); /// /// Logs exceptions that occur while retrieving the server response @@ -3194,8 +4296,8 @@ namespace Org.OpenAPITools.Api /// field1 /// field2 /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestJsonFormDataOrDefaultAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestJsonFormDataOrDefaultAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default) { try { @@ -3214,8 +4316,8 @@ namespace Org.OpenAPITools.Api /// field1 /// field2 /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestJsonFormDataAsync(string param, string param2, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -3263,7 +4365,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/jsonFormData", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestJsonFormDataApiResponse apiResponseLocalVar = new TestJsonFormDataApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/jsonFormData", requestedAtLocalVar, _jsonSerializerOptions); AfterTestJsonFormDataDefaultImplementation(apiResponseLocalVar, param, param2); @@ -3281,6 +4385,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class TestJsonFormDataApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestJsonFormDataApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestJsonFormDataApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatTestQueryParameterCollectionFormat(List pipe, List ioutil, List http, List url, List context, ref string requiredNotNullable, ref string requiredNullable, ref Option notRequiredNotNullable, ref Option notRequiredNullable); /// @@ -3331,7 +4480,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestQueryParameterCollectionFormatDefaultImplementation(ApiResponse apiResponseLocalVar, List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable, Option notRequiredNotNullable, Option notRequiredNullable) + private void AfterTestQueryParameterCollectionFormatDefaultImplementation(ITestQueryParameterCollectionFormatApiResponse apiResponseLocalVar, List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable, Option notRequiredNotNullable, Option notRequiredNullable) { bool suppressDefaultLog = false; AfterTestQueryParameterCollectionFormat(ref suppressDefaultLog, apiResponseLocalVar, pipe, ioutil, http, url, context, requiredNotNullable, requiredNullable, notRequiredNotNullable, notRequiredNullable); @@ -3353,7 +4502,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestQueryParameterCollectionFormat(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable, Option notRequiredNotNullable, Option notRequiredNullable); + partial void AfterTestQueryParameterCollectionFormat(ref bool suppressDefaultLog, ITestQueryParameterCollectionFormatApiResponse apiResponseLocalVar, List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable, Option notRequiredNotNullable, Option notRequiredNullable); /// /// Logs exceptions that occur while retrieving the server response @@ -3409,8 +4558,8 @@ namespace Org.OpenAPITools.Api /// (optional) /// (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestQueryParameterCollectionFormatOrDefaultAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestQueryParameterCollectionFormatOrDefaultAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -3436,8 +4585,8 @@ namespace Org.OpenAPITools.Api /// (optional) /// (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestQueryParameterCollectionFormatAsync(List pipe, List ioutil, List http, List url, List context, string requiredNotNullable, string requiredNullable = default, Option notRequiredNotNullable = default, Option notRequiredNullable = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -3481,7 +4630,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/test-query-parameters", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestQueryParameterCollectionFormatApiResponse apiResponseLocalVar = new TestQueryParameterCollectionFormatApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/test-query-parameters", requestedAtLocalVar, _jsonSerializerOptions); AfterTestQueryParameterCollectionFormatDefaultImplementation(apiResponseLocalVar, pipe, ioutil, http, url, context, requiredNotNullable, requiredNullable, notRequiredNotNullable, notRequiredNullable); @@ -3498,5 +4649,50 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class TestQueryParameterCollectionFormatApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestQueryParameterCollectionFormatApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestQueryParameterCollectionFormatApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs index 95f8ccfd9bd0..81b3a94a1b4f 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/FakeClassnameTags123Api.cs @@ -17,7 +17,6 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; namespace Org.OpenAPITools.Api @@ -42,8 +41,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ModelClient>> - Task> TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); /// /// To test class name in snake case @@ -53,29 +52,40 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ModelClient>> - Task> TestClassnameOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task TestClassnameOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface ITestClassnameApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class FakeClassnameTags123ApiEvents { /// /// The event raised after the server response /// - public event EventHandler> OnTestClassname; + public event EventHandler OnTestClassname; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorTestClassname; - internal void ExecuteOnTestClassname(ApiResponse apiResponse) + internal void ExecuteOnTestClassname(FakeClassnameTags123Api.TestClassnameApiResponse apiResponse) { - OnTestClassname?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnTestClassname?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorTestClassname(Exception exception) @@ -91,6 +101,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -135,7 +150,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public FakeClassnameTags123Api(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, FakeClassnameTags123ApiEvents fakeClassnameTags123ApiEvents, + public FakeClassnameTags123Api(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, FakeClassnameTags123ApiEvents fakeClassnameTags123ApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -143,7 +158,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = fakeClassnameTags123ApiEvents; ApiKeyProvider = apiKeyProvider; @@ -171,7 +187,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterTestClassnameDefaultImplementation(ApiResponse apiResponseLocalVar, ModelClient modelClient) + private void AfterTestClassnameDefaultImplementation(ITestClassnameApiResponse apiResponseLocalVar, ModelClient modelClient) { bool suppressDefaultLog = false; AfterTestClassname(ref suppressDefaultLog, apiResponseLocalVar, modelClient); @@ -185,7 +201,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterTestClassname(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, ModelClient modelClient); + partial void AfterTestClassname(ref bool suppressDefaultLog, ITestClassnameApiResponse apiResponseLocalVar, ModelClient modelClient); /// /// Logs exceptions that occur while retrieving the server response @@ -217,8 +233,8 @@ namespace Org.OpenAPITools.Api /// /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestClassnameOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestClassnameOrDefaultAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { try { @@ -236,8 +252,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// client model /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task TestClassnameAsync(ModelClient modelClient, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -296,7 +312,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake_classname_test", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + TestClassnameApiResponse apiResponseLocalVar = new TestClassnameApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake_classname_test", requestedAtLocalVar, _jsonSerializerOptions); AfterTestClassnameDefaultImplementation(apiResponseLocalVar, modelClient); @@ -317,5 +335,82 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class TestClassnameApiResponse : Org.OpenAPITools.Client.ApiResponse, ITestClassnameApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public TestClassnameApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.ModelClient Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out Org.OpenAPITools.Model.ModelClient result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/PetApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/PetApi.cs index d9846df6fd97..153efe214685 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/PetApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/PetApi.cs @@ -17,7 +17,6 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; namespace Org.OpenAPITools.Api @@ -42,8 +41,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); /// /// Add a new pet to the store @@ -53,8 +52,8 @@ namespace Org.OpenAPITools.Api /// /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> AddPetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task AddPetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); /// /// Deletes a pet @@ -66,8 +65,8 @@ namespace Org.OpenAPITools.Api /// Pet id to delete /// (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> DeletePetAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeletePetAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default); /// /// Deletes a pet @@ -78,8 +77,8 @@ namespace Org.OpenAPITools.Api /// Pet id to delete /// (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> DeletePetOrDefaultAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeletePetOrDefaultAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default); /// /// Finds Pets by status @@ -90,8 +89,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Status values that need to be considered for filter /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<Pet>>> - Task>> FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default); /// /// Finds Pets by status @@ -101,8 +100,8 @@ namespace Org.OpenAPITools.Api /// /// Status values that need to be considered for filter /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<Pet>>> - Task>> FindPetsByStatusOrDefaultAsync(List status, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FindPetsByStatusOrDefaultAsync(List status, System.Threading.CancellationToken cancellationToken = default); /// /// Finds Pets by tags @@ -113,8 +112,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Tags to filter by /// Cancellation Token to cancel the request. - /// Task<ApiResponse<List<Pet>>> - Task>> FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default); /// /// Finds Pets by tags @@ -124,8 +123,8 @@ namespace Org.OpenAPITools.Api /// /// Tags to filter by /// Cancellation Token to cancel the request. - /// Task<ApiResponse>List<Pet>>> - Task>> FindPetsByTagsOrDefaultAsync(List tags, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task FindPetsByTagsOrDefaultAsync(List tags, System.Threading.CancellationToken cancellationToken = default); /// /// Find pet by ID @@ -136,8 +135,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of pet to return /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Pet>> - Task> GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default); /// /// Find pet by ID @@ -147,8 +146,8 @@ namespace Org.OpenAPITools.Api /// /// ID of pet to return /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Pet>> - Task> GetPetByIdOrDefaultAsync(long petId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetPetByIdOrDefaultAsync(long petId, System.Threading.CancellationToken cancellationToken = default); /// /// Update an existing pet @@ -159,8 +158,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); /// /// Update an existing pet @@ -170,8 +169,8 @@ namespace Org.OpenAPITools.Api /// /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> UpdatePetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdatePetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default); /// /// Updates a pet in the store with form data @@ -184,8 +183,8 @@ namespace Org.OpenAPITools.Api /// Updated name of the pet (optional) /// Updated status of the pet (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> UpdatePetWithFormAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdatePetWithFormAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default); /// /// Updates a pet in the store with form data @@ -197,8 +196,8 @@ namespace Org.OpenAPITools.Api /// Updated name of the pet (optional) /// Updated status of the pet (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> UpdatePetWithFormOrDefaultAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdatePetWithFormOrDefaultAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default); /// /// uploads an image @@ -211,8 +210,8 @@ namespace Org.OpenAPITools.Api /// file to upload (optional) /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ApiResponse>> - Task> UploadFileAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UploadFileAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); /// /// uploads an image @@ -224,8 +223,8 @@ namespace Org.OpenAPITools.Api /// file to upload (optional) /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ApiResponse>> - Task> UploadFileOrDefaultAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UploadFileOrDefaultAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); /// /// uploads an image (required) @@ -238,8 +237,8 @@ namespace Org.OpenAPITools.Api /// ID of pet to update /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse<ApiResponse>> - Task> UploadFileWithRequiredFileAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UploadFileWithRequiredFileAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); /// /// uploads an image (required) @@ -251,29 +250,172 @@ namespace Org.OpenAPITools.Api /// ID of pet to update /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// Task<ApiResponse>ApiResponse>> - Task> UploadFileWithRequiredFileOrDefaultAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UploadFileWithRequiredFileOrDefaultAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IAddPetApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + bool IsMethodNotAllowed { get; } + } + + /// + /// The + /// + public interface IDeletePetApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface IFindPetsByStatusApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface IFindPetsByTagsApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface IGetPetByIdApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface IUpdatePetApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + bool IsMethodNotAllowed { get; } + } + + /// + /// The + /// + public interface IUpdatePetWithFormApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + bool IsMethodNotAllowed { get; } + } + + /// + /// The + /// + public interface IUploadFileApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IUploadFileWithRequiredFileApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class PetApiEvents { /// /// The event raised after the server response /// - public event EventHandler> OnAddPet; + public event EventHandler OnAddPet; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorAddPet; - internal void ExecuteOnAddPet(ApiResponse apiResponse) + internal void ExecuteOnAddPet(PetApi.AddPetApiResponse apiResponse) { - OnAddPet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnAddPet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorAddPet(Exception exception) @@ -284,16 +426,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnDeletePet; + public event EventHandler OnDeletePet; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorDeletePet; - internal void ExecuteOnDeletePet(ApiResponse apiResponse) + internal void ExecuteOnDeletePet(PetApi.DeletePetApiResponse apiResponse) { - OnDeletePet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnDeletePet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorDeletePet(Exception exception) @@ -304,16 +446,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>> OnFindPetsByStatus; + public event EventHandler OnFindPetsByStatus; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorFindPetsByStatus; - internal void ExecuteOnFindPetsByStatus(ApiResponse> apiResponse) + internal void ExecuteOnFindPetsByStatus(PetApi.FindPetsByStatusApiResponse apiResponse) { - OnFindPetsByStatus?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnFindPetsByStatus?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFindPetsByStatus(Exception exception) @@ -324,16 +466,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>> OnFindPetsByTags; + public event EventHandler OnFindPetsByTags; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorFindPetsByTags; - internal void ExecuteOnFindPetsByTags(ApiResponse> apiResponse) + internal void ExecuteOnFindPetsByTags(PetApi.FindPetsByTagsApiResponse apiResponse) { - OnFindPetsByTags?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnFindPetsByTags?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorFindPetsByTags(Exception exception) @@ -344,16 +486,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnGetPetById; + public event EventHandler OnGetPetById; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorGetPetById; - internal void ExecuteOnGetPetById(ApiResponse apiResponse) + internal void ExecuteOnGetPetById(PetApi.GetPetByIdApiResponse apiResponse) { - OnGetPetById?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnGetPetById?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetPetById(Exception exception) @@ -364,16 +506,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnUpdatePet; + public event EventHandler OnUpdatePet; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorUpdatePet; - internal void ExecuteOnUpdatePet(ApiResponse apiResponse) + internal void ExecuteOnUpdatePet(PetApi.UpdatePetApiResponse apiResponse) { - OnUpdatePet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUpdatePet?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUpdatePet(Exception exception) @@ -384,16 +526,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnUpdatePetWithForm; + public event EventHandler OnUpdatePetWithForm; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorUpdatePetWithForm; - internal void ExecuteOnUpdatePetWithForm(ApiResponse apiResponse) + internal void ExecuteOnUpdatePetWithForm(PetApi.UpdatePetWithFormApiResponse apiResponse) { - OnUpdatePetWithForm?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUpdatePetWithForm?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUpdatePetWithForm(Exception exception) @@ -404,16 +546,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnUploadFile; + public event EventHandler OnUploadFile; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorUploadFile; - internal void ExecuteOnUploadFile(ApiResponse apiResponse) + internal void ExecuteOnUploadFile(PetApi.UploadFileApiResponse apiResponse) { - OnUploadFile?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUploadFile?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUploadFile(Exception exception) @@ -424,16 +566,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnUploadFileWithRequiredFile; + public event EventHandler OnUploadFileWithRequiredFile; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorUploadFileWithRequiredFile; - internal void ExecuteOnUploadFileWithRequiredFile(ApiResponse apiResponse) + internal void ExecuteOnUploadFileWithRequiredFile(PetApi.UploadFileWithRequiredFileApiResponse apiResponse) { - OnUploadFileWithRequiredFile?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUploadFileWithRequiredFile?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUploadFileWithRequiredFile(Exception exception) @@ -449,6 +591,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -493,7 +640,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public PetApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, PetApiEvents petApiEvents, + public PetApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, PetApiEvents petApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -501,7 +648,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = petApiEvents; ApiKeyProvider = apiKeyProvider; @@ -529,7 +677,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterAddPetDefaultImplementation(ApiResponse apiResponseLocalVar, Pet pet) + private void AfterAddPetDefaultImplementation(IAddPetApiResponse apiResponseLocalVar, Pet pet) { bool suppressDefaultLog = false; AfterAddPet(ref suppressDefaultLog, apiResponseLocalVar, pet); @@ -543,7 +691,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterAddPet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Pet pet); + partial void AfterAddPet(ref bool suppressDefaultLog, IAddPetApiResponse apiResponseLocalVar, Pet pet); /// /// Logs exceptions that occur while retrieving the server response @@ -575,8 +723,8 @@ namespace Org.OpenAPITools.Api /// /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> AddPetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task AddPetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) { try { @@ -594,8 +742,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task AddPetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -654,16 +802,14 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + AddPetApiResponse apiResponseLocalVar = new AddPetApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet", requestedAtLocalVar, _jsonSerializerOptions); AfterAddPetDefaultImplementation(apiResponseLocalVar, pet); Events.ExecuteOnAddPet(apiResponseLocalVar); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) - foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) - tokenBaseLocalVar.BeginRateLimit(); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); @@ -680,6 +826,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class AddPetApiResponse : Org.OpenAPITools.Client.ApiResponse, IAddPetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public AddPetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + public bool IsMethodNotAllowed => 405 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatDeletePet(ref long petId, ref Option apiKey); /// @@ -699,7 +890,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterDeletePetDefaultImplementation(ApiResponse apiResponseLocalVar, long petId, Option apiKey) + private void AfterDeletePetDefaultImplementation(IDeletePetApiResponse apiResponseLocalVar, long petId, Option apiKey) { bool suppressDefaultLog = false; AfterDeletePet(ref suppressDefaultLog, apiResponseLocalVar, petId, apiKey); @@ -714,7 +905,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterDeletePet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long petId, Option apiKey); + partial void AfterDeletePet(ref bool suppressDefaultLog, IDeletePetApiResponse apiResponseLocalVar, long petId, Option apiKey); /// /// Logs exceptions that occur while retrieving the server response @@ -749,8 +940,8 @@ namespace Org.OpenAPITools.Api /// Pet id to delete /// (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeletePetOrDefaultAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeletePetOrDefaultAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -769,8 +960,8 @@ namespace Org.OpenAPITools.Api /// Pet id to delete /// (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeletePetAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeletePetAsync(long petId, Option apiKey = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -808,7 +999,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + DeletePetApiResponse apiResponseLocalVar = new DeletePetApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); AfterDeletePetDefaultImplementation(apiResponseLocalVar, petId, apiKey); @@ -830,6 +1023,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class DeletePetApiResponse : Org.OpenAPITools.Client.ApiResponse, IDeletePetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public DeletePetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFindPetsByStatus(List status); /// @@ -848,7 +1086,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFindPetsByStatusDefaultImplementation(ApiResponse> apiResponseLocalVar, List status) + private void AfterFindPetsByStatusDefaultImplementation(IFindPetsByStatusApiResponse apiResponseLocalVar, List status) { bool suppressDefaultLog = false; AfterFindPetsByStatus(ref suppressDefaultLog, apiResponseLocalVar, status); @@ -862,7 +1100,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFindPetsByStatus(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar, List status); + partial void AfterFindPetsByStatus(ref bool suppressDefaultLog, IFindPetsByStatusApiResponse apiResponseLocalVar, List status); /// /// Logs exceptions that occur while retrieving the server response @@ -894,8 +1132,8 @@ namespace Org.OpenAPITools.Api /// /// Status values that need to be considered for filter /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> FindPetsByStatusOrDefaultAsync(List status, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FindPetsByStatusOrDefaultAsync(List status, System.Threading.CancellationToken cancellationToken = default) { try { @@ -913,8 +1151,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Status values that need to be considered for filter /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FindPetsByStatusAsync(List status, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -974,16 +1212,14 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/findByStatus", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FindPetsByStatusApiResponse apiResponseLocalVar = new FindPetsByStatusApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/findByStatus", requestedAtLocalVar, _jsonSerializerOptions); AfterFindPetsByStatusDefaultImplementation(apiResponseLocalVar, status); Events.ExecuteOnFindPetsByStatus(apiResponseLocalVar); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) - foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) - tokenBaseLocalVar.BeginRateLimit(); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); @@ -1000,6 +1236,89 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FindPetsByStatusApiResponse : Org.OpenAPITools.Client.ApiResponse, IFindPetsByStatusApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FindPetsByStatusApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out List result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatFindPetsByTags(List tags); /// @@ -1018,7 +1337,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterFindPetsByTagsDefaultImplementation(ApiResponse> apiResponseLocalVar, List tags) + private void AfterFindPetsByTagsDefaultImplementation(IFindPetsByTagsApiResponse apiResponseLocalVar, List tags) { bool suppressDefaultLog = false; AfterFindPetsByTags(ref suppressDefaultLog, apiResponseLocalVar, tags); @@ -1032,7 +1351,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterFindPetsByTags(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar, List tags); + partial void AfterFindPetsByTags(ref bool suppressDefaultLog, IFindPetsByTagsApiResponse apiResponseLocalVar, List tags); /// /// Logs exceptions that occur while retrieving the server response @@ -1064,8 +1383,8 @@ namespace Org.OpenAPITools.Api /// /// Tags to filter by /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> FindPetsByTagsOrDefaultAsync(List tags, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FindPetsByTagsOrDefaultAsync(List tags, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1083,8 +1402,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Tags to filter by /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task FindPetsByTagsAsync(List tags, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1144,16 +1463,14 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/findByTags", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + FindPetsByTagsApiResponse apiResponseLocalVar = new FindPetsByTagsApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/findByTags", requestedAtLocalVar, _jsonSerializerOptions); AfterFindPetsByTagsDefaultImplementation(apiResponseLocalVar, tags); Events.ExecuteOnFindPetsByTags(apiResponseLocalVar); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) - foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) - tokenBaseLocalVar.BeginRateLimit(); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); @@ -1170,6 +1487,89 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class FindPetsByTagsApiResponse : Org.OpenAPITools.Client.ApiResponse, IFindPetsByTagsApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public FindPetsByTagsApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public List Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out List result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatGetPetById(ref long petId); /// @@ -1177,7 +1577,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterGetPetByIdDefaultImplementation(ApiResponse apiResponseLocalVar, long petId) + private void AfterGetPetByIdDefaultImplementation(IGetPetByIdApiResponse apiResponseLocalVar, long petId) { bool suppressDefaultLog = false; AfterGetPetById(ref suppressDefaultLog, apiResponseLocalVar, petId); @@ -1191,7 +1591,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetPetById(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long petId); + partial void AfterGetPetById(ref bool suppressDefaultLog, IGetPetByIdApiResponse apiResponseLocalVar, long petId); /// /// Logs exceptions that occur while retrieving the server response @@ -1223,8 +1623,8 @@ namespace Org.OpenAPITools.Api /// /// ID of pet to return /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetPetByIdOrDefaultAsync(long petId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetPetByIdOrDefaultAsync(long petId, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1242,8 +1642,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of pet to return /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetPetByIdAsync(long petId, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1286,7 +1686,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetPetByIdApiResponse apiResponseLocalVar = new GetPetByIdApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); AfterGetPetByIdDefaultImplementation(apiResponseLocalVar, petId); @@ -1308,6 +1710,95 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetPetByIdApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetPetByIdApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetPetByIdApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.Pet Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out Org.OpenAPITools.Model.Pet result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUpdatePet(Pet pet); /// @@ -1326,7 +1817,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterUpdatePetDefaultImplementation(ApiResponse apiResponseLocalVar, Pet pet) + private void AfterUpdatePetDefaultImplementation(IUpdatePetApiResponse apiResponseLocalVar, Pet pet) { bool suppressDefaultLog = false; AfterUpdatePet(ref suppressDefaultLog, apiResponseLocalVar, pet); @@ -1340,7 +1831,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterUpdatePet(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Pet pet); + partial void AfterUpdatePet(ref bool suppressDefaultLog, IUpdatePetApiResponse apiResponseLocalVar, Pet pet); /// /// Logs exceptions that occur while retrieving the server response @@ -1372,8 +1863,8 @@ namespace Org.OpenAPITools.Api /// /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdatePetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdatePetOrDefaultAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1391,8 +1882,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Pet object that needs to be added to the store /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdatePetAsync(Pet pet, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1451,16 +1942,14 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UpdatePetApiResponse apiResponseLocalVar = new UpdatePetApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet", requestedAtLocalVar, _jsonSerializerOptions); AfterUpdatePetDefaultImplementation(apiResponseLocalVar, pet); Events.ExecuteOnUpdatePet(apiResponseLocalVar); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) - foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) - tokenBaseLocalVar.BeginRateLimit(); - if (apiResponseLocalVar.StatusCode == (HttpStatusCode) 429) foreach(TokenBase tokenBaseLocalVar in tokenBaseLocalVars) tokenBaseLocalVar.BeginRateLimit(); @@ -1477,6 +1966,63 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class UpdatePetApiResponse : Org.OpenAPITools.Client.ApiResponse, IUpdatePetApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UpdatePetApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + public bool IsMethodNotAllowed => 405 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUpdatePetWithForm(ref long petId, ref Option name, ref Option status); /// @@ -1501,7 +2047,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterUpdatePetWithFormDefaultImplementation(ApiResponse apiResponseLocalVar, long petId, Option name, Option status) + private void AfterUpdatePetWithFormDefaultImplementation(IUpdatePetWithFormApiResponse apiResponseLocalVar, long petId, Option name, Option status) { bool suppressDefaultLog = false; AfterUpdatePetWithForm(ref suppressDefaultLog, apiResponseLocalVar, petId, name, status); @@ -1517,7 +2063,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterUpdatePetWithForm(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long petId, Option name, Option status); + partial void AfterUpdatePetWithForm(ref bool suppressDefaultLog, IUpdatePetWithFormApiResponse apiResponseLocalVar, long petId, Option name, Option status); /// /// Logs exceptions that occur while retrieving the server response @@ -1555,8 +2101,8 @@ namespace Org.OpenAPITools.Api /// Updated name of the pet (optional) /// Updated status of the pet (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdatePetWithFormOrDefaultAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdatePetWithFormOrDefaultAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1576,8 +2122,8 @@ namespace Org.OpenAPITools.Api /// Updated name of the pet (optional) /// Updated status of the pet (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdatePetWithFormAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdatePetWithFormAsync(long petId, Option name = default, Option status = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1634,7 +2180,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UpdatePetWithFormApiResponse apiResponseLocalVar = new UpdatePetWithFormApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}", requestedAtLocalVar, _jsonSerializerOptions); AfterUpdatePetWithFormDefaultImplementation(apiResponseLocalVar, petId, name, status); @@ -1656,6 +2204,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class UpdatePetWithFormApiResponse : Org.OpenAPITools.Client.ApiResponse, IUpdatePetWithFormApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UpdatePetWithFormApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 405 MethodNotAllowed + /// + /// + public bool IsMethodNotAllowed => 405 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUploadFile(ref long petId, ref Option file, ref Option additionalMetadata); /// @@ -1680,7 +2273,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterUploadFileDefaultImplementation(ApiResponse apiResponseLocalVar, long petId, Option file, Option additionalMetadata) + private void AfterUploadFileDefaultImplementation(IUploadFileApiResponse apiResponseLocalVar, long petId, Option file, Option additionalMetadata) { bool suppressDefaultLog = false; AfterUploadFile(ref suppressDefaultLog, apiResponseLocalVar, petId, file, additionalMetadata); @@ -1696,7 +2289,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterUploadFile(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long petId, Option file, Option additionalMetadata); + partial void AfterUploadFile(ref bool suppressDefaultLog, IUploadFileApiResponse apiResponseLocalVar, long petId, Option file, Option additionalMetadata); /// /// Logs exceptions that occur while retrieving the server response @@ -1734,8 +2327,8 @@ namespace Org.OpenAPITools.Api /// file to upload (optional) /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UploadFileOrDefaultAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UploadFileOrDefaultAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1755,8 +2348,8 @@ namespace Org.OpenAPITools.Api /// file to upload (optional) /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UploadFileAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UploadFileAsync(long petId, Option file = default, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1821,7 +2414,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}/uploadImage", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UploadFileApiResponse apiResponseLocalVar = new UploadFileApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/pet/{petId}/uploadImage", requestedAtLocalVar, _jsonSerializerOptions); AfterUploadFileDefaultImplementation(apiResponseLocalVar, petId, file, additionalMetadata); @@ -1843,6 +2438,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class UploadFileApiResponse : Org.OpenAPITools.Client.ApiResponse, IUploadFileApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UploadFileApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.ApiResponse Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out Org.OpenAPITools.Model.ApiResponse result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUploadFileWithRequiredFile(ref System.IO.Stream requiredFile, ref long petId, ref Option additionalMetadata); /// @@ -1867,7 +2539,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterUploadFileWithRequiredFileDefaultImplementation(ApiResponse apiResponseLocalVar, System.IO.Stream requiredFile, long petId, Option additionalMetadata) + private void AfterUploadFileWithRequiredFileDefaultImplementation(IUploadFileWithRequiredFileApiResponse apiResponseLocalVar, System.IO.Stream requiredFile, long petId, Option additionalMetadata) { bool suppressDefaultLog = false; AfterUploadFileWithRequiredFile(ref suppressDefaultLog, apiResponseLocalVar, requiredFile, petId, additionalMetadata); @@ -1883,7 +2555,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterUploadFileWithRequiredFile(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, System.IO.Stream requiredFile, long petId, Option additionalMetadata); + partial void AfterUploadFileWithRequiredFile(ref bool suppressDefaultLog, IUploadFileWithRequiredFileApiResponse apiResponseLocalVar, System.IO.Stream requiredFile, long petId, Option additionalMetadata); /// /// Logs exceptions that occur while retrieving the server response @@ -1921,8 +2593,8 @@ namespace Org.OpenAPITools.Api /// ID of pet to update /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UploadFileWithRequiredFileOrDefaultAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UploadFileWithRequiredFileOrDefaultAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1942,8 +2614,8 @@ namespace Org.OpenAPITools.Api /// ID of pet to update /// Additional data to pass to server (optional) /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UploadFileWithRequiredFileAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UploadFileWithRequiredFileAsync(System.IO.Stream requiredFile, long petId, Option additionalMetadata = default, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -2008,7 +2680,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/{petId}/uploadImageWithRequiredFile", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UploadFileWithRequiredFileApiResponse apiResponseLocalVar = new UploadFileWithRequiredFileApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/fake/{petId}/uploadImageWithRequiredFile", requestedAtLocalVar, _jsonSerializerOptions); AfterUploadFileWithRequiredFileDefaultImplementation(apiResponseLocalVar, requiredFile, petId, additionalMetadata); @@ -2029,5 +2703,82 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class UploadFileWithRequiredFileApiResponse : Org.OpenAPITools.Client.ApiResponse, IUploadFileWithRequiredFileApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UploadFileWithRequiredFileApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.ApiResponse Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out Org.OpenAPITools.Model.ApiResponse result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/StoreApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/StoreApi.cs index d7891b1b6d59..2bdb19eb968a 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/StoreApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/StoreApi.cs @@ -17,7 +17,6 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; namespace Org.OpenAPITools.Api @@ -42,8 +41,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of the order that needs to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default); /// /// Delete purchase order by ID @@ -53,8 +52,8 @@ namespace Org.OpenAPITools.Api /// /// ID of the order that needs to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> DeleteOrderOrDefaultAsync(string orderId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeleteOrderOrDefaultAsync(string orderId, System.Threading.CancellationToken cancellationToken = default); /// /// Returns pet inventories by status @@ -64,8 +63,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Dictionary<string, int>>> - Task>> GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Returns pet inventories by status @@ -74,8 +73,8 @@ namespace Org.OpenAPITools.Api /// Returns a map of status codes to quantities /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Dictionary<string, int>>> - Task>> GetInventoryOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetInventoryOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Find purchase order by ID @@ -86,8 +85,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of pet that needs to be fetched /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Order>> - Task> GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default); /// /// Find purchase order by ID @@ -97,8 +96,8 @@ namespace Org.OpenAPITools.Api /// /// ID of pet that needs to be fetched /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Order>> - Task> GetOrderByIdOrDefaultAsync(long orderId, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetOrderByIdOrDefaultAsync(long orderId, System.Threading.CancellationToken cancellationToken = default); /// /// Place an order for a pet @@ -109,8 +108,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// order placed for purchasing the pet /// Cancellation Token to cancel the request. - /// Task<ApiResponse<Order>> - Task> PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default); /// /// Place an order for a pet @@ -120,29 +119,100 @@ namespace Org.OpenAPITools.Api /// /// order placed for purchasing the pet /// Cancellation Token to cancel the request. - /// Task<ApiResponse>Order>> - Task> PlaceOrderOrDefaultAsync(Order order, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task PlaceOrderOrDefaultAsync(Order order, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface IDeleteOrderApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface IGetInventoryApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk> + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + } + + /// + /// The + /// + public interface IGetOrderByIdApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface IPlaceOrderApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class StoreApiEvents { /// /// The event raised after the server response /// - public event EventHandler> OnDeleteOrder; + public event EventHandler OnDeleteOrder; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorDeleteOrder; - internal void ExecuteOnDeleteOrder(ApiResponse apiResponse) + internal void ExecuteOnDeleteOrder(StoreApi.DeleteOrderApiResponse apiResponse) { - OnDeleteOrder?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnDeleteOrder?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorDeleteOrder(Exception exception) @@ -153,16 +223,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler>> OnGetInventory; + public event EventHandler OnGetInventory; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorGetInventory; - internal void ExecuteOnGetInventory(ApiResponse> apiResponse) + internal void ExecuteOnGetInventory(StoreApi.GetInventoryApiResponse apiResponse) { - OnGetInventory?.Invoke(this, new ApiResponseEventArgs>(apiResponse)); + OnGetInventory?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetInventory(Exception exception) @@ -173,16 +243,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnGetOrderById; + public event EventHandler OnGetOrderById; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorGetOrderById; - internal void ExecuteOnGetOrderById(ApiResponse apiResponse) + internal void ExecuteOnGetOrderById(StoreApi.GetOrderByIdApiResponse apiResponse) { - OnGetOrderById?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnGetOrderById?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetOrderById(Exception exception) @@ -193,16 +263,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnPlaceOrder; + public event EventHandler OnPlaceOrder; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorPlaceOrder; - internal void ExecuteOnPlaceOrder(ApiResponse apiResponse) + internal void ExecuteOnPlaceOrder(StoreApi.PlaceOrderApiResponse apiResponse) { - OnPlaceOrder?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnPlaceOrder?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorPlaceOrder(Exception exception) @@ -218,6 +288,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -262,7 +337,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public StoreApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, StoreApiEvents storeApiEvents, + public StoreApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, StoreApiEvents storeApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -270,7 +345,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = storeApiEvents; ApiKeyProvider = apiKeyProvider; @@ -298,7 +374,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterDeleteOrderDefaultImplementation(ApiResponse apiResponseLocalVar, string orderId) + private void AfterDeleteOrderDefaultImplementation(IDeleteOrderApiResponse apiResponseLocalVar, string orderId) { bool suppressDefaultLog = false; AfterDeleteOrder(ref suppressDefaultLog, apiResponseLocalVar, orderId); @@ -312,7 +388,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterDeleteOrder(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string orderId); + partial void AfterDeleteOrder(ref bool suppressDefaultLog, IDeleteOrderApiResponse apiResponseLocalVar, string orderId); /// /// Logs exceptions that occur while retrieving the server response @@ -344,8 +420,8 @@ namespace Org.OpenAPITools.Api /// /// ID of the order that needs to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeleteOrderOrDefaultAsync(string orderId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeleteOrderOrDefaultAsync(string orderId, System.Threading.CancellationToken cancellationToken = default) { try { @@ -363,8 +439,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of the order that needs to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeleteOrderAsync(string orderId, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -391,7 +467,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order/{order_id}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + DeleteOrderApiResponse apiResponseLocalVar = new DeleteOrderApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order/{order_id}", requestedAtLocalVar, _jsonSerializerOptions); AfterDeleteOrderDefaultImplementation(apiResponseLocalVar, orderId); @@ -409,11 +487,62 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class DeleteOrderApiResponse : Org.OpenAPITools.Client.ApiResponse, IDeleteOrderApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public DeleteOrderApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterGetInventoryDefaultImplementation(ApiResponse> apiResponseLocalVar) + private void AfterGetInventoryDefaultImplementation(IGetInventoryApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterGetInventory(ref suppressDefaultLog, apiResponseLocalVar); @@ -426,7 +555,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetInventory(ref bool suppressDefaultLog, ApiResponse> apiResponseLocalVar); + partial void AfterGetInventory(ref bool suppressDefaultLog, IGetInventoryApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -455,8 +584,8 @@ namespace Org.OpenAPITools.Api /// Returns pet inventories by status Returns a map of status codes to quantities /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> GetInventoryOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetInventoryOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -473,8 +602,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task>> GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetInventoryAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -513,7 +642,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse> apiResponseLocalVar = new ApiResponse>(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/inventory", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetInventoryApiResponse apiResponseLocalVar = new GetInventoryApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/inventory", requestedAtLocalVar, _jsonSerializerOptions); AfterGetInventoryDefaultImplementation(apiResponseLocalVar); @@ -535,6 +666,83 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetInventoryApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetInventoryApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetInventoryApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Dictionary Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize>(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out Dictionary result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatGetOrderById(ref long orderId); /// @@ -542,7 +750,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterGetOrderByIdDefaultImplementation(ApiResponse apiResponseLocalVar, long orderId) + private void AfterGetOrderByIdDefaultImplementation(IGetOrderByIdApiResponse apiResponseLocalVar, long orderId) { bool suppressDefaultLog = false; AfterGetOrderById(ref suppressDefaultLog, apiResponseLocalVar, orderId); @@ -556,7 +764,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetOrderById(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, long orderId); + partial void AfterGetOrderById(ref bool suppressDefaultLog, IGetOrderByIdApiResponse apiResponseLocalVar, long orderId); /// /// Logs exceptions that occur while retrieving the server response @@ -588,8 +796,8 @@ namespace Org.OpenAPITools.Api /// /// ID of pet that needs to be fetched /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetOrderByIdOrDefaultAsync(long orderId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetOrderByIdOrDefaultAsync(long orderId, System.Threading.CancellationToken cancellationToken = default) { try { @@ -607,8 +815,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// ID of pet that needs to be fetched /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetOrderByIdAsync(long orderId, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -643,7 +851,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order/{order_id}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetOrderByIdApiResponse apiResponseLocalVar = new GetOrderByIdApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order/{order_id}", requestedAtLocalVar, _jsonSerializerOptions); AfterGetOrderByIdDefaultImplementation(apiResponseLocalVar, orderId); @@ -661,6 +871,95 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetOrderByIdApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetOrderByIdApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetOrderByIdApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.Order Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out Org.OpenAPITools.Model.Order result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatPlaceOrder(Order order); /// @@ -679,7 +978,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterPlaceOrderDefaultImplementation(ApiResponse apiResponseLocalVar, Order order) + private void AfterPlaceOrderDefaultImplementation(IPlaceOrderApiResponse apiResponseLocalVar, Order order) { bool suppressDefaultLog = false; AfterPlaceOrder(ref suppressDefaultLog, apiResponseLocalVar, order); @@ -693,7 +992,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterPlaceOrder(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, Order order); + partial void AfterPlaceOrder(ref bool suppressDefaultLog, IPlaceOrderApiResponse apiResponseLocalVar, Order order); /// /// Logs exceptions that occur while retrieving the server response @@ -725,8 +1024,8 @@ namespace Org.OpenAPITools.Api /// /// order placed for purchasing the pet /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> PlaceOrderOrDefaultAsync(Order order, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task PlaceOrderOrDefaultAsync(Order order, System.Threading.CancellationToken cancellationToken = default) { try { @@ -744,8 +1043,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// order placed for purchasing the pet /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task PlaceOrderAsync(Order order, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -794,7 +1093,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + PlaceOrderApiResponse apiResponseLocalVar = new PlaceOrderApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/store/order", requestedAtLocalVar, _jsonSerializerOptions); AfterPlaceOrderDefaultImplementation(apiResponseLocalVar, order); @@ -811,5 +1112,88 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class PlaceOrderApiResponse : Org.OpenAPITools.Client.ApiResponse, IPlaceOrderApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public PlaceOrderApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.Order Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out Org.OpenAPITools.Model.Order result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/UserApi.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/UserApi.cs index d275abc8f58a..411badad6742 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/UserApi.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Api/UserApi.cs @@ -17,7 +17,6 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Text.Json; using Org.OpenAPITools.Client; -using Org.OpenAPITools.Api; using Org.OpenAPITools.Model; namespace Org.OpenAPITools.Api @@ -42,8 +41,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Created user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default); /// /// Create user @@ -53,8 +52,8 @@ namespace Org.OpenAPITools.Api /// /// Created user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> CreateUserOrDefaultAsync(User user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUserOrDefaultAsync(User user, System.Threading.CancellationToken cancellationToken = default); /// /// Creates list of users with given input array @@ -65,8 +64,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// List of user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default); /// /// Creates list of users with given input array @@ -76,8 +75,8 @@ namespace Org.OpenAPITools.Api /// /// List of user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> CreateUsersWithArrayInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUsersWithArrayInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default); /// /// Creates list of users with given input array @@ -88,8 +87,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// List of user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default); /// /// Creates list of users with given input array @@ -99,8 +98,8 @@ namespace Org.OpenAPITools.Api /// /// List of user object /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> CreateUsersWithListInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task CreateUsersWithListInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default); /// /// Delete user @@ -111,8 +110,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// The name that needs to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default); /// /// Delete user @@ -122,8 +121,8 @@ namespace Org.OpenAPITools.Api /// /// The name that needs to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> DeleteUserOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task DeleteUserOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default); /// /// Get user by user name @@ -134,8 +133,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// The name that needs to be fetched. Use user1 for testing. /// Cancellation Token to cancel the request. - /// Task<ApiResponse<User>> - Task> GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default); /// /// Get user by user name @@ -145,8 +144,8 @@ namespace Org.OpenAPITools.Api /// /// The name that needs to be fetched. Use user1 for testing. /// Cancellation Token to cancel the request. - /// Task<ApiResponse>User>> - Task> GetUserByNameOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task GetUserByNameOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default); /// /// Logs user into the system @@ -158,8 +157,8 @@ namespace Org.OpenAPITools.Api /// The user name for login /// The password for login in clear text /// Cancellation Token to cancel the request. - /// Task<ApiResponse<string>> - Task> LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default); /// /// Logs user into the system @@ -170,8 +169,8 @@ namespace Org.OpenAPITools.Api /// The user name for login /// The password for login in clear text /// Cancellation Token to cancel the request. - /// Task<ApiResponse>string>> - Task> LoginUserOrDefaultAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task LoginUserOrDefaultAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default); /// /// Logs out current logged in user session @@ -181,8 +180,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Logs out current logged in user session @@ -191,8 +190,8 @@ namespace Org.OpenAPITools.Api /// /// /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> LogoutUserOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); + /// <> + Task LogoutUserOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default); /// /// Updated user @@ -204,8 +203,8 @@ namespace Org.OpenAPITools.Api /// Updated user object /// name that need to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse<object>> - Task> UpdateUserAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdateUserAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default); /// /// Updated user @@ -216,29 +215,154 @@ namespace Org.OpenAPITools.Api /// Updated user object /// name that need to be deleted /// Cancellation Token to cancel the request. - /// Task<ApiResponse>object>> - Task> UpdateUserOrDefaultAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default); + /// <> + Task UpdateUserOrDefaultAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default); + } + + /// + /// The + /// + public interface ICreateUserApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface ICreateUsersWithArrayInputApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface ICreateUsersWithListInputApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface IDeleteUserApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface IGetUserByNameApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } + } + + /// + /// The + /// + public interface ILoginUserApiResponse : Org.OpenAPITools.Client.IApiResponse, IOk + { + /// + /// Returns true if the response is 200 Ok + /// + /// + bool IsOk { get; } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + } + + /// + /// The + /// + public interface ILogoutUserApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is the default response type + /// + /// + bool IsDefault { get; } + } + + /// + /// The + /// + public interface IUpdateUserApiResponse : Org.OpenAPITools.Client.IApiResponse + { + /// + /// Returns true if the response is 400 BadRequest + /// + /// + bool IsBadRequest { get; } + + /// + /// Returns true if the response is 404 NotFound + /// + /// + bool IsNotFound { get; } } /// /// Represents a collection of functions to interact with the API endpoints - /// This class is registered as transient. /// public class UserApiEvents { /// /// The event raised after the server response /// - public event EventHandler> OnCreateUser; + public event EventHandler OnCreateUser; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorCreateUser; - internal void ExecuteOnCreateUser(ApiResponse apiResponse) + internal void ExecuteOnCreateUser(UserApi.CreateUserApiResponse apiResponse) { - OnCreateUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnCreateUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorCreateUser(Exception exception) @@ -249,16 +373,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnCreateUsersWithArrayInput; + public event EventHandler OnCreateUsersWithArrayInput; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorCreateUsersWithArrayInput; - internal void ExecuteOnCreateUsersWithArrayInput(ApiResponse apiResponse) + internal void ExecuteOnCreateUsersWithArrayInput(UserApi.CreateUsersWithArrayInputApiResponse apiResponse) { - OnCreateUsersWithArrayInput?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnCreateUsersWithArrayInput?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorCreateUsersWithArrayInput(Exception exception) @@ -269,16 +393,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnCreateUsersWithListInput; + public event EventHandler OnCreateUsersWithListInput; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorCreateUsersWithListInput; - internal void ExecuteOnCreateUsersWithListInput(ApiResponse apiResponse) + internal void ExecuteOnCreateUsersWithListInput(UserApi.CreateUsersWithListInputApiResponse apiResponse) { - OnCreateUsersWithListInput?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnCreateUsersWithListInput?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorCreateUsersWithListInput(Exception exception) @@ -289,16 +413,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnDeleteUser; + public event EventHandler OnDeleteUser; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorDeleteUser; - internal void ExecuteOnDeleteUser(ApiResponse apiResponse) + internal void ExecuteOnDeleteUser(UserApi.DeleteUserApiResponse apiResponse) { - OnDeleteUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnDeleteUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorDeleteUser(Exception exception) @@ -309,16 +433,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnGetUserByName; + public event EventHandler OnGetUserByName; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorGetUserByName; - internal void ExecuteOnGetUserByName(ApiResponse apiResponse) + internal void ExecuteOnGetUserByName(UserApi.GetUserByNameApiResponse apiResponse) { - OnGetUserByName?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnGetUserByName?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorGetUserByName(Exception exception) @@ -329,16 +453,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnLoginUser; + public event EventHandler OnLoginUser; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorLoginUser; - internal void ExecuteOnLoginUser(ApiResponse apiResponse) + internal void ExecuteOnLoginUser(UserApi.LoginUserApiResponse apiResponse) { - OnLoginUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnLoginUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorLoginUser(Exception exception) @@ -349,16 +473,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnLogoutUser; + public event EventHandler OnLogoutUser; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorLogoutUser; - internal void ExecuteOnLogoutUser(ApiResponse apiResponse) + internal void ExecuteOnLogoutUser(UserApi.LogoutUserApiResponse apiResponse) { - OnLogoutUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnLogoutUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorLogoutUser(Exception exception) @@ -369,16 +493,16 @@ namespace Org.OpenAPITools.Api /// /// The event raised after the server response /// - public event EventHandler> OnUpdateUser; + public event EventHandler OnUpdateUser; /// /// The event raised after an error querying the server /// public event EventHandler OnErrorUpdateUser; - internal void ExecuteOnUpdateUser(ApiResponse apiResponse) + internal void ExecuteOnUpdateUser(UserApi.UpdateUserApiResponse apiResponse) { - OnUpdateUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); + OnUpdateUser?.Invoke(this, new ApiResponseEventArgs(apiResponse)); } internal void ExecuteOnErrorUpdateUser(Exception exception) @@ -394,6 +518,11 @@ namespace Org.OpenAPITools.Api { private JsonSerializerOptions _jsonSerializerOptions; + /// + /// The logger factory + /// + public ILoggerFactory LoggerFactory { get; } + /// /// The logger /// @@ -438,7 +567,7 @@ namespace Org.OpenAPITools.Api /// Initializes a new instance of the class. /// /// - public UserApi(ILogger logger, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, UserApiEvents userApiEvents, + public UserApi(ILogger logger, ILoggerFactory loggerFactory, HttpClient httpClient, JsonSerializerOptionsProvider jsonSerializerOptionsProvider, UserApiEvents userApiEvents, TokenProvider apiKeyProvider, TokenProvider bearerTokenProvider, TokenProvider basicTokenProvider, @@ -446,7 +575,8 @@ namespace Org.OpenAPITools.Api TokenProvider oauthTokenProvider) { _jsonSerializerOptions = jsonSerializerOptionsProvider.Options; - Logger = logger; + LoggerFactory = loggerFactory; + Logger = LoggerFactory.CreateLogger(); HttpClient = httpClient; Events = userApiEvents; ApiKeyProvider = apiKeyProvider; @@ -474,7 +604,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterCreateUserDefaultImplementation(ApiResponse apiResponseLocalVar, User user) + private void AfterCreateUserDefaultImplementation(ICreateUserApiResponse apiResponseLocalVar, User user) { bool suppressDefaultLog = false; AfterCreateUser(ref suppressDefaultLog, apiResponseLocalVar, user); @@ -488,7 +618,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterCreateUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, User user); + partial void AfterCreateUser(ref bool suppressDefaultLog, ICreateUserApiResponse apiResponseLocalVar, User user); /// /// Logs exceptions that occur while retrieving the server response @@ -520,8 +650,8 @@ namespace Org.OpenAPITools.Api /// /// Created user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUserOrDefaultAsync(User user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUserOrDefaultAsync(User user, System.Threading.CancellationToken cancellationToken = default) { try { @@ -539,8 +669,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// Created user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUserAsync(User user, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -580,7 +710,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + CreateUserApiResponse apiResponseLocalVar = new CreateUserApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user", requestedAtLocalVar, _jsonSerializerOptions); AfterCreateUserDefaultImplementation(apiResponseLocalVar, user); @@ -598,6 +730,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class CreateUserApiResponse : Org.OpenAPITools.Client.ApiResponse, ICreateUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public CreateUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatCreateUsersWithArrayInput(List user); /// @@ -616,7 +793,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterCreateUsersWithArrayInputDefaultImplementation(ApiResponse apiResponseLocalVar, List user) + private void AfterCreateUsersWithArrayInputDefaultImplementation(ICreateUsersWithArrayInputApiResponse apiResponseLocalVar, List user) { bool suppressDefaultLog = false; AfterCreateUsersWithArrayInput(ref suppressDefaultLog, apiResponseLocalVar, user); @@ -630,7 +807,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterCreateUsersWithArrayInput(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, List user); + partial void AfterCreateUsersWithArrayInput(ref bool suppressDefaultLog, ICreateUsersWithArrayInputApiResponse apiResponseLocalVar, List user); /// /// Logs exceptions that occur while retrieving the server response @@ -662,8 +839,8 @@ namespace Org.OpenAPITools.Api /// /// List of user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUsersWithArrayInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUsersWithArrayInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default) { try { @@ -681,8 +858,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// List of user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUsersWithArrayInputAsync(List user, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -722,7 +899,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/createWithArray", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + CreateUsersWithArrayInputApiResponse apiResponseLocalVar = new CreateUsersWithArrayInputApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/createWithArray", requestedAtLocalVar, _jsonSerializerOptions); AfterCreateUsersWithArrayInputDefaultImplementation(apiResponseLocalVar, user); @@ -740,6 +919,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class CreateUsersWithArrayInputApiResponse : Org.OpenAPITools.Client.ApiResponse, ICreateUsersWithArrayInputApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public CreateUsersWithArrayInputApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatCreateUsersWithListInput(List user); /// @@ -758,7 +982,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterCreateUsersWithListInputDefaultImplementation(ApiResponse apiResponseLocalVar, List user) + private void AfterCreateUsersWithListInputDefaultImplementation(ICreateUsersWithListInputApiResponse apiResponseLocalVar, List user) { bool suppressDefaultLog = false; AfterCreateUsersWithListInput(ref suppressDefaultLog, apiResponseLocalVar, user); @@ -772,7 +996,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterCreateUsersWithListInput(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, List user); + partial void AfterCreateUsersWithListInput(ref bool suppressDefaultLog, ICreateUsersWithListInputApiResponse apiResponseLocalVar, List user); /// /// Logs exceptions that occur while retrieving the server response @@ -804,8 +1028,8 @@ namespace Org.OpenAPITools.Api /// /// List of user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUsersWithListInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUsersWithListInputOrDefaultAsync(List user, System.Threading.CancellationToken cancellationToken = default) { try { @@ -823,8 +1047,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// List of user object /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task CreateUsersWithListInputAsync(List user, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -864,7 +1088,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/createWithList", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + CreateUsersWithListInputApiResponse apiResponseLocalVar = new CreateUsersWithListInputApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/createWithList", requestedAtLocalVar, _jsonSerializerOptions); AfterCreateUsersWithListInputDefaultImplementation(apiResponseLocalVar, user); @@ -882,6 +1108,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class CreateUsersWithListInputApiResponse : Org.OpenAPITools.Client.ApiResponse, ICreateUsersWithListInputApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public CreateUsersWithListInputApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatDeleteUser(ref string username); /// @@ -900,7 +1171,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterDeleteUserDefaultImplementation(ApiResponse apiResponseLocalVar, string username) + private void AfterDeleteUserDefaultImplementation(IDeleteUserApiResponse apiResponseLocalVar, string username) { bool suppressDefaultLog = false; AfterDeleteUser(ref suppressDefaultLog, apiResponseLocalVar, username); @@ -914,7 +1185,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterDeleteUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string username); + partial void AfterDeleteUser(ref bool suppressDefaultLog, IDeleteUserApiResponse apiResponseLocalVar, string username); /// /// Logs exceptions that occur while retrieving the server response @@ -946,8 +1217,8 @@ namespace Org.OpenAPITools.Api /// /// The name that needs to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeleteUserOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeleteUserOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default) { try { @@ -965,8 +1236,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// The name that needs to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task DeleteUserAsync(string username, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -993,7 +1264,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + DeleteUserApiResponse apiResponseLocalVar = new DeleteUserApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); AfterDeleteUserDefaultImplementation(apiResponseLocalVar, username); @@ -1011,6 +1284,57 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class DeleteUserApiResponse : Org.OpenAPITools.Client.ApiResponse, IDeleteUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public DeleteUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatGetUserByName(ref string username); /// @@ -1029,7 +1353,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterGetUserByNameDefaultImplementation(ApiResponse apiResponseLocalVar, string username) + private void AfterGetUserByNameDefaultImplementation(IGetUserByNameApiResponse apiResponseLocalVar, string username) { bool suppressDefaultLog = false; AfterGetUserByName(ref suppressDefaultLog, apiResponseLocalVar, username); @@ -1043,7 +1367,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterGetUserByName(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string username); + partial void AfterGetUserByName(ref bool suppressDefaultLog, IGetUserByNameApiResponse apiResponseLocalVar, string username); /// /// Logs exceptions that occur while retrieving the server response @@ -1075,8 +1399,8 @@ namespace Org.OpenAPITools.Api /// /// The name that needs to be fetched. Use user1 for testing. /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetUserByNameOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetUserByNameOrDefaultAsync(string username, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1094,8 +1418,8 @@ namespace Org.OpenAPITools.Api /// Thrown when fails to make API call /// The name that needs to be fetched. Use user1 for testing. /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task GetUserByNameAsync(string username, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1132,7 +1456,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + GetUserByNameApiResponse apiResponseLocalVar = new GetUserByNameApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); AfterGetUserByNameDefaultImplementation(apiResponseLocalVar, username); @@ -1150,6 +1476,95 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class GetUserByNameApiResponse : Org.OpenAPITools.Client.ApiResponse, IGetUserByNameApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public GetUserByNameApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public Org.OpenAPITools.Model.User Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out Org.OpenAPITools.Model.User result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatLoginUser(ref string username, ref string password); /// @@ -1173,7 +1588,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterLoginUserDefaultImplementation(ApiResponse apiResponseLocalVar, string username, string password) + private void AfterLoginUserDefaultImplementation(ILoginUserApiResponse apiResponseLocalVar, string username, string password) { bool suppressDefaultLog = false; AfterLoginUser(ref suppressDefaultLog, apiResponseLocalVar, username, password); @@ -1188,7 +1603,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterLoginUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, string username, string password); + partial void AfterLoginUser(ref bool suppressDefaultLog, ILoginUserApiResponse apiResponseLocalVar, string username, string password); /// /// Logs exceptions that occur while retrieving the server response @@ -1223,8 +1638,8 @@ namespace Org.OpenAPITools.Api /// The user name for login /// The password for login in clear text /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> LoginUserOrDefaultAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task LoginUserOrDefaultAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1243,8 +1658,8 @@ namespace Org.OpenAPITools.Api /// The user name for login /// The password for login in clear text /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task LoginUserAsync(string username, string password, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1287,7 +1702,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/login", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + LoginUserApiResponse apiResponseLocalVar = new LoginUserApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/login", requestedAtLocalVar, _jsonSerializerOptions); AfterLoginUserDefaultImplementation(apiResponseLocalVar, username, password); @@ -1305,11 +1722,94 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class LoginUserApiResponse : Org.OpenAPITools.Client.ApiResponse, ILoginUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public LoginUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 200 Ok + /// + /// + public bool IsOk => 200 == (int)StatusCode; + + /// + /// Deserializes the response if the response is 200 Ok + /// + /// + public string Ok() + { + // This logic may be modified with the AsModel.mustache template + return IsOk + ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) + : default; + } + + /// + /// Returns true if the response is 200 Ok and the deserialized response is not null + /// + /// + /// + public bool TryOk(out string result) + { + result = null; + + try + { + result = Ok(); + } catch (Exception e) + { + OnDeserializationErrorDefaultImplementation(e, (HttpStatusCode)200); + } + + return result != null; + } + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + /// /// Processes the server response /// /// - private void AfterLogoutUserDefaultImplementation(ApiResponse apiResponseLocalVar) + private void AfterLogoutUserDefaultImplementation(ILogoutUserApiResponse apiResponseLocalVar) { bool suppressDefaultLog = false; AfterLogoutUser(ref suppressDefaultLog, apiResponseLocalVar); @@ -1322,7 +1822,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterLogoutUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar); + partial void AfterLogoutUser(ref bool suppressDefaultLog, ILogoutUserApiResponse apiResponseLocalVar); /// /// Logs exceptions that occur while retrieving the server response @@ -1351,8 +1851,8 @@ namespace Org.OpenAPITools.Api /// Logs out current logged in user session /// /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> LogoutUserOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task LogoutUserOrDefaultAsync(System.Threading.CancellationToken cancellationToken = default) { try { @@ -1369,8 +1869,8 @@ namespace Org.OpenAPITools.Api /// /// Thrown when fails to make API call /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task LogoutUserAsync(System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1392,7 +1892,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/logout", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + LogoutUserApiResponse apiResponseLocalVar = new LogoutUserApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/logout", requestedAtLocalVar, _jsonSerializerOptions); AfterLogoutUserDefaultImplementation(apiResponseLocalVar); @@ -1410,6 +1912,51 @@ namespace Org.OpenAPITools.Api } } + /// + /// The + /// + public partial class LogoutUserApiResponse : Org.OpenAPITools.Client.ApiResponse, ILogoutUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public LogoutUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is the default response type + /// + /// + public bool IsDefault => true; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } + partial void FormatUpdateUser(User user, ref string username); /// @@ -1433,7 +1980,7 @@ namespace Org.OpenAPITools.Api /// /// /// - private void AfterUpdateUserDefaultImplementation(ApiResponse apiResponseLocalVar, User user, string username) + private void AfterUpdateUserDefaultImplementation(IUpdateUserApiResponse apiResponseLocalVar, User user, string username) { bool suppressDefaultLog = false; AfterUpdateUser(ref suppressDefaultLog, apiResponseLocalVar, user, username); @@ -1448,7 +1995,7 @@ namespace Org.OpenAPITools.Api /// /// /// - partial void AfterUpdateUser(ref bool suppressDefaultLog, ApiResponse apiResponseLocalVar, User user, string username); + partial void AfterUpdateUser(ref bool suppressDefaultLog, IUpdateUserApiResponse apiResponseLocalVar, User user, string username); /// /// Logs exceptions that occur while retrieving the server response @@ -1483,8 +2030,8 @@ namespace Org.OpenAPITools.Api /// Updated user object /// name that need to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdateUserOrDefaultAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdateUserOrDefaultAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default) { try { @@ -1503,8 +2050,8 @@ namespace Org.OpenAPITools.Api /// Updated user object /// name that need to be deleted /// Cancellation Token to cancel the request. - /// <> where T : - public async Task> UpdateUserAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default) + /// <> + public async Task UpdateUserAsync(User user, string username, System.Threading.CancellationToken cancellationToken = default) { UriBuilder uriBuilderLocalVar = new UriBuilder(); @@ -1545,7 +2092,9 @@ namespace Org.OpenAPITools.Api { string responseContentLocalVar = await httpResponseMessageLocalVar.Content.ReadAsStringAsync().ConfigureAwait(false); - ApiResponse apiResponseLocalVar = new ApiResponse(httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); + ILogger apiResponseLoggerLocalVar = LoggerFactory.CreateLogger(); + + UpdateUserApiResponse apiResponseLocalVar = new UpdateUserApiResponse(apiResponseLoggerLocalVar, httpRequestMessageLocalVar, httpResponseMessageLocalVar, responseContentLocalVar, "/user/{username}", requestedAtLocalVar, _jsonSerializerOptions); AfterUpdateUserDefaultImplementation(apiResponseLocalVar, user, username); @@ -1562,5 +2111,56 @@ namespace Org.OpenAPITools.Api throw; } } + + /// + /// The + /// + public partial class UpdateUserApiResponse : Org.OpenAPITools.Client.ApiResponse, IUpdateUserApiResponse + { + /// + /// The logger + /// + public ILogger Logger { get; } + + /// + /// The + /// + /// + /// + /// + /// + /// + /// + /// + public UpdateUserApiResponse(ILogger logger, System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage, string rawContent, string path, DateTime requestedAt, System.Text.Json.JsonSerializerOptions jsonSerializerOptions) : base(httpRequestMessage, httpResponseMessage, rawContent, path, requestedAt, jsonSerializerOptions) + { + Logger = logger; + OnCreated(httpRequestMessage, httpResponseMessage); + } + + partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + + /// + /// Returns true if the response is 400 BadRequest + /// + /// + public bool IsBadRequest => 400 == (int)StatusCode; + + /// + /// Returns true if the response is 404 NotFound + /// + /// + public bool IsNotFound => 404 == (int)StatusCode; + + private void OnDeserializationErrorDefaultImplementation(Exception exception, HttpStatusCode httpStatusCode) + { + bool suppressDefaultLog = false; + OnDeserializationError(ref suppressDefaultLog, exception, httpStatusCode); + if (!suppressDefaultLog) + Logger.LogError(exception, "An error occurred while deserializing the {code} response.", httpStatusCode); + } + + partial void OnDeserializationError(ref bool suppressDefaultLog, Exception exception, HttpStatusCode httpStatusCode); + } } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs index 28d50d6378f8..3cb65e5adc0b 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs @@ -5,18 +5,18 @@ namespace Org.OpenAPITools.Client /// /// Useful for tracking server health /// - public class ApiResponseEventArgs : EventArgs + public class ApiResponseEventArgs : EventArgs { /// /// The ApiResponse /// - public ApiResponse ApiResponse { get; } + public ApiResponse ApiResponse { get; } /// /// The ApiResponseEventArgs /// /// - public ApiResponseEventArgs(ApiResponse apiResponse) + public ApiResponseEventArgs(ApiResponse apiResponse) { ApiResponse = apiResponse; } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Client/ApiResponse`1.cs b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Client/ApiResponse`1.cs index 0186178f4c37..e922816db530 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Client/ApiResponse`1.cs +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Client/ApiResponse`1.cs @@ -9,8 +9,6 @@ */ using System; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; using System.Net; namespace Org.OpenAPITools.Client @@ -18,15 +16,15 @@ namespace Org.OpenAPITools.Client /// /// Provides a non-generic contract for the ApiResponse wrapper. /// - public interface IApiResponse + public partial interface IApiResponse { /// - /// The type that represents the server's response. + /// The IsSuccessStatusCode from the api response /// - Type ResponseType { get; } + bool IsSuccessStatusCode { get; } /// - /// Gets or sets the status code (HTTP status code) + /// Gets the status code (HTTP status code) /// /// The status code. HttpStatusCode StatusCode { get; } @@ -41,11 +39,26 @@ namespace Org.OpenAPITools.Client /// DateTime DownloadedAt { get; } + /// + /// The headers contained in the api response + /// + System.Net.Http.Headers.HttpResponseHeaders Headers { get; } + /// /// The path used when making the request. /// string Path { get; } + /// + /// The reason phrase contained in the api response + /// + string ReasonPhrase { get; } + + /// + /// The DateTime when the request was sent. + /// + DateTime RequestedAt { get; } + /// /// The Uri used when making the request. /// @@ -55,26 +68,18 @@ namespace Org.OpenAPITools.Client /// /// API Response /// - public partial class ApiResponse : IApiResponse + public partial class ApiResponse : IApiResponse { /// - /// Gets or sets the status code (HTTP status code) + /// Gets the status code (HTTP status code) /// /// The status code. public HttpStatusCode StatusCode { get; } - /// - /// The type that represents the server's response. - /// - public Type ResponseType - { - get { return typeof(T); } - } - /// /// The raw data /// - public string RawContent { get; private set; } + public string RawContent { get; protected set; } /// /// The IsSuccessStatusCode from the api response @@ -112,9 +117,9 @@ namespace Org.OpenAPITools.Client public Uri RequestUri { get; } /// - /// The JsonSerialzierOptions + /// The /// - private System.Text.Json.JsonSerializerOptions _jsonSerializerOptions; + protected System.Text.Json.JsonSerializerOptions _jsonSerializerOptions; /// /// Construct the response using an HttpResponseMessage @@ -140,33 +145,45 @@ namespace Org.OpenAPITools.Client } partial void OnCreated(System.Net.Http.HttpRequestMessage httpRequestMessage, System.Net.Http.HttpResponseMessage httpResponseMessage); + } + + /// + /// An interface for responses of type + /// + /// + public interface IOk : IApiResponse + { + /// + /// Deserializes the response if the response is Ok + /// + /// + TType Ok(); /// - /// Deserializes the server's response + /// Returns true if the response is Ok and the deserialized response is not null /// - public T AsModel() - { - // This logic may be modified with the AsModel.mustache template - return IsSuccessStatusCode - ? System.Text.Json.JsonSerializer.Deserialize(RawContent, _jsonSerializerOptions) - : default(T); - } + /// + /// + bool TryOk(out TType result); + } + + /// + /// An interface for responses of type + /// + /// + public interface IDefault : IApiResponse + { + /// + /// Deserializes the response if the response is Default + /// + /// + TType Default(); /// - /// Returns true when the model can be deserialized + /// Returns true if the response is Default and the deserialized response is not null /// - public bool TryToModel(out T model) - { - try - { - model = AsModel(); - return model != null; - } - catch - { - model = default(T); - return false; - } - } + /// + /// + bool TryDefault(out TType result); } } diff --git a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/README.md b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/README.md index a9a4790890c9..d90bb5761dd3 100644 --- a/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/README.md +++ b/samples/client/petstore/csharp/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/README.md @@ -61,8 +61,8 @@ namespace YourProject { var host = CreateHostBuilder(args).Build(); var api = host.Services.GetRequiredService(); - ApiResponse response = await api.Call123TestSpecialTagsAsync("todo"); - ModelClient model = response.AsModel(); + Call123TestSpecialTagsApiResponse apiResponse = await api.Call123TestSpecialTagsAsync("todo"); + ModelClient model = apiResponse.Ok(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) diff --git a/samples/client/petstore/csharp/OpenAPIClient-httpclient/docs/UpdatePet200Response.md b/samples/client/petstore/csharp/OpenAPIClient-httpclient/docs/UpdatePet200Response.md new file mode 100644 index 000000000000..d1625d266647 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-httpclient/docs/UpdatePet200Response.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.UpdatePet200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**VarString** | [**Pet**](Pet.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs b/samples/client/petstore/csharp/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs new file mode 100644 index 000000000000..8cb066737bc4 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-httpclient/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs @@ -0,0 +1,66 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing UpdatePet200Response + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class UpdatePet200ResponseTests : IDisposable + { + // TODO uncomment below to declare an instance variable for UpdatePet200Response + //private UpdatePet200Response instance; + + public UpdatePet200ResponseTests() + { + // TODO uncomment below to create an instance of UpdatePet200Response + //instance = new UpdatePet200Response(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of UpdatePet200Response + /// + [Fact] + public void UpdatePet200ResponseInstanceTest() + { + // TODO uncomment below to test "IsType" UpdatePet200Response + //Assert.IsType(instance); + } + + /// + /// Test the property 'VarString' + /// + [Fact] + public void VarStringTest() + { + // TODO unit test for the property 'VarString' + } + } +} diff --git a/samples/client/petstore/csharp/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/UpdatePet200Response.cs b/samples/client/petstore/csharp/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/UpdatePet200Response.cs new file mode 100644 index 000000000000..86f12146ecbf --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/UpdatePet200Response.cs @@ -0,0 +1,133 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = Org.OpenAPITools.Client.FileParameter; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// UpdatePet200Response + /// + [DataContract(Name = "updatePet_200_response")] + public partial class UpdatePet200Response : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// varString. + public UpdatePet200Response(Pet varString = default(Pet)) + { + this.VarString = varString; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets VarString + /// + [DataMember(Name = "string", EmitDefaultValue = false)] + public Pet VarString { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class UpdatePet200Response {\n"); + sb.Append(" VarString: ").Append(VarString).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as UpdatePet200Response).AreEqual; + } + + /// + /// Returns true if UpdatePet200Response instances are equal + /// + /// Instance of UpdatePet200Response to be compared + /// Boolean + public bool Equals(UpdatePet200Response input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.VarString != null) + { + hashCode = (hashCode * 59) + this.VarString.GetHashCode(); + } + if (this.AdditionalProperties != null) + { + hashCode = (hashCode * 59) + this.AdditionalProperties.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp/OpenAPIClient-net47/docs/UpdatePet200Response.md b/samples/client/petstore/csharp/OpenAPIClient-net47/docs/UpdatePet200Response.md new file mode 100644 index 000000000000..d1625d266647 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-net47/docs/UpdatePet200Response.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.UpdatePet200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**VarString** | [**Pet**](Pet.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp/OpenAPIClient-net47/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs b/samples/client/petstore/csharp/OpenAPIClient-net47/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs new file mode 100644 index 000000000000..8cb066737bc4 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-net47/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs @@ -0,0 +1,66 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing UpdatePet200Response + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class UpdatePet200ResponseTests : IDisposable + { + // TODO uncomment below to declare an instance variable for UpdatePet200Response + //private UpdatePet200Response instance; + + public UpdatePet200ResponseTests() + { + // TODO uncomment below to create an instance of UpdatePet200Response + //instance = new UpdatePet200Response(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of UpdatePet200Response + /// + [Fact] + public void UpdatePet200ResponseInstanceTest() + { + // TODO uncomment below to test "IsType" UpdatePet200Response + //Assert.IsType(instance); + } + + /// + /// Test the property 'VarString' + /// + [Fact] + public void VarStringTest() + { + // TODO unit test for the property 'VarString' + } + } +} diff --git a/samples/client/petstore/csharp/OpenAPIClient-net47/src/Org.OpenAPITools/Model/UpdatePet200Response.cs b/samples/client/petstore/csharp/OpenAPIClient-net47/src/Org.OpenAPITools/Model/UpdatePet200Response.cs new file mode 100644 index 000000000000..1d79b6a37773 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-net47/src/Org.OpenAPITools/Model/UpdatePet200Response.cs @@ -0,0 +1,132 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// UpdatePet200Response + /// + [DataContract(Name = "updatePet_200_response")] + public partial class UpdatePet200Response : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// varString. + public UpdatePet200Response(Pet varString = default(Pet)) + { + this.VarString = varString; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets VarString + /// + [DataMember(Name = "string", EmitDefaultValue = false)] + public Pet VarString { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class UpdatePet200Response {\n"); + sb.Append(" VarString: ").Append(VarString).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as UpdatePet200Response).AreEqual; + } + + /// + /// Returns true if UpdatePet200Response instances are equal + /// + /// Instance of UpdatePet200Response to be compared + /// Boolean + public bool Equals(UpdatePet200Response input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.VarString != null) + { + hashCode = (hashCode * 59) + this.VarString.GetHashCode(); + } + if (this.AdditionalProperties != null) + { + hashCode = (hashCode * 59) + this.AdditionalProperties.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp/OpenAPIClient-net48/docs/UpdatePet200Response.md b/samples/client/petstore/csharp/OpenAPIClient-net48/docs/UpdatePet200Response.md new file mode 100644 index 000000000000..d1625d266647 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-net48/docs/UpdatePet200Response.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.UpdatePet200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**VarString** | [**Pet**](Pet.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp/OpenAPIClient-net48/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs b/samples/client/petstore/csharp/OpenAPIClient-net48/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs new file mode 100644 index 000000000000..8cb066737bc4 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-net48/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs @@ -0,0 +1,66 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing UpdatePet200Response + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class UpdatePet200ResponseTests : IDisposable + { + // TODO uncomment below to declare an instance variable for UpdatePet200Response + //private UpdatePet200Response instance; + + public UpdatePet200ResponseTests() + { + // TODO uncomment below to create an instance of UpdatePet200Response + //instance = new UpdatePet200Response(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of UpdatePet200Response + /// + [Fact] + public void UpdatePet200ResponseInstanceTest() + { + // TODO uncomment below to test "IsType" UpdatePet200Response + //Assert.IsType(instance); + } + + /// + /// Test the property 'VarString' + /// + [Fact] + public void VarStringTest() + { + // TODO unit test for the property 'VarString' + } + } +} diff --git a/samples/client/petstore/csharp/OpenAPIClient-net48/src/Org.OpenAPITools/Model/UpdatePet200Response.cs b/samples/client/petstore/csharp/OpenAPIClient-net48/src/Org.OpenAPITools/Model/UpdatePet200Response.cs new file mode 100644 index 000000000000..1d79b6a37773 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-net48/src/Org.OpenAPITools/Model/UpdatePet200Response.cs @@ -0,0 +1,132 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// UpdatePet200Response + /// + [DataContract(Name = "updatePet_200_response")] + public partial class UpdatePet200Response : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// varString. + public UpdatePet200Response(Pet varString = default(Pet)) + { + this.VarString = varString; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets VarString + /// + [DataMember(Name = "string", EmitDefaultValue = false)] + public Pet VarString { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class UpdatePet200Response {\n"); + sb.Append(" VarString: ").Append(VarString).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as UpdatePet200Response).AreEqual; + } + + /// + /// Returns true if UpdatePet200Response instances are equal + /// + /// Instance of UpdatePet200Response to be compared + /// Boolean + public bool Equals(UpdatePet200Response input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.VarString != null) + { + hashCode = (hashCode * 59) + this.VarString.GetHashCode(); + } + if (this.AdditionalProperties != null) + { + hashCode = (hashCode * 59) + this.AdditionalProperties.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp/OpenAPIClient-net5.0/docs/UpdatePet200Response.md b/samples/client/petstore/csharp/OpenAPIClient-net5.0/docs/UpdatePet200Response.md new file mode 100644 index 000000000000..d1625d266647 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-net5.0/docs/UpdatePet200Response.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.UpdatePet200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**VarString** | [**Pet**](Pet.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp/OpenAPIClient-net5.0/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs b/samples/client/petstore/csharp/OpenAPIClient-net5.0/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs new file mode 100644 index 000000000000..8cb066737bc4 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-net5.0/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs @@ -0,0 +1,66 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing UpdatePet200Response + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class UpdatePet200ResponseTests : IDisposable + { + // TODO uncomment below to declare an instance variable for UpdatePet200Response + //private UpdatePet200Response instance; + + public UpdatePet200ResponseTests() + { + // TODO uncomment below to create an instance of UpdatePet200Response + //instance = new UpdatePet200Response(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of UpdatePet200Response + /// + [Fact] + public void UpdatePet200ResponseInstanceTest() + { + // TODO uncomment below to test "IsType" UpdatePet200Response + //Assert.IsType(instance); + } + + /// + /// Test the property 'VarString' + /// + [Fact] + public void VarStringTest() + { + // TODO unit test for the property 'VarString' + } + } +} diff --git a/samples/client/petstore/csharp/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/UpdatePet200Response.cs b/samples/client/petstore/csharp/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/UpdatePet200Response.cs new file mode 100644 index 000000000000..1d79b6a37773 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-net5.0/src/Org.OpenAPITools/Model/UpdatePet200Response.cs @@ -0,0 +1,132 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// UpdatePet200Response + /// + [DataContract(Name = "updatePet_200_response")] + public partial class UpdatePet200Response : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// varString. + public UpdatePet200Response(Pet varString = default(Pet)) + { + this.VarString = varString; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets VarString + /// + [DataMember(Name = "string", EmitDefaultValue = false)] + public Pet VarString { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class UpdatePet200Response {\n"); + sb.Append(" VarString: ").Append(VarString).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as UpdatePet200Response).AreEqual; + } + + /// + /// Returns true if UpdatePet200Response instances are equal + /// + /// Instance of UpdatePet200Response to be compared + /// Boolean + public bool Equals(UpdatePet200Response input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.VarString != null) + { + hashCode = (hashCode * 59) + this.VarString.GetHashCode(); + } + if (this.AdditionalProperties != null) + { + hashCode = (hashCode * 59) + this.AdditionalProperties.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp/OpenAPIClient-unityWebRequest/docs/UpdatePet200Response.md b/samples/client/petstore/csharp/OpenAPIClient-unityWebRequest/docs/UpdatePet200Response.md new file mode 100644 index 000000000000..d1625d266647 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-unityWebRequest/docs/UpdatePet200Response.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.UpdatePet200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**VarString** | [**Pet**](Pet.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp/OpenAPIClient-unityWebRequest/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs b/samples/client/petstore/csharp/OpenAPIClient-unityWebRequest/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs new file mode 100644 index 000000000000..7b51be8ca389 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-unityWebRequest/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs @@ -0,0 +1,66 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Api; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; +using NUnit.Framework; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing UpdatePet200Response + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class UpdatePet200ResponseTests : IDisposable + { + // TODO uncomment below to declare an instance variable for UpdatePet200Response + //private UpdatePet200Response instance; + + public UpdatePet200ResponseTests() + { + // TODO uncomment below to create an instance of UpdatePet200Response + //instance = new UpdatePet200Response(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of UpdatePet200Response + /// + [Test] + public void UpdatePet200ResponseInstanceTest() + { + // TODO uncomment below to test "IsType" UpdatePet200Response + //Assert.IsType(instance); + } + + /// + /// Test the property 'VarString' + /// + [Test] + public void VarStringTest() + { + // TODO unit test for the property 'VarString' + } + } +} diff --git a/samples/client/petstore/csharp/OpenAPIClient-unityWebRequest/src/Org.OpenAPITools/Model/UpdatePet200Response.cs b/samples/client/petstore/csharp/OpenAPIClient-unityWebRequest/src/Org.OpenAPITools/Model/UpdatePet200Response.cs new file mode 100644 index 000000000000..ce17747f214c --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient-unityWebRequest/src/Org.OpenAPITools/Model/UpdatePet200Response.cs @@ -0,0 +1,118 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; + +namespace Org.OpenAPITools.Model +{ + /// + /// UpdatePet200Response + /// + [DataContract(Name = "updatePet_200_response")] + public partial class UpdatePet200Response : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// varString. + public UpdatePet200Response(Pet varString = default(Pet)) + { + this.VarString = varString; + } + + /// + /// Gets or Sets VarString + /// + [DataMember(Name = "string", EmitDefaultValue = false)] + public Pet VarString { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class UpdatePet200Response {\n"); + sb.Append(" VarString: ").Append(VarString).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as UpdatePet200Response); + } + + /// + /// Returns true if UpdatePet200Response instances are equal + /// + /// Instance of UpdatePet200Response to be compared + /// Boolean + public bool Equals(UpdatePet200Response input) + { + if (input == null) + { + return false; + } + return + ( + this.VarString == input.VarString || + (this.VarString != null && + this.VarString.Equals(input.VarString)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.VarString != null) + { + hashCode = (hashCode * 59) + this.VarString.GetHashCode(); + } + return hashCode; + } + } + + } + +} diff --git a/samples/client/petstore/csharp/OpenAPIClient/docs/UpdatePet200Response.md b/samples/client/petstore/csharp/OpenAPIClient/docs/UpdatePet200Response.md new file mode 100644 index 000000000000..d1625d266647 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient/docs/UpdatePet200Response.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.UpdatePet200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**VarString** | [**Pet**](Pet.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs b/samples/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs new file mode 100644 index 000000000000..8cb066737bc4 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs @@ -0,0 +1,66 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing UpdatePet200Response + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class UpdatePet200ResponseTests : IDisposable + { + // TODO uncomment below to declare an instance variable for UpdatePet200Response + //private UpdatePet200Response instance; + + public UpdatePet200ResponseTests() + { + // TODO uncomment below to create an instance of UpdatePet200Response + //instance = new UpdatePet200Response(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of UpdatePet200Response + /// + [Fact] + public void UpdatePet200ResponseInstanceTest() + { + // TODO uncomment below to test "IsType" UpdatePet200Response + //Assert.IsType(instance); + } + + /// + /// Test the property 'VarString' + /// + [Fact] + public void VarStringTest() + { + // TODO unit test for the property 'VarString' + } + } +} diff --git a/samples/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools/Model/UpdatePet200Response.cs b/samples/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools/Model/UpdatePet200Response.cs new file mode 100644 index 000000000000..1d79b6a37773 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools/Model/UpdatePet200Response.cs @@ -0,0 +1,132 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// UpdatePet200Response + /// + [DataContract(Name = "updatePet_200_response")] + public partial class UpdatePet200Response : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// varString. + public UpdatePet200Response(Pet varString = default(Pet)) + { + this.VarString = varString; + this.AdditionalProperties = new Dictionary(); + } + + /// + /// Gets or Sets VarString + /// + [DataMember(Name = "string", EmitDefaultValue = false)] + public Pet VarString { get; set; } + + /// + /// Gets or Sets additional properties + /// + [JsonExtensionData] + public IDictionary AdditionalProperties { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class UpdatePet200Response {\n"); + sb.Append(" VarString: ").Append(VarString).Append("\n"); + sb.Append(" AdditionalProperties: ").Append(AdditionalProperties).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as UpdatePet200Response).AreEqual; + } + + /// + /// Returns true if UpdatePet200Response instances are equal + /// + /// Instance of UpdatePet200Response to be compared + /// Boolean + public bool Equals(UpdatePet200Response input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.VarString != null) + { + hashCode = (hashCode * 59) + this.VarString.GetHashCode(); + } + if (this.AdditionalProperties != null) + { + hashCode = (hashCode * 59) + this.AdditionalProperties.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/samples/client/petstore/csharp/OpenAPIClientCore/docs/UpdatePet200Response.md b/samples/client/petstore/csharp/OpenAPIClientCore/docs/UpdatePet200Response.md new file mode 100644 index 000000000000..d1625d266647 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClientCore/docs/UpdatePet200Response.md @@ -0,0 +1,10 @@ +# Org.OpenAPITools.Model.UpdatePet200Response + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**VarString** | [**Pet**](Pet.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/samples/client/petstore/csharp/OpenAPIClientCore/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs b/samples/client/petstore/csharp/OpenAPIClientCore/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs new file mode 100644 index 000000000000..8cb066737bc4 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClientCore/src/Org.OpenAPITools.Test/Model/UpdatePet200ResponseTests.cs @@ -0,0 +1,66 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using Xunit; + +using System; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using Org.OpenAPITools.Model; +using Org.OpenAPITools.Client; +using System.Reflection; +using Newtonsoft.Json; + +namespace Org.OpenAPITools.Test.Model +{ + /// + /// Class for testing UpdatePet200Response + /// + /// + /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech). + /// Please update the test case below to test the model. + /// + public class UpdatePet200ResponseTests : IDisposable + { + // TODO uncomment below to declare an instance variable for UpdatePet200Response + //private UpdatePet200Response instance; + + public UpdatePet200ResponseTests() + { + // TODO uncomment below to create an instance of UpdatePet200Response + //instance = new UpdatePet200Response(); + } + + public void Dispose() + { + // Cleanup when everything is done. + } + + /// + /// Test an instance of UpdatePet200Response + /// + [Fact] + public void UpdatePet200ResponseInstanceTest() + { + // TODO uncomment below to test "IsType" UpdatePet200Response + //Assert.IsType(instance); + } + + /// + /// Test the property 'VarString' + /// + [Fact] + public void VarStringTest() + { + // TODO unit test for the property 'VarString' + } + } +} diff --git a/samples/client/petstore/csharp/OpenAPIClientCore/src/Org.OpenAPITools/Model/UpdatePet200Response.cs b/samples/client/petstore/csharp/OpenAPIClientCore/src/Org.OpenAPITools/Model/UpdatePet200Response.cs new file mode 100644 index 000000000000..25d4092d1ff3 --- /dev/null +++ b/samples/client/petstore/csharp/OpenAPIClientCore/src/Org.OpenAPITools/Model/UpdatePet200Response.cs @@ -0,0 +1,120 @@ +/* + * OpenAPI Petstore + * + * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ + * + * The version of the OpenAPI document: 1.0.0 + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Org.OpenAPITools.Client.OpenAPIDateConverter; +using OpenAPIClientUtils = Org.OpenAPITools.Client.ClientUtils; + +namespace Org.OpenAPITools.Model +{ + /// + /// UpdatePet200Response + /// + [DataContract(Name = "updatePet_200_response")] + public partial class UpdatePet200Response : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// varString. + public UpdatePet200Response(Pet varString = default(Pet)) + { + this.VarString = varString; + } + + /// + /// Gets or Sets VarString + /// + [DataMember(Name = "string", EmitDefaultValue = false)] + public Pet VarString { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class UpdatePet200Response {\n"); + sb.Append(" VarString: ").Append(VarString).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input as UpdatePet200Response).AreEqual; + } + + /// + /// Returns true if UpdatePet200Response instances are equal + /// + /// Instance of UpdatePet200Response to be compared + /// Boolean + public bool Equals(UpdatePet200Response input) + { + return OpenAPIClientUtils.compareLogic.Compare(this, input).AreEqual; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.VarString != null) + { + hashCode = (hashCode * 59) + this.VarString.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +}