Last active
March 6, 2021 15:25
-
-
Save NikiforovAll/d95d4a1dea6d00dc51fff6da1be1f680 to your computer and use it in GitHub Desktop.
OpenAPI VS tool chain auto-generated http client example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//---------------------- | |
// <auto-generated> | |
// Generated using the NSwag toolchain v13.0.5.0 (NJsonSchema v10.0.22.0 (Newtonsoft.Json v11.0.0.0)) (http://NSwag.org) | |
// </auto-generated> | |
//---------------------- | |
#pragma warning disable 108 // Disable "CS0108 '{derivedDto}.ToJson()' hides inherited member '{dtoBase}.ToJson()'. Use the new keyword if hiding was intended." | |
#pragma warning disable 114 // Disable "CS0114 '{derivedDto}.RaisePropertyChanged(String)' hides inherited member 'dtoBase.RaisePropertyChanged(String)'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword." | |
#pragma warning disable 472 // Disable "CS0472 The result of the expression is always 'false' since a value of type 'Int32' is never equal to 'null' of type 'Int32?' | |
#pragma warning disable 1573 // Disable "CS1573 Parameter '...' has no matching param tag in the XML comment for ... | |
#pragma warning disable 1591 // Disable "CS1591 Missing XML comment for publicly visible type or member ..." | |
namespace WebApplication1 | |
{ | |
[System.CodeDom.Compiler.GeneratedCode("NSwag", "13.0.5.0 (NJsonSchema v10.0.22.0 (Newtonsoft.Json v11.0.0.0))")] | |
public partial class swaggerClient | |
{ | |
private string _baseUrl = ""; | |
private System.Net.Http.HttpClient _httpClient; | |
private System.Lazy<Newtonsoft.Json.JsonSerializerSettings> _settings; | |
public swaggerClient(string baseUrl, System.Net.Http.HttpClient httpClient) | |
{ | |
BaseUrl = baseUrl; | |
_httpClient = httpClient; | |
_settings = new System.Lazy<Newtonsoft.Json.JsonSerializerSettings>(() => | |
{ | |
var settings = new Newtonsoft.Json.JsonSerializerSettings(); | |
UpdateJsonSerializerSettings(settings); | |
return settings; | |
}); | |
} | |
public string BaseUrl | |
{ | |
get { return _baseUrl; } | |
set { _baseUrl = value; } | |
} | |
protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _settings.Value; } } | |
partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); | |
partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); | |
partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); | |
partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); | |
/// <returns>Success</returns> | |
/// <exception cref="ApiException">A server side error occurred.</exception> | |
public System.Threading.Tasks.Task<System.Collections.Generic.ICollection<WeatherForecast>> WeatherForecastAsync() | |
{ | |
return WeatherForecastAsync(System.Threading.CancellationToken.None); | |
} | |
/// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> | |
/// <returns>Success</returns> | |
/// <exception cref="ApiException">A server side error occurred.</exception> | |
public async System.Threading.Tasks.Task<System.Collections.Generic.ICollection<WeatherForecast>> WeatherForecastAsync(System.Threading.CancellationToken cancellationToken) | |
{ | |
var urlBuilder_ = new System.Text.StringBuilder(); | |
urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/WeatherForecast"); | |
var client_ = _httpClient; | |
try | |
{ | |
using (var request_ = new System.Net.Http.HttpRequestMessage()) | |
{ | |
request_.Method = new System.Net.Http.HttpMethod("GET"); | |
request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("text/plain")); | |
PrepareRequest(client_, request_, urlBuilder_); | |
var url_ = urlBuilder_.ToString(); | |
request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); | |
PrepareRequest(client_, request_, url_); | |
var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); | |
try | |
{ | |
var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); | |
if (response_.Content != null && response_.Content.Headers != null) | |
{ | |
foreach (var item_ in response_.Content.Headers) | |
headers_[item_.Key] = item_.Value; | |
} | |
ProcessResponse(client_, response_); | |
var status_ = ((int)response_.StatusCode).ToString(); | |
if (status_ == "200") | |
{ | |
var objectResponse_ = await ReadObjectResponseAsync<System.Collections.Generic.ICollection<WeatherForecast>>(response_, headers_).ConfigureAwait(false); | |
return objectResponse_.Object; | |
} | |
else | |
if (status_ != "200" && status_ != "204") | |
{ | |
var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); | |
throw new ApiException("The HTTP status code of the response was not expected (" + (int)response_.StatusCode + ").", (int)response_.StatusCode, responseData_, headers_, null); | |
} | |
return default(System.Collections.Generic.ICollection<WeatherForecast>); | |
} | |
finally | |
{ | |
if (response_ != null) | |
response_.Dispose(); | |
} | |
} | |
} | |
finally | |
{ | |
} | |
} | |
protected struct ObjectResponseResult<T> | |
{ | |
public ObjectResponseResult(T responseObject, string responseText) | |
{ | |
this.Object = responseObject; | |
this.Text = responseText; | |
} | |
public T Object { get; } | |
public string Text { get; } | |
} | |
public bool ReadResponseAsString { get; set; } | |
protected virtual async System.Threading.Tasks.Task<ObjectResponseResult<T>> ReadObjectResponseAsync<T>(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary<string, System.Collections.Generic.IEnumerable<string>> headers) | |
{ | |
if (response == null || response.Content == null) | |
{ | |
return new ObjectResponseResult<T>(default(T), string.Empty); | |
} | |
if (ReadResponseAsString) | |
{ | |
var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); | |
try | |
{ | |
var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject<T>(responseText, JsonSerializerSettings); | |
return new ObjectResponseResult<T>(typedBody, responseText); | |
} | |
catch (Newtonsoft.Json.JsonException exception) | |
{ | |
var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; | |
throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); | |
} | |
} | |
else | |
{ | |
try | |
{ | |
using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) | |
using (var streamReader = new System.IO.StreamReader(responseStream)) | |
using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) | |
{ | |
var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); | |
var typedBody = serializer.Deserialize<T>(jsonTextReader); | |
return new ObjectResponseResult<T>(typedBody, string.Empty); | |
} | |
} | |
catch (Newtonsoft.Json.JsonException exception) | |
{ | |
var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; | |
throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); | |
} | |
} | |
} | |
private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo) | |
{ | |
if (value is System.Enum) | |
{ | |
string name = System.Enum.GetName(value.GetType(), value); | |
if (name != null) | |
{ | |
var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); | |
if (field != null) | |
{ | |
var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) | |
as System.Runtime.Serialization.EnumMemberAttribute; | |
if (attribute != null) | |
{ | |
return attribute.Value != null ? attribute.Value : name; | |
} | |
} | |
} | |
} | |
else if (value is bool) { | |
return System.Convert.ToString(value, cultureInfo).ToLowerInvariant(); | |
} | |
else if (value is byte[]) | |
{ | |
return System.Convert.ToBase64String((byte[]) value); | |
} | |
else if (value != null && value.GetType().IsArray) | |
{ | |
var array = System.Linq.Enumerable.OfType<object>((System.Array) value); | |
return string.Join(",", System.Linq.Enumerable.Select(array, o => ConvertToString(o, cultureInfo))); | |
} | |
return System.Convert.ToString(value, cultureInfo); | |
} | |
} | |
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] | |
public partial class WeatherForecast | |
{ | |
[Newtonsoft.Json.JsonProperty("date", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] | |
public System.DateTimeOffset Date { get; set; } | |
[Newtonsoft.Json.JsonProperty("temperatureC", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] | |
public int TemperatureC { get; set; } | |
[Newtonsoft.Json.JsonProperty("temperatureF", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] | |
public int TemperatureF { get; set; } | |
[Newtonsoft.Json.JsonProperty("summary", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] | |
public string Summary { get; set; } | |
} | |
[System.CodeDom.Compiler.GeneratedCode("NSwag", "13.0.5.0 (NJsonSchema v10.0.22.0 (Newtonsoft.Json v11.0.0.0))")] | |
public partial class ApiException : System.Exception | |
{ | |
public int StatusCode { get; private set; } | |
public string Response { get; private set; } | |
public System.Collections.Generic.IReadOnlyDictionary<string, System.Collections.Generic.IEnumerable<string>> Headers { get; private set; } | |
public ApiException(string message, int statusCode, string response, System.Collections.Generic.IReadOnlyDictionary<string, System.Collections.Generic.IEnumerable<string>> headers, System.Exception innerException) | |
: base(message + "\n\nStatus: " + statusCode + "\nResponse: \n" + response.Substring(0, response.Length >= 512 ? 512 : response.Length), innerException) | |
{ | |
StatusCode = statusCode; | |
Response = response; | |
Headers = headers; | |
} | |
public override string ToString() | |
{ | |
return string.Format("HTTP Response: \n\n{0}\n\n{1}", Response, base.ToString()); | |
} | |
} | |
[System.CodeDom.Compiler.GeneratedCode("NSwag", "13.0.5.0 (NJsonSchema v10.0.22.0 (Newtonsoft.Json v11.0.0.0))")] | |
public partial class ApiException<TResult> : ApiException | |
{ | |
public TResult Result { get; private set; } | |
public ApiException(string message, int statusCode, string response, System.Collections.Generic.IReadOnlyDictionary<string, System.Collections.Generic.IEnumerable<string>> headers, TResult result, System.Exception innerException) | |
: base(message, statusCode, response, headers, innerException) | |
{ | |
Result = result; | |
} | |
} | |
} | |
#pragma warning restore 1591 | |
#pragma warning restore 1573 | |
#pragma warning restore 472 | |
#pragma warning restore 114 | |
#pragma warning restore 108 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment