public virtual string TransformText()
{
this.Write(@"//------------------------------------------------------------------------------
//<auto-generated>
// This file is auto-generated by WebApiProxy
// Project site: http://github.com/faniereynders/webapiproxy
//
// Any changes to this file will be overwritten
//</auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using System.Net.Http.Formatting;
using System.Linq;
using System.Net;
using System.Web;
using ");
#line 25 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.Namespace));
#line default
#line hidden
this.Write(".Models;\r\n\r\n#region Proxies\r\nnamespace ");
#line 28 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.Namespace));
#line default
#line hidden
this.Write("\r\n{\r\n\t/// <summary>\r\n\t/// Client configuration.\r\n\t/// </summary>\r\n\tpublic static " +
"partial class Configuration\r\n\t{\r\n\t\t/// <summary>\r\n\t\t/// Web Api Base Address.\r\n\t" +
"\t/// </summary>\r\n\t\tpublic static string ");
#line 38 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.Name));
#line default
#line hidden
this.Write("BaseAddress = \"");
#line 38 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.Metadata.Host));
#line default
#line hidden
this.Write("\";\r\n\t}\r\n}\r\n#endregion\r\n\r\n#region Models\r\nnamespace ");
#line 44 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.Namespace));
#line default
#line hidden
this.Write(@".Models
{
public class WebApiProxyResponseException : Exception
{
public HttpStatusCode StatusCode { get; private set; }
public string Content { get; private set; }
public WebApiProxyResponseException(HttpStatusCode statusCode, string content) : base(""A "" + statusCode + "" ("" + (int)statusCode + "") http exception occured. See Content for response body."")
{
StatusCode = statusCode;
Content = content;
}
}
");
#line 58 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var model in Configuration.Metadata.Models.Where(m => m.Type.Equals("class"))) {
#line default
#line hidden
this.Write("\t\r\n\t/// <summary>\r\n\t/// ");
#line 60 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(model.Description.ToSummary()));
#line default
#line hidden
this.Write("\r\n\t/// </summary>\r\n\tpublic partial class ");
#line 62 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(model.Name));
#line default
#line hidden
this.Write("\r\n\t{\r\n\t\t#region Constants\r\n");
#line 65 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var constantItem in model.Constants) {
#line default
#line hidden
this.Write("\t\t/// <summary>\r\n\t\t/// ");
#line 67 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(constantItem.Description.ToSummary()));
#line default
#line hidden
this.Write("\r\n\t\t/// </summary>\r\n\t\tpublic const ");
#line 69 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(constantItem.Type));
#line default
#line hidden
this.Write(" ");
#line 69 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(constantItem.Name));
#line default
#line hidden
this.Write(" = ");
#line 69 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(constantItem.Value));
#line default
#line hidden
this.Write(";\r\n");
#line 70 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\t\t#endregion\r\n\r\n\t\t#region Properties\r\n");
#line 74 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var propertyItem in model.Properties) {
#line default
#line hidden
this.Write("\t\t/// <summary>\r\n\t\t/// ");
#line 76 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(propertyItem.Description.ToSummary()));
#line default
#line hidden
this.Write("\r\n\t\t/// </summary>\r\n\t\tpublic virtual ");
#line 78 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(propertyItem.Type));
#line default
#line hidden
this.Write(" ");
#line 78 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(propertyItem.Name));
#line default
#line hidden
this.Write(" { get; set; }\r\n");
#line 79 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\t\t#endregion\r\n\t}\t\r\n");
#line 82 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\r\n");
#line 84 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var model in Configuration.Metadata.Models.Where(m => m.Type.Equals("enum"))) {
#line default
#line hidden
this.Write("\t\r\n\t/// <summary>\r\n\t/// ");
#line 86 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(model.Description.ToSummary()));
#line default
#line hidden
this.Write("\r\n\t/// </summary>\r\n\tpublic enum ");
#line 88 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(model.Name));
#line default
#line hidden
this.Write("\r\n\t{\r\n");
#line 90 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var constantItem in model.Constants) {
#line default
#line hidden
this.Write("\r\n\t\t/// <summary>\r\n\t\t/// ");
#line 93 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(constantItem.Description.ToSummary()));
#line default
#line hidden
this.Write("\r\n\t\t/// </summary>\r\n\t\t");
#line 95 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(constantItem.Name));
#line default
#line hidden
this.Write(" = ");
#line 95 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(constantItem.Value));
#line default
#line hidden
this.Write(",\r\n");
#line 96 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\t\t\r\n\t}\r\n");
#line 98 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\t\r\n}\r\n#endregion\r\n\r\n#region Interfaces\r\nnamespace ");
#line 104 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.Namespace));
#line default
#line hidden
this.Write(".Interfaces\r\n{\r\n\tpublic interface IClientBase : IDisposable\r\n\t{\r\n\t\tHttpClient Htt" +
"pClient { get; }\r\n\t}\r\n\r\n");
#line 111 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var definition in Configuration.Metadata.Definitions) {
#line default
#line hidden
this.Write("\t\r\n\tpublic partial interface I");
#line 112 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(definition.Name));
#line default
#line hidden
#line 112 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.ClientSuffix));
#line default
#line hidden
this.Write(" : IClientBase\r\n\t{\t\r\n");
#line 114 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var method in definition.ActionMethods) {
var allParameters = method.UrlParameters.AsEnumerable().Where(m => m != null);
var bodyParameterString = "";
if (method.BodyParameter != null) {
allParameters = allParameters.Concat(new [] { method.BodyParameter });
bodyParameterString = ", " + method.BodyParameter.Name;
}
var parameterList = "";
if (allParameters.Any())
{
var q = allParameters.Select(m => m.Type + " " + m.Name);
if (q != null)
parameterList = string.Join(",", q.ToArray());
}
var concreteReturnType = method.ReturnType.ToConcrete();
#line default
#line hidden
this.Write("\r\n");
#line 136 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var p in method.UrlParameters) {
#line default
#line hidden
this.Write("\t\t/// <param name=\"");
#line 137 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(p.Name));
#line default
#line hidden
this.Write("\">");
#line 137 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(p.Description.ToSummary()));
#line default
#line hidden
this.Write("</param>\r\n");
#line 138 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\r\n");
#line 140 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
if (Configuration.GenerateAsyncReturnTypes == false || String.IsNullOrEmpty(concreteReturnType)) {
#line default
#line hidden
this.Write("\t\t/// <returns></returns>\r\n\t\tTask<HttpResponseMessage> ");
#line 142 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(method.Name));
#line default
#line hidden
this.Write("Async(");
#line 142 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(parameterList));
#line default
#line hidden
this.Write(");\r\n");
#line 143 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
} else {
#line default
#line hidden
this.Write("\t\tTask<");
#line 144 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(concreteReturnType));
#line default
#line hidden
this.Write("> ");
#line 144 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(method.Name));
#line default
#line hidden
this.Write("Async(");
#line 144 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(parameterList));
#line default
#line hidden
this.Write(");\r\n");
#line 145 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\r\n");
#line 147 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var p in method.UrlParameters) {
#line default
#line hidden
this.Write("\t\t/// <param name=\"");
#line 148 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(p.Name));
#line default
#line hidden
this.Write("\">");
#line 148 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(p.Description.ToSummary()));
#line default
#line hidden
this.Write("</param>\r\n");
#line 149 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\t\t/// <returns></returns>\r\n\t\t");
#line 151 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(String.IsNullOrEmpty(concreteReturnType) ? "void" : concreteReturnType));
#line default
#line hidden
this.Write(" ");
#line 151 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(method.Name));
#line default
#line hidden
this.Write("(");
#line 151 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(parameterList));
#line default
#line hidden
this.Write(");\r\n");
#line 152 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\t\t\t\t\r\n\t}\r\n");
#line 154 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\r\n}\r\n#endregion\r\n\r\n#region Clients\r\nnamespace ");
#line 160 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.Namespace));
#line default
#line hidden
this.Write(@".Clients
{
/// <summary>
/// Client base class.
/// </summary>
public abstract partial class ClientBase : IDisposable
{
/// <summary>
/// Gests the HttpClient.
/// </summary>
public HttpClient HttpClient { get; protected set; }
/// <summary>
/// Initializes a new instance of the <see cref=""ClientBase""/> class.
/// </summary>
protected ClientBase()
{
HttpClient = new HttpClient()
{
BaseAddress = new Uri(Configuration.");
#line 179 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.Name));
#line default
#line hidden
this.Write(@"BaseAddress)
};
}
/// <summary>
/// Ensures that response has a valid (200 - OK) status code
/// </summary>
public virtual void EnsureSuccess(HttpResponseMessage response)
{
if (response.IsSuccessStatusCode)
return;
var content = response.Content.ReadAsStringAsync().Result;
throw new WebApiProxyResponseException(response.StatusCode, content);
}
/// <summary>
/// Initializes a new instance of the <see cref=""ClientBase""/> class.
/// </summary>
/// <param name=""handler"">The handler.</param>
/// <param name=""disposeHandler"">if set to <c>true</c> [dispose handler].</param>
protected ClientBase(HttpMessageHandler handler, bool disposeHandler = true)
{
HttpClient = new HttpClient(handler, disposeHandler)
{
BaseAddress = new Uri(Configuration.");
#line 204 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.Name));
#line default
#line hidden
this.Write(@"BaseAddress)
};
}
/// <summary>
/// Encode the input parameter as a string
/// </summary>
protected string EncodeParam<T>(T value)
{
return System.Net.WebUtility.UrlEncode(value.ToString());
}
/// <summary>
/// Encode the input parameter as a string
/// </summary>
protected string EncodeParam(DateTime value)
{
return System.Net.WebUtility.UrlEncode(value.ToString(""s""));
}
/// <summary>
/// Encode the input parameter as a string
/// </summary>
protected string EncodeParam(DateTimeOffset value)
{
return System.Net.WebUtility.UrlEncode(value.ToString(""s""));
}
/// <summary>
/// Releases the unmanaged resources and disposes of the managed resources.
/// </summary>
protected virtual void Dispose(bool disposing)
{
if (disposing && HttpClient != null)
{
HttpClient.Dispose();
HttpClient = null;
}
}
/// <summary>
/// Releases the unmanaged resources and disposes of the managed resources.
/// </summary>
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
/// <summary>
/// Destructor
/// </summary>
~ClientBase()
{
Dispose(false);
}
}
/// <summary>
/// Helper class to access all clients at once
/// </summary>
public partial class WebApiClients
{
");
#line 267 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var definition in Configuration.Metadata.Definitions) {
#line default
#line hidden
this.Write("\t\tpublic ");
#line 268 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(definition.Name));
#line default
#line hidden
#line 268 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.ClientSuffix));
#line default
#line hidden
this.Write(" ");
#line 268 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(definition.Name));
#line default
#line hidden
this.Write(" { get; private set; }\r\n");
#line 269 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\t\t\r\n protected IEnumerable<Interfaces.IClientBase> Clients\r\n {\r\n " +
" get\r\n {\r\n");
#line 275 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var definition in Configuration.Metadata.Definitions) {
#line default
#line hidden
this.Write("\t\t\t\tyield return ");
#line 276 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(definition.Name));
#line default
#line hidden
this.Write(";\r\n");
#line 277 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write(" }\r\n }\r\n\r\n\t\tpublic WebApiClients(Uri baseAddress = null)\r\n\t\t{\r\n" +
" if (baseAddress != null)\r\n Configuration.");
#line 284 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.Name));
#line default
#line hidden
this.Write("BaseAddress = baseAddress.AbsoluteUri;\r\n\r\n");
#line 286 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var definition in Configuration.Metadata.Definitions) {
#line default
#line hidden
this.Write("\t\t\t");
#line 287 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(definition.Name));
#line default
#line hidden
this.Write(" = new ");
#line 287 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(definition.Name));
#line default
#line hidden
#line 287 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.ClientSuffix));
#line default
#line hidden
this.Write("();\r\n");
#line 288 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write(@" }
public void SetAuthentication(AuthenticationHeaderValue auth)
{
foreach (var client in Clients)
client.HttpClient.DefaultRequestHeaders.Authorization = auth;
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
foreach (var client in Clients)
client.Dispose();
}
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
~WebApiClients()
{
Dispose(false);
}
}
");
#line 318 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var definition in Configuration.Metadata.Definitions) {
#line default
#line hidden
this.Write("\t/// <summary>\r\n\t/// ");
#line 320 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(definition.Description.ToSummary()));
#line default
#line hidden
this.Write("\r\n\t/// </summary>\r\n\tpublic partial class ");
#line 322 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(definition.Name));
#line default
#line hidden
#line 322 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.ClientSuffix));
#line default
#line hidden
this.Write(" : ClientBase, Interfaces.I");
#line 322 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(definition.Name));
#line default
#line hidden
#line 322 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.ClientSuffix));
#line default
#line hidden
this.Write("\r\n\t{\t\t\r\n\r\n\t\t/// <summary>\r\n\t\t/// ");
#line 326 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(definition.Description.ToSummary()));
#line default
#line hidden
this.Write("\r\n\t\t/// </summary>\r\n\t\tpublic ");
#line 328 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(definition.Name));
#line default
#line hidden
#line 328 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.ClientSuffix));
#line default
#line hidden
this.Write("() : base()\r\n\t\t{\r\n\t\t}\r\n\r\n\t\t/// <summary>\r\n\t\t/// ");
#line 333 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(definition.Description.ToSummary()));
#line default
#line hidden
this.Write("\r\n\t\t/// </summary>\r\n\t\tpublic ");
#line 335 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(definition.Name));
#line default
#line hidden
#line 335 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Configuration.ClientSuffix));
#line default
#line hidden
this.Write("(HttpMessageHandler handler, bool disposeHandler = true) : base(handler, disposeH" +
"andler)\r\n\t\t{\r\n\t\t}\r\n\r\n\t\t#region Methods\r\n\r\n");
#line 341 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var method in definition.ActionMethods) {
var allParameters = method.UrlParameters.AsEnumerable();
var bodyParameterString = ", default(HttpResponseMessage)";
var parameterNameList = "";
var concreteReturnType = method.ReturnType.ToConcrete();
if (method.BodyParameter != null) {
allParameters = allParameters.Concat(new [] { method.BodyParameter });
bodyParameterString = ", " + method.BodyParameter.Name;
}
if (allParameters.Any())
parameterNameList = string.Join(", ", allParameters.Select(m => m.Name));
var parameterList = "";
if (allParameters.Any())
{
var q = allParameters.Where(m => m != null).Select(m => m.Type + " " + m.Name);
if (q != null)
parameterList = string.Join(",", q.ToArray());
}
var postOrPutOrPatch = method.Type.ToTitle() == "Post" || method.Type.ToTitle() == "Put" || method.Type.ToTitle() == "Patch";
var url = ("\"" + method.Url.Replace("{", "\" + ").Replace("}", " + \"") + "\"").Replace(" + \"\"","");
allParameters.Where(m => m != null && (m.Type == "DateTime" || m.Type == "Nullable<DateTime>"))
.ToList()
.ForEach(p => url = url.Replace(" " + p.Name, " " + p.Name + ".ToString(\"o\")"));
#line default
#line hidden
this.Write("\t\t/// <summary>\r\n\t\t/// ");
#line 371 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(method.Description.ToSummary()));
#line default
#line hidden
this.Write("\r\n\t\t/// </summary>\r\n");
#line 373 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var p in allParameters.Where(m => m != null)) {
#line default
#line hidden
this.Write("\t\t/// <param name=\"");
#line 374 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(p.Name));
#line default
#line hidden
this.Write("\">");
#line 374 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(p.Description.ToSummary()));
#line default
#line hidden
this.Write("</param>\r\n");
#line 375 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\t\t/// <returns></returns>\r\n\t\tprotected virtual async Task<HttpResponseMessage> ");
#line 377 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(method.Name));
#line default
#line hidden
this.Write("AsyncMsg(");
#line 377 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(parameterList));
#line default
#line hidden
this.Write(")\r\n\t\t{\r\n\t\t\treturn await HttpClient.");
#line 379 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(method.Type.ToTitle()));
#line default
#line hidden
#line 379 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(postOrPutOrPatch ? "AsJson" : ""));
#line default
#line hidden
this.Write("Async");
#line 379 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(postOrPutOrPatch && method.BodyParameter != null ? "<" + method.BodyParameter.Type + ">" : ""));
#line default
#line hidden
this.Write("(");
#line 379 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(url));
#line default
#line hidden
#line 379 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(postOrPutOrPatch ? bodyParameterString:""));
#line default
#line hidden
this.Write(");\r\n\t\t}\r\n\r\n");
#line 382 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
if (Configuration.GenerateAsyncReturnTypes == false || String.IsNullOrEmpty(concreteReturnType)) {
#line default
#line hidden
this.Write("\t\t/// <summary>\r\n\t\t/// ");
#line 384 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(method.Description.ToSummary()));
#line default
#line hidden
this.Write("\r\n\t\t/// </summary>\r\n");
#line 386 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var p in method.UrlParameters) {
#line default
#line hidden
this.Write("\t\t/// <param name=\"");
#line 387 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(p.Name));
#line default
#line hidden
this.Write("\">");
#line 387 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(p.Description.ToSummary()));
#line default
#line hidden
this.Write("</param>\r\n");
#line 388 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\t\t/// <returns></returns>\r\n\t\tpublic virtual async Task<HttpResponseMessage> ");
#line 390 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(method.Name));
#line default
#line hidden
this.Write("Async(");
#line 390 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(parameterList));
#line default
#line hidden
this.Write(")\r\n\t\t{\r\n\t\t\treturn await HttpClient.");
#line 392 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(method.Type.ToTitle()));
#line default
#line hidden
#line 392 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(postOrPutOrPatch ? "AsJson" : ""));
#line default
#line hidden
this.Write("Async");
#line 392 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(postOrPutOrPatch && method.BodyParameter != null ? "<" + method.BodyParameter.Type + ">" : ""));
#line default
#line hidden
this.Write("(");
#line 392 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(url));
#line default
#line hidden
#line 392 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(postOrPutOrPatch ? bodyParameterString:""));
#line default
#line hidden
this.Write(");\r\n\t\t}\r\n\r\n");
#line 395 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
} else {
#line default
#line hidden
this.Write("\t\t/// <summary>\r\n\t\t/// ");
#line 397 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(method.Description.ToSummary()));
#line default
#line hidden
this.Write("\r\n\t\t/// </summary>\r\n");
#line 399 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var p in method.UrlParameters) {
#line default
#line hidden
this.Write("\t\t/// <param name=\"");
#line 400 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(p.Name));
#line default
#line hidden
this.Write("\">");
#line 400 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(p.Description.ToSummary()));
#line default
#line hidden
this.Write("</param>\r\n");
#line 401 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\t\t/// <returns></returns>\r\n\t\tpublic virtual async Task<");
#line 403 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(concreteReturnType));
#line default
#line hidden
this.Write("> ");
#line 403 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(method.Name));
#line default
#line hidden
this.Write("Async(");
#line 403 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(parameterList));
#line default
#line hidden
this.Write(")\r\n\t\t{\r\n\t\t\tvar result = await HttpClient.");
#line 405 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(method.Type.ToTitle()));
#line default
#line hidden
#line 405 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(postOrPutOrPatch ? "AsJson" : ""));
#line default
#line hidden
this.Write("Async");
#line 405 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(postOrPutOrPatch && method.BodyParameter != null ? "<" + method.BodyParameter.Type + ">" : ""));
#line default
#line hidden
this.Write("(");
#line 405 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(url));
#line default
#line hidden
#line 405 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(postOrPutOrPatch ? bodyParameterString:""));
#line default
#line hidden
this.Write(");\r\n\t\t\t \r\n\t\t\tEnsureSuccess(result);\r\n\t\t\t\t \r\n\t\t\treturn await result.Content.ReadAs" +
"Async<");
#line 409 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(concreteReturnType));
#line default
#line hidden
this.Write(">();\r\n\t\t}\r\n\r\n");
#line 412 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\t\t/// <summary>\r\n\t\t/// ");
#line 414 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(method.Description.ToSummary()));
#line default
#line hidden
this.Write("\r\n\t\t/// </summary>\r\n");
#line 416 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
foreach(var p in method.UrlParameters) {
#line default
#line hidden
this.Write("\t\t/// <param name=\"");
#line 417 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(p.Name));
#line default
#line hidden
this.Write("\">");
#line 417 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(p.Description.ToSummary()));
#line default
#line hidden
this.Write("</param>\r\n");
#line 418 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\t\tpublic virtual ");
#line 419 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(String.IsNullOrEmpty(concreteReturnType) ? "void" : concreteReturnType));
#line default
#line hidden
this.Write(" ");
#line 419 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(method.Name));
#line default
#line hidden
this.Write("(");
#line 419 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(parameterList));
#line default
#line hidden
this.Write(")\r\n\t\t{\r\n\t\t\tvar result = Task.Run(() => ");
#line 421 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(method.Name));
#line default
#line hidden
this.Write("AsyncMsg(");
#line 421 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(parameterNameList));
#line default
#line hidden
this.Write(")).Result;\t\t \r\n\t\t\t \r\n\t\t\tEnsureSuccess(result);\r\n");
#line 424 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
if(!String.IsNullOrEmpty(concreteReturnType)) {
#line default
#line hidden
this.Write("\t\t\t \t\t\t \r\n\t\t\treturn result.Content.ReadAsAsync<");
#line 425 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(concreteReturnType));
#line default
#line hidden
this.Write(">().Result;\r\n\t\t\t ");
#line 426 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\t\t}\r\n\r\n");
#line 429 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("\t\t#endregion\r\n\t}\r\n");
#line 432 "C:\Development\Personal\WebApiProxy\WebApiProxy.Tasks\Templates\CSharpProxyTemplate.tt"
}
#line default
#line hidden
this.Write("}\r\n#endregion\r\n\r\n");
return this.GenerationEnvironment.ToString();
}
}