Improved named parameter generating support. Added the ability to specify the min amount of parameters before converting to named parameters. Made the feature work across all functions of the client code. Bumped package to 1.9.1
This commit is contained in:
@@ -99,11 +99,11 @@ namespace MontoyaTech.Rest.Net.Example
|
||||
|
||||
File.WriteAllText("Client.cs", listener.GenerateCSharpClient());
|
||||
|
||||
File.WriteAllText("Client.js", listener.GenerateJavascriptClient(useJsonNames: true));
|
||||
File.WriteAllText("Client.js", listener.GenerateJavascriptClient(useJsonNames: true, namedParameters: true));
|
||||
|
||||
File.WriteAllText("StaticClient.cs", listener.GenerateCSharpClient("StaticClient", staticCode: true));
|
||||
|
||||
File.WriteAllText("StaticClient.js", listener.GenerateJavascriptClient("StaticClient", staticCode: true, useJsonNames: true));
|
||||
File.WriteAllText("StaticClient.js", listener.GenerateJavascriptClient("StaticClient", staticCode: true, useJsonNames: true, namedParameters: true));
|
||||
|
||||
Console.WriteLine("Generated Client.cs, Client.js, StaticClient.cs, StaticClient.js");
|
||||
|
||||
@@ -155,6 +155,8 @@ namespace MontoyaTech.Rest.Net.Example
|
||||
Console.WriteLine("Download output:" + str);
|
||||
}
|
||||
|
||||
Console.WriteLine("Done. Starting listener.");
|
||||
|
||||
listener.Block();
|
||||
}
|
||||
|
||||
|
@@ -17,7 +17,7 @@
|
||||
<AssemblyName>MontoyaTech.Rest.Net</AssemblyName>
|
||||
<RootNamespace>MontoyaTech.Rest.Net</RootNamespace>
|
||||
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
||||
<Version>1.9.0</Version>
|
||||
<Version>1.9.1</Version>
|
||||
<PackageReleaseNotes></PackageReleaseNotes>
|
||||
<PackageIcon>Logo_Symbol_Black_Outline.png</PackageIcon>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
|
@@ -31,6 +31,11 @@ namespace MontoyaTech.Rest.Net
|
||||
/// </summary>
|
||||
public bool NamedParameters = false;
|
||||
|
||||
/// <summary>
|
||||
/// The minimum number of parameters before using named parameters. Default is 0.
|
||||
/// </summary>
|
||||
public int NamedParameterMin = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Generates a Javascript Client from a given set of routes and returns it.
|
||||
/// </summary>
|
||||
@@ -79,7 +84,11 @@ namespace MontoyaTech.Rest.Net
|
||||
writer.WriteLine("@param {Function} urlHandler An optional function to process request urls before they are sent. This must return the url.");
|
||||
writer.WriteLine("@param {Function} requestHandler An optional function to process requests before they are sent. This must return the request.");
|
||||
writer.Outdent().WriteLine("*/");
|
||||
writer.Write("static Init(baseUrl, urlHandler = null, requestHandler = null) ").WriteLine("{").Indent();
|
||||
if (this.NamedParameters)
|
||||
writer.Write("static Init({ baseUrl, urlHandler = null, requestHandler = null } = {}) ");
|
||||
else
|
||||
writer.Write("static Init(baseUrl, urlHandler = null, requestHandler = null) ");
|
||||
writer.WriteLine("{").Indent();
|
||||
|
||||
//Make sure the baseUrl isn't null or whitespace
|
||||
writer.WriteBreak().WriteLine("if (baseUrl == null || baseUrl == undefined || baseUrl.trim() == '') {").Indent();
|
||||
@@ -110,7 +119,11 @@ namespace MontoyaTech.Rest.Net
|
||||
writer.WriteLine("@param {Function} urlHandler An optional function to process request urls before they are sent. This must return the url.");
|
||||
writer.WriteLine("@param {Function} requestHandler An optional function to process requests before they are sent. This must return the request.");
|
||||
writer.Outdent().WriteLine("*/");
|
||||
writer.Write("constructor(baseUrl, urlHandler = null, requestHandler = null) ").WriteLine("{").Indent();
|
||||
if (this.NamedParameters)
|
||||
writer.Write("constructor({ baseUrl, urlHandler = null, requestHandler = null } = {}) ");
|
||||
else
|
||||
writer.Write("constructor(baseUrl, urlHandler = null, requestHandler = null) ");
|
||||
writer.WriteLine("{").Indent();
|
||||
|
||||
//Make sure the baseUrl isn't null or whitespace
|
||||
writer.WriteBreak().WriteLine("if (baseUrl == null || baseUrl == undefined || baseUrl.trim() == '') {").Indent();
|
||||
@@ -373,7 +386,10 @@ namespace MontoyaTech.Rest.Net
|
||||
|
||||
writer.Outdent().WriteLine("*/");
|
||||
writer.Write("constructor(");
|
||||
writer.WriteAssert(this.UseJsonNames, "{");
|
||||
|
||||
var parameterCount = fields.Length + properties.Length;
|
||||
|
||||
writer.WriteAssert(this.UseJsonNames && parameterCount > this.NamedParameterMin, "{ ");
|
||||
|
||||
//Write the default fields
|
||||
foreach (var field in fields)
|
||||
@@ -393,7 +409,7 @@ namespace MontoyaTech.Rest.Net
|
||||
writer.WriteSeparator().Write(EscapeName(property.Name)).Write(" = ").Write(this.GetTypeDefaultValue(property.PropertyType));
|
||||
}
|
||||
|
||||
writer.WriteAssert(this.UseJsonNames, "} = {}");
|
||||
writer.WriteAssert(this.UseJsonNames && parameterCount > this.NamedParameterMin, " } = {}");
|
||||
writer.WriteLine(") {").Indent();
|
||||
|
||||
//Init the default fields
|
||||
@@ -650,7 +666,11 @@ namespace MontoyaTech.Rest.Net
|
||||
else
|
||||
writer.Write($"async {(routeName == null ? methodInfo.Name : routeName.Name)}(");
|
||||
|
||||
//Generate the functions parameters
|
||||
int parameterCount = (parameters.Length - 1) + (routeRequest != null ? 1 : 0) + (routeResponse != null && routeResponse.Parameter ? 1 : 0);
|
||||
|
||||
writer.WriteAssert(this.NamedParameters && parameterCount > this.NamedParameterMin, "{ ");
|
||||
|
||||
//Generate the functions parameters, skip the default context parameter.
|
||||
if (parameters != null)
|
||||
{
|
||||
for (int i = 1; i < parameters.Length; i++)
|
||||
@@ -672,6 +692,7 @@ namespace MontoyaTech.Rest.Net
|
||||
writer.Write("input");
|
||||
}
|
||||
|
||||
writer.WriteAssert(this.NamedParameters && parameterCount > this.NamedParameterMin, " } = {}");
|
||||
writer.WriteLine(") {").Indent();
|
||||
|
||||
//Generate the url
|
||||
|
@@ -257,8 +257,9 @@ namespace MontoyaTech.Rest.Net
|
||||
/// <param name="staticCode">Whether or not to generate a static client. Default is false.</param>
|
||||
/// <param name="useJsonNames">Whether or not to use JSON Property name overrides during code generation. Default is false.</param>
|
||||
/// <param name="namedParameters">Whether or not to generate routes that use named parameters over positional parameters. Default is false.</param>
|
||||
/// <param name="namedParameterMin">The minimum number of parameters before converting to named parameters. Default is 0.</param>
|
||||
/// <returns></returns>
|
||||
public string GenerateJavascriptClient(string clientName = "Client", bool staticCode = false, bool useJsonNames = false, bool namedParameters = false)
|
||||
public string GenerateJavascriptClient(string clientName = "Client", bool staticCode = false, bool useJsonNames = false, bool namedParameters = false, int namedParameterMin = 0)
|
||||
{
|
||||
var generator = new RestJavascriptClientGenerator();
|
||||
|
||||
@@ -266,6 +267,7 @@ namespace MontoyaTech.Rest.Net
|
||||
generator.StaticCode = staticCode;
|
||||
generator.UseJsonNames = useJsonNames;
|
||||
generator.NamedParameters = namedParameters;
|
||||
generator.NamedParameterMin = namedParameterMin;
|
||||
|
||||
return generator.Generate(this);
|
||||
}
|
||||
|
Reference in New Issue
Block a user