<#@ template language="C#" #> <#@ output extension=".cs" #> <#@ assembly name="System.Core" #> <#@ assembly name="$(SolutionDir)EstusShots.Shared/bin/Debug/netcoreapp3.1/EstusShots.Shared.dll" #> <#@ import namespace="Shared.Interfaces" #> <#@ import namespace="System.Linq" #> <# var assembly = typeof(IApiParameter).Assembly; var types = assembly.GetTypes() .Where(t => t.Namespace?.StartsWith("EstusShots.Shared") == true) .ToArray(); var controllers = types .Where(t => t.Namespace == "EstusShots.Shared.Interfaces.Controllers") .ToArray(); #> //------------------------------------------------------------------------------ // // This code was generated by a tool. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //------------------------------------------------------------------------------ using System.Threading.Tasks; using EstusShots.Shared.Models; using EstusShots.Shared.Models.Parameters; using EstusShots.Shared.Interfaces.Controllers; namespace EstusShots.Client { // Generated part of the client class public partial class EstusShotsClient { <# // Create API client route properties foreach (var iFace in controllers) { var className = iFace.Name.Substring(1).Replace("Controller", ""); #> public <#=className#> <#=className#> { get; internal set; } <# } #> private void CreateApiRoutes() { <# // Instantiate API client routes foreach (var iFace in controllers) { var className = iFace.Name.Substring(1).Replace("Controller", ""); #> <#=className#> = new <#=className#>(this); <# } #> } } <# foreach (var iFace in controllers) { var className = iFace.Name.Substring(1).Replace("Controller", ""); #> public class <#=className#> : <#=iFace.Name #> { private readonly EstusShotsClient _client; public <#=className#>(EstusShotsClient client) { _client = client; } <# foreach (var member in iFace.GetMembers()) { var responseName = $"{member.Name}Response"; var parameterName = $"{member.Name}Parameter"; #> public async Task>> <#=member.Name#>(<#=parameterName#> parameter) => await _client.PostToApi<<#=responseName#>, <#=parameterName#>>($"{_client.ApiUrl}<#=className#>/<#=member.Name#>", parameter); <# } #> } <# } #> }