Skip to content

Instantly share code, notes, and snippets.

@molnarm
Created July 24, 2018 13:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save molnarm/a28be1ecd653ee524fb6d485d8007f41 to your computer and use it in GitHub Desktop.
Save molnarm/a28be1ecd653ee524fb6d485d8007f41 to your computer and use it in GitHub Desktop.
Code generation issue
//----------------------
// <auto-generated>
// Generated using the NSwag toolchain v11.17.21.0 (NJsonSchema v9.10.63.0 (Newtonsoft.Json v9.0.0.0)) (http://NSwag.org)
// </auto-generated>
//----------------------
namespace RailKit
{
#pragma warning disable // Disable all warnings
[System.CodeDom.Compiler.GeneratedCode("NSwag", "11.17.21.0 (NJsonSchema v9.10.63.0 (Newtonsoft.Json v9.0.0.0))")]
public partial interface IClient
{
/// <summary>Summary.</summary>
/// <returns>Something something response</returns>
/// <exception cref="RailKitException">A server side error occurred.</exception>
System.Threading.Tasks.Task<ExampleClass> TestGetAsync();
/// <summary>Summary.</summary>
/// <returns>Something something response</returns>
/// <exception cref="RailKitException">A server side error occurred.</exception>
ExampleClass TestGet();
/// <summary>Summary.</summary>
/// <returns>Something something response</returns>
/// <exception cref="RailKitException">A server side error occurred.</exception>
/// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
System.Threading.Tasks.Task<ExampleClass> TestGetAsync(System.Threading.CancellationToken cancellationToken);
}
[System.CodeDom.Compiler.GeneratedCode("NSwag", "11.17.21.0 (NJsonSchema v9.10.63.0 (Newtonsoft.Json v9.0.0.0))")]
public partial class Client : BaseRailKitClient, IClient
{
private System.Lazy<Newtonsoft.Json.JsonSerializerSettings> _settings;
public Client(string baseUrl)
{
BaseUrl = baseUrl;
_settings = new System.Lazy<Newtonsoft.Json.JsonSerializerSettings>(() =>
{
var settings = new Newtonsoft.Json.JsonSerializerSettings();
UpdateJsonSerializerSettings(settings);
return settings;
});
}
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);
/// <summary>Summary.</summary>
/// <returns>Something something response</returns>
/// <exception cref="RailKitException">A server side error occurred.</exception>
public System.Threading.Tasks.Task<ExampleClass> TestGetAsync()
{
return TestGetAsync(System.Threading.CancellationToken.None);
}
/// <summary>Summary.</summary>
/// <returns>Something something response</returns>
/// <exception cref="RailKitException">A server side error occurred.</exception>
public ExampleClass TestGet()
{
return System.Threading.Tasks.Task.Run(async () => await TestGetAsync(System.Threading.CancellationToken.None)).GetAwaiter().GetResult();
}
/// <summary>Summary.</summary>
/// <returns>Something something response</returns>
/// <exception cref="RailKitException">A server side error occurred.</exception>
/// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
public async System.Threading.Tasks.Task<ExampleClass> TestGetAsync(System.Threading.CancellationToken cancellationToken)
{
var urlBuilder_ = new System.Text.StringBuilder();
urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/test");
var client_ = new System.Net.Http.HttpClient();
try
{
using (var request_ = new System.Net.Http.HttpRequestMessage())
{
request_.Method = new System.Net.Http.HttpMethod("GET");
request_.Headers.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
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 responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
var result_ = default(ExampleClass);
try
{
result_ = Newtonsoft.Json.JsonConvert.DeserializeObject<ExampleClass>(responseData_, _settings.Value);
return result_;
}
catch (System.Exception exception_)
{
throw new RailKitException("Could not deserialize the response body.", (int)response_.StatusCode, responseData_, headers_, exception_);
}
}
else
{
var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
var result_ = default(ExampleClass);
try
{
result_ = Newtonsoft.Json.JsonConvert.DeserializeObject<ExampleClass>(responseData_, _settings.Value);
}
catch (System.Exception exception_)
{
throw new RailKitException("Could not deserialize the response body.", (int)response_.StatusCode, responseData_, headers_, exception_);
}
throw new RailKitException<ExampleClass>("Default response", (int)response_.StatusCode, responseData_, headers_, result_, null);
}
return default(ExampleClass);
}
finally
{
if (response_ != null)
response_.Dispose();
}
}
}
finally
{
if (client_ != null)
client_.Dispose();
}
}
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;
}
}
}
}
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", "9.10.63.0 (Newtonsoft.Json v9.0.0.0)")]
public partial class ExampleClass
{
[Newtonsoft.Json.JsonProperty("property", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public string Property { get; set; }
}
}
swagger: '2.0'
info:
title: Code generation issue
version: v0.0.1
paths:
/test:
get:
summary: Summary.
description: Description.
responses:
"200":
description: Something something response
schema:
$ref: '#/definitions/ExampleClass'
default:
description: Default response
schema:
$ref: '#/definitions/ExampleClass'
definitions:
ExampleClass:
type: object
properties:
property:
type: string
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment