Modifying client generator to allow modifying requests before they are sent.
This commit is contained in:
@@ -33,7 +33,7 @@ namespace MontoyaTech.Rest.Net
|
||||
|
||||
var writer = new CodeWriter();
|
||||
|
||||
writer.WriteLine("//Generated using MontoyaTech.Rest.Net");
|
||||
writer.WriteLine($"//Generated using MontoyaTech.Rest.Net - {DateTime.Now.ToShortDateString()}");
|
||||
|
||||
writer.WriteBreak().WriteLine($"public class {this.ClientName}").WriteLine("{").Indent();
|
||||
|
||||
@@ -61,6 +61,12 @@ namespace MontoyaTech.Rest.Net
|
||||
else
|
||||
writer.WriteBreak().WriteLine("public System.Net.Http.HttpClient HttpClient;");
|
||||
|
||||
//Create the request handler field
|
||||
if (this.StaticCode)
|
||||
writer.WriteBreak().WriteLine("public static System.Action<System.Net.Http.HttpRequestMessage> RequestHandler;");
|
||||
else
|
||||
writer.WriteBreak().WriteLine("public System.Action<System.Net.Http.HttpRequestMessage> RequestHandler;");
|
||||
|
||||
//Create fields foreach route group so they can be accessed.
|
||||
if (!this.StaticCode)
|
||||
foreach (var group in routeGroups)
|
||||
@@ -69,7 +75,7 @@ namespace MontoyaTech.Rest.Net
|
||||
//Create the client constructor or init method
|
||||
if (this.StaticCode)
|
||||
{
|
||||
writer.WriteBreak().WriteLine("public static void Init(string baseUrl, System.Net.Http.HttpMessageHandler handler = null)").WriteLine("{").Indent();
|
||||
writer.WriteBreak().WriteLine("public static void Init(string baseUrl, System.Net.Http.HttpMessageHandler messageHandler = null, System.Action<System.Net.Http.HttpRequestMessage> requestHandler = null)").WriteLine("{").Indent();
|
||||
|
||||
//Make sure the base url isn't null or whitespace
|
||||
writer.WriteBreak().WriteLine("if (string.IsNullOrWhiteSpace(baseUrl))");
|
||||
@@ -86,9 +92,9 @@ namespace MontoyaTech.Rest.Net
|
||||
writer.WriteBreak().WriteLine($"{this.ClientName}.CookieContainer = new System.Net.CookieContainer();");
|
||||
|
||||
//Init the client handler
|
||||
writer.WriteBreak().WriteLine("if (handler == null)");
|
||||
writer.WriteBreak().WriteLine("if (messageHandler == null)");
|
||||
writer.WriteLine("{").Indent();
|
||||
writer.WriteLine($"handler = new System.Net.Http.HttpClientHandler()");
|
||||
writer.WriteLine($"messageHandler = new System.Net.Http.HttpClientHandler()");
|
||||
writer.WriteLine("{").Indent();
|
||||
writer.WriteLine("AllowAutoRedirect = true,");
|
||||
writer.WriteLine("UseCookies = true,");
|
||||
@@ -98,7 +104,10 @@ namespace MontoyaTech.Rest.Net
|
||||
writer.Outdent().WriteLine("}");
|
||||
|
||||
//Store the message handler
|
||||
writer.WriteBreak().WriteLine($"{this.ClientName}.MessageHandler = handler;");
|
||||
writer.WriteBreak().WriteLine($"{this.ClientName}.MessageHandler = messageHandler;");
|
||||
|
||||
//Store the request handler
|
||||
writer.WriteBreak().WriteLine($"{this.ClientName}.RequestHandler = requestHandler;");
|
||||
|
||||
//Init the http client
|
||||
writer.WriteBreak().WriteLine($"{this.ClientName}.HttpClient = new System.Net.Http.HttpClient(handler);");
|
||||
@@ -110,7 +119,7 @@ namespace MontoyaTech.Rest.Net
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.WriteBreak().WriteLine($"public {this.ClientName}(string baseUrl, System.Net.Http.HttpMessageHandler handler = null)").WriteLine("{").Indent();
|
||||
writer.WriteBreak().WriteLine($"public {this.ClientName}(string baseUrl, System.Net.Http.HttpMessageHandler messageHandler = null, System.Action<System.Net.Http.HttpRequestMessage> requestHandler = null)").WriteLine("{").Indent();
|
||||
|
||||
//Make sure the base url isn't null or whitespace
|
||||
writer.WriteBreak().WriteLine("if (string.IsNullOrWhiteSpace(baseUrl))");
|
||||
@@ -127,9 +136,9 @@ namespace MontoyaTech.Rest.Net
|
||||
writer.WriteBreak().WriteLine("this.CookieContainer = new System.Net.CookieContainer();");
|
||||
|
||||
//Init the client handler
|
||||
writer.WriteBreak().WriteLine("if (handler == null)");
|
||||
writer.WriteBreak().WriteLine("if (messageHandler == null)");
|
||||
writer.WriteLine("{").Indent();
|
||||
writer.WriteLine("handler = new System.Net.Http.HttpClientHandler()");
|
||||
writer.WriteLine("messageHandler = new System.Net.Http.HttpClientHandler()");
|
||||
writer.WriteLine("{").Indent();
|
||||
writer.WriteLine("AllowAutoRedirect = true,");
|
||||
writer.WriteLine("UseCookies = true,");
|
||||
@@ -139,7 +148,10 @@ namespace MontoyaTech.Rest.Net
|
||||
writer.Outdent().WriteLine("}");
|
||||
|
||||
//Store the message handler
|
||||
writer.WriteBreak().WriteLine("this.MessageHandler = handler;");
|
||||
writer.WriteBreak().WriteLine("this.MessageHandler = messageHandler;");
|
||||
|
||||
//Store the request handler
|
||||
writer.WriteBreak().WriteLine("this.RequestHandler = requestHandler;");
|
||||
|
||||
//Init the http client
|
||||
writer.WriteBreak().WriteLine("this.HttpClient = new System.Net.Http.HttpClient(handler);");
|
||||
@@ -491,6 +503,12 @@ namespace MontoyaTech.Rest.Net
|
||||
|
||||
writer.Write('"').WriteLine(");");
|
||||
|
||||
//Invoke the request handler if needed.
|
||||
if (this.StaticCode)
|
||||
writer.WriteBreak().WriteLine($"{this.ClientName}.RequestHandler?.Invoke(message);");
|
||||
else
|
||||
writer.WriteBreak().WriteLine($"this.Client.RequestHandler?.Invoke(message);");
|
||||
|
||||
//Add the request content if any.
|
||||
if (routeRequest != null)
|
||||
{
|
||||
|
@@ -33,7 +33,7 @@ namespace MontoyaTech.Rest.Net
|
||||
|
||||
var writer = new CodeWriter();
|
||||
|
||||
writer.WriteLine("//Generated using MontoyaTech.Rest.Net");
|
||||
writer.WriteLine($"//Generated using MontoyaTech.Rest.Net - {DateTime.Now.ToShortDateString()}");
|
||||
|
||||
writer.WriteBreak().WriteLine($"class {this.ClientName} {{").Indent();
|
||||
|
||||
@@ -49,6 +49,17 @@ namespace MontoyaTech.Rest.Net
|
||||
writer.WriteLine("BaseUrl = null;");
|
||||
}
|
||||
|
||||
//Create the request handler field.
|
||||
if (this.StaticCode)
|
||||
{
|
||||
writer.WriteBreak().WriteLine("/** @type {Function} */");
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.WriteBreak().WriteLine("/** @type {Function} */");
|
||||
|
||||
}
|
||||
|
||||
//Create fields foreach route group so they can be accessed.
|
||||
if (!this.StaticCode)
|
||||
{
|
||||
@@ -67,7 +78,7 @@ namespace MontoyaTech.Rest.Net
|
||||
writer.WriteLine("Initializes the api client with a given baseUrl of where to send requests.");
|
||||
writer.WriteLine("@param {string} baseUrl");
|
||||
writer.Outdent().WriteLine("*/");
|
||||
writer.Write("static Init(baseUrl) ").WriteLine("{").Indent();
|
||||
writer.Write("static Init(baseUrl, requestHandler) ").WriteLine("{").Indent();
|
||||
|
||||
//Make sure the baseUrl isn't null or whitespace
|
||||
writer.WriteBreak().WriteLine("if (baseUrl == null || baseUrl == undefined || baseUrl.trim() == '') {").Indent();
|
||||
|
Reference in New Issue
Block a user