Improved route function generator to handle status codes better and check to see if json content was null or empty and return default. Bumped package version to 1.4.2
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
<AssemblyName>MontoyaTech.Rest.Net</AssemblyName>
|
||||
<RootNamespace>MontoyaTech.Rest.Net</RootNamespace>
|
||||
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
||||
<Version>1.4.1</Version>
|
||||
<Version>1.4.2</Version>
|
||||
<PackageReleaseNotes></PackageReleaseNotes>
|
||||
<PackageIcon>Logo_Symbol_Black_Outline.png</PackageIcon>
|
||||
</PropertyGroup>
|
||||
|
@@ -426,74 +426,78 @@ namespace MontoyaTech.Rest.Net
|
||||
//Handle the response
|
||||
if (routeResponse != null)
|
||||
{
|
||||
writer.WriteBreak().WriteLine("if (response.StatusCode == HttpStatusCode.OK)").Indent();
|
||||
writer.WriteBreak().WriteLine("if (response.IsSuccessStatusCode)").WriteLine("{").Indent();
|
||||
|
||||
writer.WriteBreak().WriteLine("var content = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();");
|
||||
|
||||
writer.WriteBreak().WriteLine("if (string.IsNullOrEmpty(content))").Indent().WriteLine("return default;").Outdent();
|
||||
|
||||
if (routeResponse.Json)
|
||||
{
|
||||
writer.WriteLine($"return JsonConvert.DeserializeObject<{this.GetTypeFullyResolvedName(routeResponse.ResponseType)}>(response.Content.ReadAsStringAsync().GetAwaiter().GetResult());");
|
||||
writer.WriteBreak().WriteLine($"return JsonConvert.DeserializeObject<{this.GetTypeFullyResolvedName(routeResponse.ResponseType)}>(content);");
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (Type.GetTypeCode(routeResponse.ResponseType))
|
||||
{
|
||||
case TypeCode.Boolean:
|
||||
writer.WriteLine("return bool.Parse(response.Content.ReadAsStringAsync().GetAwaiter().GetResult());");
|
||||
writer.WriteBreak().WriteLine("return bool.Parse(content);");
|
||||
break;
|
||||
|
||||
case TypeCode.Byte:
|
||||
writer.WriteLine("return byte.Parse(response.Content.ReadAsStringAsync().GetAwaiter().GetResult());");
|
||||
writer.WriteBreak().WriteLine("return byte.Parse(content);");
|
||||
break;
|
||||
|
||||
case TypeCode.Char:
|
||||
writer.WriteLine("return response.Content.ReadAsStringAsync().GetAwaiter().GetResult()[0];");
|
||||
writer.WriteBreak().WriteLine("return content[0];");
|
||||
break;
|
||||
|
||||
case TypeCode.DateTime:
|
||||
writer.WriteLine("return DateTime.Parse(response.Content.ReadAsStringAsync().GetAwaiter().GetResult());");
|
||||
writer.WriteBreak().WriteLine("return DateTime.Parse(content);");
|
||||
break;
|
||||
|
||||
case TypeCode.Decimal:
|
||||
writer.WriteLine("return decimal.Parse(response.Content.ReadAsStringAsync().GetAwaiter().GetResult());");
|
||||
writer.WriteBreak().WriteLine("return decimal.Parse(content);");
|
||||
break;
|
||||
|
||||
case TypeCode.Double:
|
||||
writer.WriteLine("return double.Parse(response.Content.ReadAsStringAsync().GetAwaiter().GetResult());");
|
||||
writer.WriteBreak().WriteLine("return double.Parse(content);");
|
||||
break;
|
||||
|
||||
case TypeCode.Int16:
|
||||
writer.WriteLine("return short.Parse(response.Content.ReadAsStringAsync().GetAwaiter().GetResult());");
|
||||
writer.WriteBreak().WriteLine("return short.Parse(content);");
|
||||
break;
|
||||
|
||||
case TypeCode.Int32:
|
||||
writer.WriteLine("return int.Parse(response.Content.ReadAsStringAsync().GetAwaiter().GetResult());");
|
||||
writer.WriteBreak().WriteLine("return int.Parse(content);");
|
||||
break;
|
||||
|
||||
case TypeCode.Int64:
|
||||
writer.WriteLine("return long.Parse(response.Content.ReadAsStringAsync().GetAwaiter().GetResult());");
|
||||
writer.WriteBreak().WriteLine("return long.Parse(content);");
|
||||
break;
|
||||
|
||||
case TypeCode.SByte:
|
||||
writer.WriteLine("return sbyte.Parse(response.Content.ReadAsStringAsync().GetAwaiter().GetResult());");
|
||||
writer.WriteBreak().WriteLine("return sbyte.Parse(content);");
|
||||
break;
|
||||
|
||||
case TypeCode.Single:
|
||||
writer.WriteLine("return float.Parse(response.Content.ReadAsStringAsync().GetAwaiter().GetResult());");
|
||||
writer.WriteBreak().WriteLine("return float.Parse(content);");
|
||||
break;
|
||||
|
||||
case TypeCode.String:
|
||||
writer.WriteLine("return response.Content.ReadAsStringAsync().GetAwaiter().GetResult();");
|
||||
writer.WriteBreak().WriteLine("return content;");
|
||||
break;
|
||||
|
||||
case TypeCode.UInt16:
|
||||
writer.WriteLine("return ushort.Parse(response.Content.ReadAsStringAsync().GetAwaiter().GetResult());");
|
||||
writer.WriteBreak().WriteLine("return ushort.Parse(content);");
|
||||
break;
|
||||
|
||||
case TypeCode.UInt32:
|
||||
writer.WriteLine("return uint.Parse(response.Content.ReadAsStringAsync().GetAwaiter().GetResult());");
|
||||
writer.WriteBreak().WriteLine("return uint.Parse(content);");
|
||||
break;
|
||||
|
||||
case TypeCode.UInt64:
|
||||
writer.WriteLine("return ulong.Parse(response.Content.ReadAsStringAsync().GetAwaiter().GetResult());");
|
||||
writer.WriteBreak().WriteLine("return ulong.Parse(content);");
|
||||
break;
|
||||
|
||||
case TypeCode.Object:
|
||||
@@ -501,12 +505,13 @@ namespace MontoyaTech.Rest.Net
|
||||
}
|
||||
}
|
||||
|
||||
writer.Outdent().WriteLine("else").Indent();
|
||||
writer.WriteLine(@"throw new Exception(""Unexpected Http Response StatusCode:"" + response.StatusCode);").Outdent();
|
||||
writer.Outdent().WriteLine("}").WriteLine("else").WriteLine("{").Indent();
|
||||
writer.WriteLine(@"throw new Exception(""Unexpected Http Response StatusCode:"" + response.StatusCode);");
|
||||
writer.Outdent().WriteLine("}");
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.WriteBreak().WriteLine("if (response.StatusCode != HttpStatusCode.OK)").Indent();
|
||||
writer.WriteBreak().WriteLine("if (!response.IsSuccessStatusCode)").Indent();
|
||||
writer.WriteLine(@"throw new Exception(""Unexpected Http Response StatusCode:"" + response.StatusCode);").Outdent();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user