From 0292d3e67f1065be7abd4023fefae94b08af5afa Mon Sep 17 00:00:00 2001 From: pit Date: Fri, 24 May 2019 00:04:40 -0400 Subject: [PATCH 1/6] Moved the path of BaseAddressAttribute to the method path info. So this way we do not modify the HttpClient URL. This should avoid unexpected behaviour and also allows more efficiant use of network resources. --- Refit.Tests/InterfaceStubGenerator.cs | 2 +- Refit.Tests/RequestBuilder.cs | 66 ++++++++++++++++++--------- Refit.Tests/RestService.cs | 39 ++-------------- Refit/RequestBuilderImplementation.cs | 25 +++++----- Refit/RestMethodInfo.cs | 30 ++++++------ Refit/RestService.cs | 7 --- 6 files changed, 75 insertions(+), 94 deletions(-) diff --git a/Refit.Tests/InterfaceStubGenerator.cs b/Refit.Tests/InterfaceStubGenerator.cs index 2e0858485..3ca27f283 100644 --- a/Refit.Tests/InterfaceStubGenerator.cs +++ b/Refit.Tests/InterfaceStubGenerator.cs @@ -126,7 +126,7 @@ public void GenerateTemplateInfoForInterfaceListSmokeTest() .ToList(); var result = fixture.GenerateTemplateInfoForInterfaceList(input); - Assert.Equal(14, result.ClassList.Count); + Assert.Equal(12, result.ClassList.Count); } [Fact] diff --git a/Refit.Tests/RequestBuilder.cs b/Refit.Tests/RequestBuilder.cs index e8535bc03..714f283fe 100644 --- a/Refit.Tests/RequestBuilder.cs +++ b/Refit.Tests/RequestBuilder.cs @@ -102,6 +102,25 @@ public interface IRestMethodInfoTests Task ManyComplexTypes(Dictionary theData, [Body] Dictionary theData1); } + + [BaseAddress("/api/Test")] + public interface IRelativePathApi1 + { + HttpClient Client { get; } + + [Get("/someendpoint")] + Task Get(); + } + + [BaseAddress()] + public interface IRelativePathApi2 + { + HttpClient Client { get; } + + [Get("/someendpoint")] + Task Get(); + } + public class RestMethodInfoTests { @@ -173,37 +192,25 @@ public void DefaultBodyParameterNotDetectedForGet() [Fact] public void GarbagePathsShouldThrow() { - var shouldDie = true; + var type = typeof(IRestMethodInfoTests); + var methodInfo = type.GetMethods().First(x => x.Name == nameof(IRestMethodInfoTests.GarbagePath)); - try - { - var input = typeof(IRestMethodInfoTests); - var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "GarbagePath")); - } - catch (ArgumentException) - { - shouldDie = false; - } + Action action = delegate() { new RestMethodInfo(type, methodInfo); }; - Assert.False(shouldDie); + var ex = Assert.Throws(action); + Assert.True(ex.Message.Contains(methodInfo.GetCustomAttribute().Path)); } [Fact] public void MissingParametersShouldBlowUp() { - var shouldDie = true; + var type = typeof(IRestMethodInfoTests); + var methodInfo = type.GetMethods().First(x => x.Name == nameof(IRestMethodInfoTests.FetchSomeStuffMissingParameters)); - try - { - var input = typeof(IRestMethodInfoTests); - var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "FetchSomeStuffMissingParameters")); - } - catch (ArgumentException) - { - shouldDie = false; - } + Action action = delegate() { new RestMethodInfo(type, methodInfo); }; - Assert.False(shouldDie); + var ex = Assert.Throws(action); + Assert.True(ex.Message.Contains(methodInfo.GetCustomAttribute().Path)); } [Fact] @@ -1337,6 +1344,21 @@ public void ICanPostAValueTypeIfIWantYoureNotTheBossOfMe() Assert.Equal(expected, output.SendContent); } + + + [Theory] + [InlineData(typeof(IRestMethodInfoTests), "PostWithBodyDetected", "/foo")] + [InlineData(typeof(IRelativePathApi1), "Get", "/api/Test/someendpoint")] + [InlineData(typeof(IRelativePathApi2), "Get", "/someendpoint")] + public void RefitRestService_RelativePath(Type type, string methodName, string expectedPath) + { + var methodInfo = type.GetMethods().First(x => x.Name == methodName); + + var restMethodInfo = new RestMethodInfo(type, methodInfo); + + // Assert.Throws(action); + Assert.Equal(expectedPath, restMethodInfo.RelativePath); + } } static class RequestBuilderTestExtensions diff --git a/Refit.Tests/RestService.cs b/Refit.Tests/RestService.cs index 6efb7e8c1..5fb1f6e51 100644 --- a/Refit.Tests/RestService.cs +++ b/Refit.Tests/RestService.cs @@ -139,24 +139,6 @@ public interface ITrimTrailingForwardSlashApi Task Get(); } - [BaseAddress("/api/Test")] - public interface IRelativePathApi1 - { - HttpClient Client { get; } - - [Get("/someendpoint")] - Task Get(); - } - - [BaseAddress()] - public interface IRelativePathApi2 - { - HttpClient Client { get; } - - [Get("/someendpoint")] - Task Get(); - } - public interface IValidApi { [Get("/someendpoint")] @@ -208,7 +190,7 @@ public async Task DoesntAddAutoAddContentToGetRequest() }; mockHttp.Expect(HttpMethod.Get, "http://foo/nobody") - // We can't add HttpContent to a GET request, + // We can't add HttpContent to a GET request, // because HttpClient doesn't allow it and it will // blow up at runtime .With(r => r.Content == null) @@ -231,7 +213,7 @@ public async Task DoesntAddAutoAddContentToHeadRequest() }; mockHttp.Expect(HttpMethod.Head, "http://foo/nobody") - // We can't add HttpContent to a HEAD request, + // We can't add HttpContent to a HEAD request, // because HttpClient doesn't allow it and it will // blow up at runtime .With(r => r.Content == null) @@ -1190,7 +1172,7 @@ public async Task ServiceOutsideNamespaceGetRequest() }; mockHttp.Expect(HttpMethod.Get, "http://foo/") - // We can't add HttpContent to a GET request, + // We can't add HttpContent to a GET request, // because HttpClient doesn't allow it and it will // blow up at runtime .With(r => r.Content == null) @@ -1319,20 +1301,5 @@ public void NonGenericCreate() Assert.Equal(fixture.Client.BaseAddress.AbsoluteUri, expectedBaseAddress); } - - [Fact] - public void RelativePathCreate() - { - var inputBaseAddress = "http://example.com/"; - - var expectedBaseAddress1 = "http://example.com/api/Test"; - var expectedBaseAddress2 = "http://example.com/"; - - var fixture1 = RestService.For(inputBaseAddress); - var fixture2 = RestService.For(inputBaseAddress); - - Assert.Equal(fixture1.Client.BaseAddress.AbsoluteUri, expectedBaseAddress1); - Assert.Equal(fixture2.Client.BaseAddress.AbsoluteUri, expectedBaseAddress2); - } } } diff --git a/Refit/RequestBuilderImplementation.cs b/Refit/RequestBuilderImplementation.cs index 5d11c5ef4..89a1a191b 100644 --- a/Refit/RequestBuilderImplementation.cs +++ b/Refit/RequestBuilderImplementation.cs @@ -52,16 +52,17 @@ public RequestBuilderImplementation(Type refitInterfaceType, RefitSettings refit var dict = new Dictionary>(); - AddInterfaceHttpMethods(refitInterfaceType, dict); + var baseAddressAttr = refitInterfaceType.GetTypeInfo().GetCustomAttributes(true).OfType().FirstOrDefault(); + AddInterfaceHttpMethods(refitInterfaceType, baseAddressAttr, dict); foreach (var inheritedInterface in targetInterfaceInheritedInterfaces) { - AddInterfaceHttpMethods(inheritedInterface, dict); + AddInterfaceHttpMethods(inheritedInterface, baseAddressAttr, dict); } interfaceHttpMethods = dict; } - private void AddInterfaceHttpMethods(Type interfaceType, Dictionary> methods) + private void AddInterfaceHttpMethods(Type interfaceType, BaseAddressAttribute baseAddressAttr, Dictionary> methods) { foreach (var methodInfo in interfaceType.GetMethods()) { @@ -74,7 +75,7 @@ private void AddInterfaceHttpMethods(Type interfaceType, Dictionary()); } - var restinfo = new RestMethodInfo(interfaceType, methodInfo, settings); + var restinfo = new RestMethodInfo(interfaceType, baseAddressAttr, methodInfo, settings); methods[methodInfo.Name].Add(restinfo); } } @@ -156,7 +157,7 @@ public Func BuildRestResultFuncForMethod(string me { // NB: This jacked up reflection code is here because it's // difficult to upcast Task to an arbitrary T, especially - // if you need to AOT everything, so we need to reflectively + // if you need to AOT everything, so we need to reflectively // invoke buildTaskFuncForMethod. var taskFuncMi = typeof(RequestBuilderImplementation).GetMethod(nameof(BuildTaskFuncForMethod), BindingFlags.NonPublic | BindingFlags.Instance); var taskFunc = (MulticastDelegate)(restMethod.IsApiResponse ? @@ -254,8 +255,8 @@ Func> BuildCancellableTaskFuncF { disposeResponse = false; // caller has to dispose - // NB: This double-casting manual-boxing hate crime is the only way to make - // this work without a 'class' generic constraint. It could blow up at runtime + // NB: This double-casting manual-boxing hate crime is the only way to make + // this work without a 'class' generic constraint. It could blow up at runtime // and would be A Bad Idea if we hadn't already vetted the return type. return (T)(object)resp; } @@ -312,7 +313,7 @@ Func> BuildCancellableTaskFuncF } // Unfortunate side-effect of having no 'class' or 'T : TBody' constraints. - // However, we know that T must be the same as TBody because IsApiResponse != true so + // However, we know that T must be the same as TBody because IsApiResponse != true so // this code is safe at runtime. return (T)(object)body; } @@ -647,8 +648,8 @@ Func> BuildRequestFactoryForMethod(RestMethod } } - // NB: The URI methods in .NET are dumb. Also, we do this - // UriBuilder business so that we preserve any hardcoded query + // NB: The URI methods in .NET are dumb. Also, we do this + // UriBuilder business so that we preserve any hardcoded query // parameters as well as add the parameterized ones. var uri = new UriBuilder(new Uri(new Uri("http://api"), urlTarget)); var query = HttpUtility.ParseQueryString(uri.Query ?? ""); @@ -776,11 +777,11 @@ bool ShouldReturn() => type == typeof(string) || static void SetHeader(HttpRequestMessage request, string name, string value) { // Clear any existing version of this header that might be set, because - // we want to allow removal/redefinition of headers. + // we want to allow removal/redefinition of headers. // We also don't want to double up content headers which may have been // set for us automatically. - // NB: We have to enumerate the header names to check existence because + // NB: We have to enumerate the header names to check existence because // Contains throws if it's the wrong header type for the collection. if (request.Headers.Any(x => x.Key == name)) { diff --git a/Refit/RestMethodInfo.cs b/Refit/RestMethodInfo.cs index 087637504..988953cde 100644 --- a/Refit/RestMethodInfo.cs +++ b/Refit/RestMethodInfo.cs @@ -43,6 +43,12 @@ public class RestMethodInfo static readonly HttpMethod PatchMethod = new HttpMethod("PATCH"); public RestMethodInfo(Type targetInterface, MethodInfo methodInfo, RefitSettings refitSettings = null) + : this(targetInterface, + targetInterface.GetTypeInfo().GetCustomAttributes(true).OfType().FirstOrDefault(), + methodInfo, refitSettings) + {} + + public RestMethodInfo(Type targetInterface, BaseAddressAttribute baseAddressAttr, MethodInfo methodInfo, RefitSettings refitSettings = null) { RefitSettings = refitSettings ?? new RefitSettings(); Type = targetInterface; @@ -54,13 +60,12 @@ public RestMethodInfo(Type targetInterface, MethodInfo methodInfo, RefitSettings .First(); HttpMethod = hma.Method; - RelativePath = hma.Path; + RelativePath = buildAndValidatePath(baseAddressAttr?.RelativePath ?? string.Empty, hma.Path ?? string.Empty); IsMultipart = methodInfo.GetCustomAttributes(true) .OfType() .Any(); - VerifyUrlPathIsSane(RelativePath); DetermineReturnTypeInfo(methodInfo); // Exclude cancellation token parameters from this list @@ -116,26 +121,19 @@ public RestMethodInfo(Type targetInterface, MethodInfo methodInfo, RefitSettings SerializedReturnType.GetGenericTypeDefinition() == typeof(ApiResponse<>); } - void VerifyUrlPathIsSane(string relativePath) + private string buildAndValidatePath(string basePath, string methodPath) { - if (relativePath == "") - return; - - if (!relativePath.StartsWith("/")) + if (!string.IsNullOrEmpty(basePath) && !basePath.StartsWith("/")) { - goto bogusPath; + throw new ArgumentException($"Rest service URL path '{basePath}' must be null, an empty string or starts with '/'"); } - var parts = relativePath.Split('/'); - if (parts.Length == 0) + if (!string.IsNullOrEmpty(methodPath) && !methodPath.StartsWith("/")) { - goto bogusPath; + throw new ArgumentException($"Method URL path '{methodPath}' must be null, an empty string or starts with '/'"); } - return; - -bogusPath: - throw new ArgumentException($"URL path {relativePath} must be of the form '/foo/bar/baz'"); + return basePath?.TrimEnd('/') + methodPath; } Dictionary> BuildParameterMap(string relativePath, List parameterInfo) @@ -274,7 +272,7 @@ Dictionary ParseHeaders(MethodInfo methodInfo) ? methodInfo.DeclaringType.GetTypeInfo().GetCustomAttributes(true) : new Attribute[0]; - // Headers set on the declaring type have to come first, + // Headers set on the declaring type have to come first, // so headers set on the method can replace them. Switching // the order here will break stuff. var headers = inheritedAttributes.Concat(declaringTypeAttributes).Concat(methodInfo.GetCustomAttributes(true)) diff --git a/Refit/RestService.cs b/Refit/RestService.cs index 41ef3f2b4..684154d24 100644 --- a/Refit/RestService.cs +++ b/Refit/RestService.cs @@ -44,13 +44,6 @@ public static object For(Type refitInterfaceType, HttpClient client, IRequestBui { var generatedType = TypeMapping.GetOrAdd(refitInterfaceType, type => GetGeneratedType(type)); - var aps = refitInterfaceType.GetTypeInfo().GetCustomAttributes(true).OfType().FirstOrDefault(); - - if (aps != null && !string.IsNullOrEmpty(aps.RelativePath)) - { - client.BaseAddress = new Uri(client.BaseAddress, aps.RelativePath); - } - return Activator.CreateInstance(generatedType, client, builder); } From 200480ab79abd294e781b34599fee54248b36336 Mon Sep 17 00:00:00 2001 From: pit Date: Fri, 24 May 2019 23:07:41 -0400 Subject: [PATCH 2/6] Add doc for BaseAddress --- README.md | 161 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 93 insertions(+), 68 deletions(-) diff --git a/README.md b/README.md index 675f6d2bd..b0001ecd4 100644 --- a/README.md +++ b/README.md @@ -37,8 +37,8 @@ Refit currently supports the following platforms and any .NET Standard 1.4 targe * UWP * Xamarin.Android * Xamarin.Mac -* Xamarin.iOS -* Desktop .NET 4.6.1 +* Xamarin.iOS +* Desktop .NET 4.6.1 * .NET Core #### Note about .NET Core @@ -62,7 +62,7 @@ You can also specify query parameters in the URL: A request URL can be updated dynamically using replacement blocks and parameters on the method. A replacement block is an alphanumeric string -surrounded by { and }. +surrounded by { and }. If the name of your parameter doesn't match the name in the URL path, use the `AliasAs` attribute. @@ -101,9 +101,34 @@ Task> Search(string page); Search("admin/products"); >>> "/search/admin/products" ``` + +An interface or class may have HTTP attribute that are provided to all of its request method relative URLs by applaying BaseAddress annotations. + +```csharp +interface IExample +{ + [Get("/api/item/{id}")] + Task Get(string id); +} + +Get("123"); +>>> "/api/item/123" + + +[BaseAddress("/api/{tenantId}")] +interface IExampleWithBaseAddress +{ + [Get("/item/{id}")] + Task Get(string tenantid, string id); +} + +Get("tid-0087", "123"); +>>> "/api/tid-0087/item/123" +``` + ### Dynamic Querystring Parameters -If you specify an `object` as a query parameter, all public properties which are not null are used as query parameters. +If you specify an `object` as a query parameter, all public properties which are not null are used as query parameters. Use the `Query` attribute the change the behavior to 'flatten' your query parameter object. If using this Attribute you can specify values for the Delimiter and the Prefix which are used to 'flatten' the object. ```csharp @@ -168,18 +193,18 @@ type of the parameter: * If the type is `Stream`, the content will be streamed via `StreamContent` * If the type is `string`, the string will be used directly as the content unless `[Body(BodySerializationMethod.Json)]` is set which will send it as a `StringContent` -* If the parameter has the attribute `[Body(BodySerializationMethod.UrlEncoded)]`, +* If the parameter has the attribute `[Body(BodySerializationMethod.UrlEncoded)]`, the content will be URL-encoded (see [form posts](#form-posts) below) -* For all other types, the object will be serialized using the content serializer specified in +* For all other types, the object will be serialized using the content serializer specified in RefitSettings (JSON is the default). #### Buffering and the `Content-Length` header By default, Refit streams the body content without buffering it. This means you can -stream a file from disk, for example, without incurring the overhead of loading -the whole file into memory. The downside of this is that no `Content-Length` header +stream a file from disk, for example, without incurring the overhead of loading +the whole file into memory. The downside of this is that no `Content-Length` header is set _on the request_. If your API needs you to send a `Content-Length` header with -the request, you can disable this streaming behavior by setting the `buffered` argument +the request, you can disable this streaming behavior by setting the `buffered` argument of the `[Body]` attribute to `true`: ```csharp @@ -188,13 +213,13 @@ Task CreateUser([Body(buffered: true)] User user); #### JSON content -JSON requests and responses are serialized/deserialized using Json.NET. -By default, Refit will use the serializer settings that can be configured +JSON requests and responses are serialized/deserialized using Json.NET. +By default, Refit will use the serializer settings that can be configured by setting _Newtonsoft.Json.JsonConvert.DefaultSettings_: ```csharp -JsonConvert.DefaultSettings = - () => new JsonSerializerSettings() { +JsonConvert.DefaultSettings = + () => new JsonSerializerSettings() { ContractResolver = new CamelCasePropertyNamesContractResolver(), Converters = {new StringEnumConverter()} }; @@ -204,16 +229,16 @@ await PostSomeStuff(new { Day = DayOfWeek.Saturday }); ``` As these are global settings they will affect your entire application. It -might be beneficial to isolate the settings for calls to a particular API. -When creating a Refit generated live interface, you may optionally pass a -`RefitSettings` that will allow you to specify what serializer settings you +might be beneficial to isolate the settings for calls to a particular API. +When creating a Refit generated live interface, you may optionally pass a +`RefitSettings` that will allow you to specify what serializer settings you would like. This allows you to have different serializer settings for separate APIs: ```csharp var gitHubApi = RestService.For("https://api.github.com", new RefitSettings { - ContentSerializer = new JsonContentSerializer( + ContentSerializer = new JsonContentSerializer( new JsonSerializerSettings { ContractResolver = new SnakeCasePropertyNamesContractResolver() } @@ -221,28 +246,28 @@ var gitHubApi = RestService.For("https://api.github.com", var otherApi = RestService.For("https://api.example.com", new RefitSettings { - ContentSerializer = new JsonContentSerializer( + ContentSerializer = new JsonContentSerializer( new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() } )}); ``` -Property serialization/deserialization can be customised using Json.NET's +Property serialization/deserialization can be customised using Json.NET's JsonProperty attribute: -```csharp -public class Foo +```csharp +public class Foo { // Works like [AliasAs("b")] would in form posts (see below) - [JsonProperty(PropertyName="b")] + [JsonProperty(PropertyName="b")] public string Bar { get; set; } -} +} ``` #### XML Content -XML requests and responses are serialized/deserialized using _System.Xml.Serialization.XmlSerializer_. +XML requests and responses are serialized/deserialized using _System.Xml.Serialization.XmlSerializer_. By default, Refit will use JSON content serialization, to use XML content configure the ContentSerializer to use the `XmlContentSerializer`: ```csharp @@ -297,9 +322,9 @@ public interface IMeasurementProtocolApi } var data = new Dictionary { - {"v", 1}, - {"tid", "UA-1234-5"}, - {"cid", new Guid("d1e9ea6b-2e8b-4699-93e0-0bcbd26c206c")}, + {"v", 1}, + {"tid", "UA-1234-5"}, + {"cid", new Guid("d1e9ea6b-2e8b-4699-93e0-0bcbd26c206c")}, {"t", "event"}, }; @@ -307,8 +332,8 @@ var data = new Dictionary { await api.Collect(data); ``` -Or you can just pass any object and all _public, readable_ properties will -be serialized as form fields in the request. This approach allows you to alias +Or you can just pass any object and all _public, readable_ properties will +be serialized as form fields in the request. This approach allows you to alias property names using `[AliasAs("whatever")]` which can help if the API has cryptic field names: @@ -323,30 +348,30 @@ public class Measurement { // Properties can be read-only and [AliasAs] isn't required public int v { get { return 1; } } - + [AliasAs("tid")] public string WebPropertyId { get; set; } [AliasAs("cid")] public Guid ClientId { get; set; } - [AliasAs("t")] + [AliasAs("t")] public string Type { get; set; } public object IgnoreMe { private get; set; } } -var measurement = new Measurement { - WebPropertyId = "UA-1234-5", - ClientId = new Guid("d1e9ea6b-2e8b-4699-93e0-0bcbd26c206c"), - Type = "event" -}; +var measurement = new Measurement { + WebPropertyId = "UA-1234-5", + ClientId = new Guid("d1e9ea6b-2e8b-4699-93e0-0bcbd26c206c"), + Type = "event" +}; // Serialized as: v=1&tid=UA-1234-5&cid=d1e9ea6b-2e8b-4699-93e0-0bcbd26c206c&t=event await api.Collect(measurement); -``` +``` -If you have a type that has `[JsonProperty(PropertyName)]` attributes setting property aliases, Refit will use those too (`[AliasAs]` will take precedence where you have both). +If you have a type that has `[JsonProperty(PropertyName)]` attributes setting property aliases, Refit will use those too (`[AliasAs]` will take precedence where you have both). This means that the following type will serialize as `one=value1&two=value2`: ```csharp @@ -369,7 +394,7 @@ public class SomeObject #### Static headers -You can set one or more static request headers for a request applying a `Headers` +You can set one or more static request headers for a request applying a `Headers` attribute to the method: ```csharp @@ -378,7 +403,7 @@ attribute to the method: Task GetUser(string user); ``` -Static headers can also be added to _every request in the API_ by applying the +Static headers can also be added to _every request in the API_ by applying the `Headers` attribute to the interface: ```csharp @@ -387,7 +412,7 @@ public interface IGitHubApi { [Get("/users/{user}")] Task GetUser(string user); - + [Post("/users/new")] Task CreateUser([Body] User user); } @@ -403,13 +428,13 @@ with a dynamic value to a request by applying a `Header` attribute to a paramete Task GetUser(string user, [Header("Authorization")] string authorization); // Will add the header "Authorization: token OAUTH-TOKEN" to the request -var user = await GetUser("octocat", "token OAUTH-TOKEN"); +var user = await GetUser("octocat", "token OAUTH-TOKEN"); ``` #### Authorization (Dynamic Headers redux) The most common reason to use headers is for authorization. Today most API's use some flavor of oAuth with access tokens that expire and refresh tokens that are longer lived. -One way to encapsulate these kinds of token usage, a custom `HttpClientHandler` can be inserted instead. +One way to encapsulate these kinds of token usage, a custom `HttpClientHandler` can be inserted instead. For example: ```csharp @@ -446,14 +471,14 @@ This class is used like so (example uses the [ADAL](http://msdn.microsoft.com/en class LoginViewModel { AuthenticationContext context = new AuthenticationContext(...); - + private async Task GetToken() { // The AcquireTokenAsync call will prompt with a UI if necessary // Or otherwise silently use a refresh token to return - // a valid access token + // a valid access token var token = await context.AcquireTokenAsync("http://my.service.uri/app", "clientId", new Uri("callback://complete")); - + return token; } @@ -475,13 +500,13 @@ interface IMyRestService } ``` -In the above example, any time a method that requires authentication is called, the `AuthenticatedHttpClientHandler` will try to get a fresh access token. It's up to the app to provide one, checking the expiration time of an existing access token and obtaining a new one if needed. +In the above example, any time a method that requires authentication is called, the `AuthenticatedHttpClientHandler` will try to get a fresh access token. It's up to the app to provide one, checking the expiration time of an existing access token and obtaining a new one if needed. #### Redefining headers -Unlike Retrofit, where headers do not overwrite each other and are all added to -the request regardless of how many times the same header is defined, Refit takes -a similar approach to the approach ASP.NET MVC takes with action filters — +Unlike Retrofit, where headers do not overwrite each other and are all added to +the request regardless of how many times the same header is defined, Refit takes +a similar approach to the approach ASP.NET MVC takes with action filters — **redefining a header will replace it**, in the following order of precedence: * `Headers` attribute on the interface _(lowest priority)_ @@ -494,11 +519,11 @@ public interface IGitHubApi { [Get("/users/list")] Task GetUsers(); - + [Get("/users/{user}")] [Headers("X-Emoji: :smile_cat:")] Task GetUser(string user); - + [Post("/users/new")] [Headers("X-Emoji: :metal:")] Task CreateUser([Body] User user, [Header("X-Emoji")] string emoji); @@ -511,13 +536,13 @@ var users = await GetUsers(); var user = await GetUser("octocat"); // X-Emoji: :trollface: -await CreateUser(user, ":trollface:"); +await CreateUser(user, ":trollface:"); ``` #### Removing headers -Headers defined on an interface or method can be removed by redefining -a static header without a value (i.e. without `: `) or passing `null` for +Headers defined on an interface or method can be removed by redefining +a static header without a value (i.e. without `: `) or passing `null` for a dynamic header. _Empty strings will be included as empty headers._ ```csharp @@ -527,11 +552,11 @@ public interface IGitHubApi [Get("/users/list")] [Headers("X-Emoji")] // Remove the X-Emoji header Task GetUsers(); - + [Get("/users/{user}")] [Headers("X-Emoji:")] // Redefine the X-Emoji header as empty Task GetUser(string user); - + [Post("/users/new")] Task CreateUser([Body] User user, [Header("X-Emoji")] string emoji); } @@ -539,14 +564,14 @@ public interface IGitHubApi // No X-Emoji header var users = await GetUsers(); -// X-Emoji: +// X-Emoji: var user = await GetUser("octocat"); // No X-Emoji header -await CreateUser(user, null); +await CreateUser(user, null); -// X-Emoji: -await CreateUser(user, ""); +// X-Emoji: +await CreateUser(user, ""); ``` ### Multipart uploads @@ -643,10 +668,10 @@ public interface IReallyExcitingCrudApi where T : class Which can be used like this: ```csharp -// The "/users" part here is kind of important if you want it to work for more +// The "/users" part here is kind of important if you want it to work for more // than one type (unless you have a different domain for each type) -var api = RestService.For>("http://api.example.com/users"); -``` +var api = RestService.For>("http://api.example.com/users"); +``` ### Interface inheritance When multiple services that need to be kept separate share a number of APIs, it is possible to leverage interface inheritance to avoid having to define the same Refit methods multiple times in different services: @@ -713,7 +738,7 @@ Here `IAmInterfaceC.Foo` would use the header attribute inherited from `IAmInter ### Using HttpClientFactory -Refit has first class support for the ASP.Net Core 2.1 HttpClientFactory. Add a reference to `Refit.HttpClientFactory` and call +Refit has first class support for the ASP.Net Core 2.1 HttpClientFactory. Add a reference to `Refit.HttpClientFactory` and call the provided extension method in your `ConfigureServices` method to configure your Refit interface: ```csharp @@ -724,9 +749,9 @@ services.AddRefitClient() // .SetHandlerLifetime(TimeSpan.FromMinutes(2)); ``` -Optionally, a `RefitSettings` object can be included: +Optionally, a `RefitSettings` object can be included: ```csharp -var settings = new RefitSettings(); +var settings = new RefitSettings(); // Configure refit settings here services.AddRefitClient(settings) @@ -769,7 +794,7 @@ try } catch (ValidationApiException validationException) { - // handle validation here by using validationException.Content, + // handle validation here by using validationException.Content, // which is type of ProblemDetails according to RFC 7807 } catch (ApiException exception) From 6401f9ef4b9f12d91302222555598628ef0f1f18 Mon Sep 17 00:00:00 2001 From: pit Date: Wed, 5 Jun 2019 20:19:14 -0400 Subject: [PATCH 3/6] Delete autogenerated RefitStubs --- Refit.Tests/RefitStubs.Net46.cs | 1840 ---------------------------- Refit.Tests/RefitStubs.NetCore2.cs | 1840 ---------------------------- 2 files changed, 3680 deletions(-) delete mode 100644 Refit.Tests/RefitStubs.Net46.cs delete mode 100644 Refit.Tests/RefitStubs.NetCore2.cs diff --git a/Refit.Tests/RefitStubs.Net46.cs b/Refit.Tests/RefitStubs.Net46.cs deleted file mode 100644 index 06826898a..000000000 --- a/Refit.Tests/RefitStubs.Net46.cs +++ /dev/null @@ -1,1840 +0,0 @@ -// -using System; -using System.Net.Http; -using System.Collections.Generic; -using System.IO; -using System.Text; -using System.Threading.Tasks; -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp; -using Microsoft.CodeAnalysis.CSharp.Syntax; -using Xunit; -using Nustache; -using Nustache.Core; -using Refit; -using Refit.Generator; -using Task = System.Threading.Tasks.Task; -using System.Net; -using System.Reactive.Linq; -using Newtonsoft.Json; -using Newtonsoft.Json.Serialization; -using RichardSzalay.MockHttp; -using static System.Math; -using SomeType = CollisionA.SomeType; -using CollisionB; -using System.Reflection; -using System.Threading; -using System.Net.Http.Headers; - -/* ******** Hey You! ********* - * - * This is a generated file, and gets rewritten every time you build the - * project. If you want to edit it, you need to edit the mustache template - * in the Refit package */ - -#pragma warning disable -namespace Refit.Tests.RefitInternalGenerated -{ - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate)] - sealed class PreserveAttribute : Attribute - { - - // - // Fields - // - public bool AllMembers; - - public bool Conditional; - } -} -#pragma warning restore - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIAmARefitInterfaceButNobodyUsesMe : IAmARefitInterfaceButNobodyUsesMe - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIAmARefitInterfaceButNobodyUsesMe(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IAmARefitInterfaceButNobodyUsesMe.RefitMethod() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("RefitMethod", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmARefitInterfaceButNobodyUsesMe.AnotherRefitMethod() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("AnotherRefitMethod", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmARefitInterfaceButNobodyUsesMe.NoConstantsAllowed() - { - throw new NotImplementedException("Either this method has no Refit HTTP method attribute or you've used something other than a string literal for the 'path' argument."); - } - - /// - Task IAmARefitInterfaceButNobodyUsesMe.SpacesShouldntBreakMe() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("SpacesShouldntBreakMe", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmARefitInterfaceButNobodyUsesMe.ReservedWordsForParameterNames(int @int, string @string, float @long) - { - var arguments = new object[] { @int, @string, @long }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReservedWordsForParameterNames", new Type[] { typeof(int), typeof(string), typeof(float) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIAmHalfRefit : IAmHalfRefit - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIAmHalfRefit(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IAmHalfRefit.Post() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Post", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmHalfRefit.Get() - { - throw new NotImplementedException("Either this method has no Refit HTTP method attribute or you've used something other than a string literal for the 'path' argument."); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIAmInterface : IAmInterface - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIAmInterface(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IAmInterface.Pang() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Pang", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmInterfaceB.Pong() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Pong", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmInterfaceD.Test() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Test", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmInterfaceA.Ping() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Ping", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIAmInterfaceA : IAmInterfaceA - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIAmInterfaceA(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IAmInterfaceA.Ping() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Ping", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIAmInterfaceB : IAmInterfaceB - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIAmInterfaceB(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IAmInterfaceB.Pong() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Pong", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmInterfaceD.Test() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Test", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIAmInterfaceC : IAmInterfaceC - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIAmInterfaceC(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IAmInterfaceC.Pang() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Pang", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmInterfaceB.Pong() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Pong", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmInterfaceD.Test() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Test", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmInterfaceA.Ping() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Ping", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIAmInterfaceD : IAmInterfaceD - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIAmInterfaceD(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IAmInterfaceD.Test() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Test", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIApiWithDecimal : IApiWithDecimal - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIApiWithDecimal(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IApiWithDecimal.GetWithDecimal(decimal value) - { - var arguments = new object[] { value }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetWithDecimal", new Type[] { typeof(decimal) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIBodylessApi : IBodylessApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIBodylessApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IBodylessApi.Post() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Post", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IBodylessApi.Get() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IBodylessApi.Head() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Head", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIBoringCrudApi - : IBoringCrudApi - where T : class - - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIBoringCrudApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IBoringCrudApi.Create(T paylod) - { - var arguments = new object[] { paylod }; - var func = requestBuilder.BuildRestResultFuncForMethod("Create", new Type[] { typeof(T) }); - return (Task)func(Client, arguments); - } - - /// - Task> IBoringCrudApi.ReadAll() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadAll", new Type[] { }); - return (Task>)func(Client, arguments); - } - - /// - Task IBoringCrudApi.ReadOne(TKey key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadOne", new Type[] { typeof(TKey) }); - return (Task)func(Client, arguments); - } - - /// - Task IBoringCrudApi.Update(TKey key, T payload) - { - var arguments = new object[] { key, payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Update", new Type[] { typeof(TKey), typeof(T) }); - return (Task)func(Client, arguments); - } - - /// - Task IBoringCrudApi.Delete(TKey key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("Delete", new Type[] { typeof(TKey) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIBrokenWebApi : IBrokenWebApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIBrokenWebApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IBrokenWebApi.PostAValue(string derp) - { - var arguments = new object[] { derp }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostAValue", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIDataApiA : IDataApiA - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIDataApiA(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IDataApiA.PingA() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("PingA", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Copy(DataEntity payload) - { - var arguments = new object[] { payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Copy", new Type[] { typeof(DataEntity) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Create(DataEntity payload) - { - var arguments = new object[] { payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Create", new Type[] { typeof(DataEntity) }); - return (Task)func(Client, arguments); - } - - /// - Task> IDataCrudApi.ReadAll() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadAll", new Type[] { }); - return (Task>)func(Client, arguments); - } - - /// - Task IDataCrudApi.ReadOne(long key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadOne", new Type[] { typeof(long) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Update(long key, DataEntity payload) - { - var arguments = new object[] { key, payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Update", new Type[] { typeof(long), typeof(DataEntity) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Delete(long key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("Delete", new Type[] { typeof(long) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIDataApiB : IDataApiB - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIDataApiB(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IDataApiB.PingB() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("PingB", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Create(DataEntity payload) - { - var arguments = new object[] { payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Create", new Type[] { typeof(DataEntity) }); - return (Task)func(Client, arguments); - } - - /// - Task> IDataCrudApi.ReadAll() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadAll", new Type[] { }); - return (Task>)func(Client, arguments); - } - - /// - Task IDataCrudApi.ReadOne(int key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadOne", new Type[] { typeof(int) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Update(int key, DataEntity payload) - { - var arguments = new object[] { key, payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Update", new Type[] { typeof(int), typeof(DataEntity) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Delete(int key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("Delete", new Type[] { typeof(int) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIDataCrudApi - : IDataCrudApi - where T : class - - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIDataCrudApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IDataCrudApi.Copy(T payload) - { - var arguments = new object[] { payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Copy", new Type[] { typeof(T) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Create(T payload) - { - var arguments = new object[] { payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Create", new Type[] { typeof(T) }); - return (Task)func(Client, arguments); - } - - /// - Task> IDataCrudApi.ReadAll() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadAll", new Type[] { }); - return (Task>)func(Client, arguments); - } - - /// - Task IDataCrudApi.ReadOne(long key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadOne", new Type[] { typeof(long) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Update(long key, T payload) - { - var arguments = new object[] { key, payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Update", new Type[] { typeof(long), typeof(T) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Delete(long key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("Delete", new Type[] { typeof(long) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIDataCrudApi - : IDataCrudApi - where T : class - - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIDataCrudApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IDataCrudApi.Create(T payload) - { - var arguments = new object[] { payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Create", new Type[] { typeof(T) }); - return (Task)func(Client, arguments); - } - - /// - Task> IDataCrudApi.ReadAll() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadAll", new Type[] { }); - return (Task>)func(Client, arguments); - } - - /// - Task IDataCrudApi.ReadOne(TKey key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadOne", new Type[] { typeof(TKey) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Update(TKey key, T payload) - { - var arguments = new object[] { key, payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Update", new Type[] { typeof(TKey), typeof(T) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Delete(TKey key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("Delete", new Type[] { typeof(TKey) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIGitHubApi : IGitHubApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIGitHubApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IGitHubApi.GetUser(string userName) - { - var arguments = new object[] { userName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUser", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - IObservable IGitHubApi.GetUserObservable(string userName) - { - var arguments = new object[] { userName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUserObservable", new Type[] { typeof(string) }); - return (IObservable)func(Client, arguments); - } - - /// - IObservable IGitHubApi.GetUserCamelCase(string userName) - { - var arguments = new object[] { userName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUserCamelCase", new Type[] { typeof(string) }); - return (IObservable)func(Client, arguments); - } - - /// - Task> IGitHubApi.GetOrgMembers(string orgName) - { - var arguments = new object[] { orgName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetOrgMembers", new Type[] { typeof(string) }); - return (Task>)func(Client, arguments); - } - - /// - Task IGitHubApi.FindUsers(string q) - { - var arguments = new object[] { q }; - var func = requestBuilder.BuildRestResultFuncForMethod("FindUsers", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - Task IGitHubApi.GetIndex() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetIndex", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - IObservable IGitHubApi.GetIndexObservable() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetIndexObservable", new Type[] { }); - return (IObservable)func(Client, arguments); - } - - /// - Task IGitHubApi.NothingToSeeHere() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("NothingToSeeHere", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task> IGitHubApi.NothingToSeeHereWithMetadata() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("NothingToSeeHereWithMetadata", new Type[] { }); - return (Task>)func(Client, arguments); - } - - /// - Task> IGitHubApi.GetUserWithMetadata(string userName) - { - var arguments = new object[] { userName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUserWithMetadata", new Type[] { typeof(string) }); - return (Task>)func(Client, arguments); - } - - /// - IObservable> IGitHubApi.GetUserObservableWithMetadata(string userName) - { - var arguments = new object[] { userName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUserObservableWithMetadata", new Type[] { typeof(string) }); - return (IObservable>)func(Client, arguments); - } - - /// - Task IGitHubApi.CreateUser(User user) - { - var arguments = new object[] { user }; - var func = requestBuilder.BuildRestResultFuncForMethod("CreateUser", new Type[] { typeof(User) }); - return (Task)func(Client, arguments); - } - - /// - Task> IGitHubApi.CreateUserWithMetadata(User user) - { - var arguments = new object[] { user }; - var func = requestBuilder.BuildRestResultFuncForMethod("CreateUserWithMetadata", new Type[] { typeof(User) }); - return (Task>)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIHttpBinApi - : IHttpBinApi - where TResponse : class - where THeader : struct - - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIHttpBinApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IHttpBinApi.Get(TParam param, THeader header) - { - var arguments = new object[] { param, header }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { typeof(TParam), typeof(THeader) }); - return (Task)func(Client, arguments); - } - - /// - Task IHttpBinApi.GetQuery(TParam param) - { - var arguments = new object[] { param }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetQuery", new Type[] { typeof(TParam) }); - return (Task)func(Client, arguments); - } - - /// - Task IHttpBinApi.GetQueryWithIncludeParameterName(TParam param) - { - var arguments = new object[] { param }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetQueryWithIncludeParameterName", new Type[] { typeof(TParam) }); - return (Task)func(Client, arguments); - } - - /// - Task IHttpBinApi.GetQuery1(TParam param) - { - var arguments = new object[] { param }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetQuery1", new Type[] { typeof(TParam) }, new Type[] { typeof(TValue) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIHttpContentApi : IHttpContentApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIHttpContentApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IHttpContentApi.PostFileUpload(HttpContent content) - { - var arguments = new object[] { content }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostFileUpload", new Type[] { typeof(HttpContent) }); - return (Task)func(Client, arguments); - } - - /// - Task> IHttpContentApi.PostFileUploadWithMetadata(HttpContent content) - { - var arguments = new object[] { content }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostFileUploadWithMetadata", new Type[] { typeof(HttpContent) }); - return (Task>)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedResponseTestsIMyAliasService : ResponseTests.IMyAliasService - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedResponseTestsIMyAliasService(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task ResponseTests.IMyAliasService.GetTestObject() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetTestObject", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedAuthenticatedClientHandlerTestsIMyAuthenticatedService : AuthenticatedClientHandlerTests.IMyAuthenticatedService - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedAuthenticatedClientHandlerTestsIMyAuthenticatedService(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task AuthenticatedClientHandlerTests.IMyAuthenticatedService.GetUnauthenticated() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUnauthenticated", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task AuthenticatedClientHandlerTests.IMyAuthenticatedService.GetAuthenticated() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetAuthenticated", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedINamespaceCollisionApi : INamespaceCollisionApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedINamespaceCollisionApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task INamespaceCollisionApi.SomeRequest() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("SomeRequest", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedTestNestedINestedGitHubApi : TestNested.INestedGitHubApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedTestNestedINestedGitHubApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task TestNested.INestedGitHubApi.GetUser(string userName) - { - var arguments = new object[] { userName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUser", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - IObservable TestNested.INestedGitHubApi.GetUserObservable(string userName) - { - var arguments = new object[] { userName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUserObservable", new Type[] { typeof(string) }); - return (IObservable)func(Client, arguments); - } - - /// - IObservable TestNested.INestedGitHubApi.GetUserCamelCase(string userName) - { - var arguments = new object[] { userName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUserCamelCase", new Type[] { typeof(string) }); - return (IObservable)func(Client, arguments); - } - - /// - Task> TestNested.INestedGitHubApi.GetOrgMembers(string orgName) - { - var arguments = new object[] { orgName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetOrgMembers", new Type[] { typeof(string) }); - return (Task>)func(Client, arguments); - } - - /// - Task TestNested.INestedGitHubApi.FindUsers(string q) - { - var arguments = new object[] { q }; - var func = requestBuilder.BuildRestResultFuncForMethod("FindUsers", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - Task TestNested.INestedGitHubApi.GetIndex() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetIndex", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - IObservable TestNested.INestedGitHubApi.GetIndexObservable() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetIndexObservable", new Type[] { }); - return (IObservable)func(Client, arguments); - } - - /// - Task TestNested.INestedGitHubApi.NothingToSeeHere() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("NothingToSeeHere", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedINonGenericInterfaceWithGenericMethod : INonGenericInterfaceWithGenericMethod - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedINonGenericInterfaceWithGenericMethod(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task INonGenericInterfaceWithGenericMethod.PostMessage(T message) - { - var arguments = new object[] { message }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostMessage", new Type[] { typeof(T) }, new Type[] { typeof(T) }); - return (Task)func(Client, arguments); - } - - /// - Task INonGenericInterfaceWithGenericMethod.PostMessage(T message, U param1, V param2) - { - var arguments = new object[] { message, param1, param2 }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostMessage", new Type[] { typeof(T), typeof(U), typeof(V) }, new Type[] { typeof(T), typeof(U), typeof(V) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedINpmJs : INpmJs - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedINpmJs(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task INpmJs.GetCongruence() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetCongruence", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIRelativePathApi1 : IRelativePathApi1 - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIRelativePathApi1(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IRelativePathApi1.Get() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIRelativePathApi2 : IRelativePathApi2 - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIRelativePathApi2(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IRelativePathApi2.Get() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIRequestBin : IRequestBin - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIRequestBin(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IRequestBin.Post() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Post", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IRequestBin.PostRawStringDefault(string str) - { - var arguments = new object[] { str }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostRawStringDefault", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - Task IRequestBin.PostRawStringJson(string str) - { - var arguments = new object[] { str }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostRawStringJson", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - Task IRequestBin.PostRawStringUrlEncoded(string str) - { - var arguments = new object[] { str }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostRawStringUrlEncoded", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - Task IRequestBin.PostGeneric(T param) - { - var arguments = new object[] { param }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostGeneric", new Type[] { typeof(T) }, new Type[] { typeof(T) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIRunscopeApi : IRunscopeApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIRunscopeApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IRunscopeApi.UploadStream(Stream stream) - { - var arguments = new object[] { stream }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadStream", new Type[] { typeof(Stream) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadStreamPart(StreamPart stream) - { - var arguments = new object[] { stream }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadStreamPart", new Type[] { typeof(StreamPart) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadBytes(byte[] bytes) - { - var arguments = new object[] { bytes }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadBytes", new Type[] { typeof(byte[]) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadBytesPart(ByteArrayPart bytes) - { - var arguments = new object[] { bytes }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadBytesPart", new Type[] { typeof(ByteArrayPart) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadString(string someString) - { - var arguments = new object[] { someString }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadString", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadFileInfo(IEnumerable fileInfos, FileInfo anotherFile) - { - var arguments = new object[] { fileInfos, anotherFile }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadFileInfo", new Type[] { typeof(IEnumerable), typeof(FileInfo) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadFileInfoPart(IEnumerable fileInfos, FileInfoPart anotherFile) - { - var arguments = new object[] { fileInfos, anotherFile }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadFileInfoPart", new Type[] { typeof(IEnumerable), typeof(FileInfoPart) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadJsonObject(ModelObject theObject) - { - var arguments = new object[] { theObject }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadJsonObject", new Type[] { typeof(ModelObject) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadJsonObjects(IEnumerable theObjects) - { - var arguments = new object[] { theObjects }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadJsonObjects", new Type[] { typeof(IEnumerable) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadMixedObjects(IEnumerable theObjects, AnotherModel anotherModel, FileInfo aFile, AnEnum anEnum, string aString, int anInt) - { - var arguments = new object[] { theObjects, anotherModel, aFile, anEnum, aString, anInt }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadMixedObjects", new Type[] { typeof(IEnumerable), typeof(AnotherModel), typeof(FileInfo), typeof(AnEnum), typeof(string), typeof(int) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadHttpContent(HttpContent content) - { - var arguments = new object[] { content }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadHttpContent", new Type[] { typeof(HttpContent) }); - return (Task)func(Client, arguments); - } - } -} - -namespace AutoGeneratedIServiceWithoutNamespace -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIServiceWithoutNamespace : IServiceWithoutNamespace - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIServiceWithoutNamespace(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IServiceWithoutNamespace.GetRoot() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetRoot", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IServiceWithoutNamespace.PostRoot() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostRoot", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIStreamApi : IStreamApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIStreamApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IStreamApi.GetRemoteFile(string filename) - { - var arguments = new object[] { filename }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetRemoteFile", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - Task> IStreamApi.GetRemoteFileWithMetadata(string filename) - { - var arguments = new object[] { filename }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetRemoteFileWithMetadata", new Type[] { typeof(string) }); - return (Task>)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedITrimTrailingForwardSlashApi : ITrimTrailingForwardSlashApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedITrimTrailingForwardSlashApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task ITrimTrailingForwardSlashApi.Get() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIUseOverloadedGenericMethods - : IUseOverloadedGenericMethods - where TResponse : class - where THeader : struct - - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIUseOverloadedGenericMethods(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IUseOverloadedGenericMethods.Get() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IUseOverloadedGenericMethods.Get(TParam param, THeader header) - { - var arguments = new object[] { param, header }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { typeof(TParam), typeof(THeader) }); - return (Task)func(Client, arguments); - } - - /// - Task IUseOverloadedGenericMethods.Get(THeader param, TParam header) - { - var arguments = new object[] { param, header }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { typeof(THeader), typeof(TParam) }); - return (Task)func(Client, arguments); - } - - /// - Task IUseOverloadedGenericMethods.Get(int httpstatuscode) - { - var arguments = new object[] { httpstatuscode }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { typeof(int) }); - return (Task)func(Client, arguments); - } - - /// - Task IUseOverloadedGenericMethods.Get(int someVal) - { - var arguments = new object[] { someVal }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { typeof(int) }, new Type[] { typeof(TValue) }); - return (Task)func(Client, arguments); - } - - /// - Task IUseOverloadedGenericMethods.Get(TInput input) - { - var arguments = new object[] { input }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { typeof(TInput) }, new Type[] { typeof(TValue), typeof(TInput) }); - return (Task)func(Client, arguments); - } - - /// - Task IUseOverloadedGenericMethods.Get(TInput1 input1, TInput2 input2) - { - var arguments = new object[] { input1, input2 }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { typeof(TInput1), typeof(TInput2) }, new Type[] { typeof(TInput1), typeof(TInput2) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIUseOverloadedMethods : IUseOverloadedMethods - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIUseOverloadedMethods(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IUseOverloadedMethods.Get() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IUseOverloadedMethods.Get(int httpstatuscode) - { - var arguments = new object[] { httpstatuscode }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { typeof(int) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIValidApi : IValidApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIValidApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IValidApi.Get() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} diff --git a/Refit.Tests/RefitStubs.NetCore2.cs b/Refit.Tests/RefitStubs.NetCore2.cs deleted file mode 100644 index 06826898a..000000000 --- a/Refit.Tests/RefitStubs.NetCore2.cs +++ /dev/null @@ -1,1840 +0,0 @@ -// -using System; -using System.Net.Http; -using System.Collections.Generic; -using System.IO; -using System.Text; -using System.Threading.Tasks; -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp; -using Microsoft.CodeAnalysis.CSharp.Syntax; -using Xunit; -using Nustache; -using Nustache.Core; -using Refit; -using Refit.Generator; -using Task = System.Threading.Tasks.Task; -using System.Net; -using System.Reactive.Linq; -using Newtonsoft.Json; -using Newtonsoft.Json.Serialization; -using RichardSzalay.MockHttp; -using static System.Math; -using SomeType = CollisionA.SomeType; -using CollisionB; -using System.Reflection; -using System.Threading; -using System.Net.Http.Headers; - -/* ******** Hey You! ********* - * - * This is a generated file, and gets rewritten every time you build the - * project. If you want to edit it, you need to edit the mustache template - * in the Refit package */ - -#pragma warning disable -namespace Refit.Tests.RefitInternalGenerated -{ - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate)] - sealed class PreserveAttribute : Attribute - { - - // - // Fields - // - public bool AllMembers; - - public bool Conditional; - } -} -#pragma warning restore - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIAmARefitInterfaceButNobodyUsesMe : IAmARefitInterfaceButNobodyUsesMe - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIAmARefitInterfaceButNobodyUsesMe(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IAmARefitInterfaceButNobodyUsesMe.RefitMethod() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("RefitMethod", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmARefitInterfaceButNobodyUsesMe.AnotherRefitMethod() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("AnotherRefitMethod", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmARefitInterfaceButNobodyUsesMe.NoConstantsAllowed() - { - throw new NotImplementedException("Either this method has no Refit HTTP method attribute or you've used something other than a string literal for the 'path' argument."); - } - - /// - Task IAmARefitInterfaceButNobodyUsesMe.SpacesShouldntBreakMe() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("SpacesShouldntBreakMe", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmARefitInterfaceButNobodyUsesMe.ReservedWordsForParameterNames(int @int, string @string, float @long) - { - var arguments = new object[] { @int, @string, @long }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReservedWordsForParameterNames", new Type[] { typeof(int), typeof(string), typeof(float) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIAmHalfRefit : IAmHalfRefit - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIAmHalfRefit(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IAmHalfRefit.Post() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Post", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmHalfRefit.Get() - { - throw new NotImplementedException("Either this method has no Refit HTTP method attribute or you've used something other than a string literal for the 'path' argument."); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIAmInterface : IAmInterface - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIAmInterface(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IAmInterface.Pang() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Pang", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmInterfaceB.Pong() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Pong", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmInterfaceD.Test() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Test", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmInterfaceA.Ping() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Ping", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIAmInterfaceA : IAmInterfaceA - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIAmInterfaceA(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IAmInterfaceA.Ping() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Ping", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIAmInterfaceB : IAmInterfaceB - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIAmInterfaceB(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IAmInterfaceB.Pong() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Pong", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmInterfaceD.Test() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Test", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIAmInterfaceC : IAmInterfaceC - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIAmInterfaceC(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IAmInterfaceC.Pang() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Pang", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmInterfaceB.Pong() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Pong", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmInterfaceD.Test() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Test", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IAmInterfaceA.Ping() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Ping", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIAmInterfaceD : IAmInterfaceD - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIAmInterfaceD(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IAmInterfaceD.Test() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Test", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIApiWithDecimal : IApiWithDecimal - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIApiWithDecimal(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IApiWithDecimal.GetWithDecimal(decimal value) - { - var arguments = new object[] { value }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetWithDecimal", new Type[] { typeof(decimal) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIBodylessApi : IBodylessApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIBodylessApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IBodylessApi.Post() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Post", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IBodylessApi.Get() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IBodylessApi.Head() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Head", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIBoringCrudApi - : IBoringCrudApi - where T : class - - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIBoringCrudApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IBoringCrudApi.Create(T paylod) - { - var arguments = new object[] { paylod }; - var func = requestBuilder.BuildRestResultFuncForMethod("Create", new Type[] { typeof(T) }); - return (Task)func(Client, arguments); - } - - /// - Task> IBoringCrudApi.ReadAll() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadAll", new Type[] { }); - return (Task>)func(Client, arguments); - } - - /// - Task IBoringCrudApi.ReadOne(TKey key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadOne", new Type[] { typeof(TKey) }); - return (Task)func(Client, arguments); - } - - /// - Task IBoringCrudApi.Update(TKey key, T payload) - { - var arguments = new object[] { key, payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Update", new Type[] { typeof(TKey), typeof(T) }); - return (Task)func(Client, arguments); - } - - /// - Task IBoringCrudApi.Delete(TKey key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("Delete", new Type[] { typeof(TKey) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIBrokenWebApi : IBrokenWebApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIBrokenWebApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IBrokenWebApi.PostAValue(string derp) - { - var arguments = new object[] { derp }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostAValue", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIDataApiA : IDataApiA - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIDataApiA(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IDataApiA.PingA() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("PingA", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Copy(DataEntity payload) - { - var arguments = new object[] { payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Copy", new Type[] { typeof(DataEntity) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Create(DataEntity payload) - { - var arguments = new object[] { payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Create", new Type[] { typeof(DataEntity) }); - return (Task)func(Client, arguments); - } - - /// - Task> IDataCrudApi.ReadAll() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadAll", new Type[] { }); - return (Task>)func(Client, arguments); - } - - /// - Task IDataCrudApi.ReadOne(long key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadOne", new Type[] { typeof(long) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Update(long key, DataEntity payload) - { - var arguments = new object[] { key, payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Update", new Type[] { typeof(long), typeof(DataEntity) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Delete(long key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("Delete", new Type[] { typeof(long) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIDataApiB : IDataApiB - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIDataApiB(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IDataApiB.PingB() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("PingB", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Create(DataEntity payload) - { - var arguments = new object[] { payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Create", new Type[] { typeof(DataEntity) }); - return (Task)func(Client, arguments); - } - - /// - Task> IDataCrudApi.ReadAll() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadAll", new Type[] { }); - return (Task>)func(Client, arguments); - } - - /// - Task IDataCrudApi.ReadOne(int key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadOne", new Type[] { typeof(int) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Update(int key, DataEntity payload) - { - var arguments = new object[] { key, payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Update", new Type[] { typeof(int), typeof(DataEntity) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Delete(int key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("Delete", new Type[] { typeof(int) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIDataCrudApi - : IDataCrudApi - where T : class - - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIDataCrudApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IDataCrudApi.Copy(T payload) - { - var arguments = new object[] { payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Copy", new Type[] { typeof(T) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Create(T payload) - { - var arguments = new object[] { payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Create", new Type[] { typeof(T) }); - return (Task)func(Client, arguments); - } - - /// - Task> IDataCrudApi.ReadAll() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadAll", new Type[] { }); - return (Task>)func(Client, arguments); - } - - /// - Task IDataCrudApi.ReadOne(long key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadOne", new Type[] { typeof(long) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Update(long key, T payload) - { - var arguments = new object[] { key, payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Update", new Type[] { typeof(long), typeof(T) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Delete(long key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("Delete", new Type[] { typeof(long) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIDataCrudApi - : IDataCrudApi - where T : class - - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIDataCrudApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IDataCrudApi.Create(T payload) - { - var arguments = new object[] { payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Create", new Type[] { typeof(T) }); - return (Task)func(Client, arguments); - } - - /// - Task> IDataCrudApi.ReadAll() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadAll", new Type[] { }); - return (Task>)func(Client, arguments); - } - - /// - Task IDataCrudApi.ReadOne(TKey key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("ReadOne", new Type[] { typeof(TKey) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Update(TKey key, T payload) - { - var arguments = new object[] { key, payload }; - var func = requestBuilder.BuildRestResultFuncForMethod("Update", new Type[] { typeof(TKey), typeof(T) }); - return (Task)func(Client, arguments); - } - - /// - Task IDataCrudApi.Delete(TKey key) - { - var arguments = new object[] { key }; - var func = requestBuilder.BuildRestResultFuncForMethod("Delete", new Type[] { typeof(TKey) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIGitHubApi : IGitHubApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIGitHubApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IGitHubApi.GetUser(string userName) - { - var arguments = new object[] { userName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUser", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - IObservable IGitHubApi.GetUserObservable(string userName) - { - var arguments = new object[] { userName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUserObservable", new Type[] { typeof(string) }); - return (IObservable)func(Client, arguments); - } - - /// - IObservable IGitHubApi.GetUserCamelCase(string userName) - { - var arguments = new object[] { userName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUserCamelCase", new Type[] { typeof(string) }); - return (IObservable)func(Client, arguments); - } - - /// - Task> IGitHubApi.GetOrgMembers(string orgName) - { - var arguments = new object[] { orgName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetOrgMembers", new Type[] { typeof(string) }); - return (Task>)func(Client, arguments); - } - - /// - Task IGitHubApi.FindUsers(string q) - { - var arguments = new object[] { q }; - var func = requestBuilder.BuildRestResultFuncForMethod("FindUsers", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - Task IGitHubApi.GetIndex() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetIndex", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - IObservable IGitHubApi.GetIndexObservable() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetIndexObservable", new Type[] { }); - return (IObservable)func(Client, arguments); - } - - /// - Task IGitHubApi.NothingToSeeHere() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("NothingToSeeHere", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task> IGitHubApi.NothingToSeeHereWithMetadata() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("NothingToSeeHereWithMetadata", new Type[] { }); - return (Task>)func(Client, arguments); - } - - /// - Task> IGitHubApi.GetUserWithMetadata(string userName) - { - var arguments = new object[] { userName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUserWithMetadata", new Type[] { typeof(string) }); - return (Task>)func(Client, arguments); - } - - /// - IObservable> IGitHubApi.GetUserObservableWithMetadata(string userName) - { - var arguments = new object[] { userName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUserObservableWithMetadata", new Type[] { typeof(string) }); - return (IObservable>)func(Client, arguments); - } - - /// - Task IGitHubApi.CreateUser(User user) - { - var arguments = new object[] { user }; - var func = requestBuilder.BuildRestResultFuncForMethod("CreateUser", new Type[] { typeof(User) }); - return (Task)func(Client, arguments); - } - - /// - Task> IGitHubApi.CreateUserWithMetadata(User user) - { - var arguments = new object[] { user }; - var func = requestBuilder.BuildRestResultFuncForMethod("CreateUserWithMetadata", new Type[] { typeof(User) }); - return (Task>)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIHttpBinApi - : IHttpBinApi - where TResponse : class - where THeader : struct - - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIHttpBinApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IHttpBinApi.Get(TParam param, THeader header) - { - var arguments = new object[] { param, header }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { typeof(TParam), typeof(THeader) }); - return (Task)func(Client, arguments); - } - - /// - Task IHttpBinApi.GetQuery(TParam param) - { - var arguments = new object[] { param }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetQuery", new Type[] { typeof(TParam) }); - return (Task)func(Client, arguments); - } - - /// - Task IHttpBinApi.GetQueryWithIncludeParameterName(TParam param) - { - var arguments = new object[] { param }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetQueryWithIncludeParameterName", new Type[] { typeof(TParam) }); - return (Task)func(Client, arguments); - } - - /// - Task IHttpBinApi.GetQuery1(TParam param) - { - var arguments = new object[] { param }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetQuery1", new Type[] { typeof(TParam) }, new Type[] { typeof(TValue) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIHttpContentApi : IHttpContentApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIHttpContentApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IHttpContentApi.PostFileUpload(HttpContent content) - { - var arguments = new object[] { content }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostFileUpload", new Type[] { typeof(HttpContent) }); - return (Task)func(Client, arguments); - } - - /// - Task> IHttpContentApi.PostFileUploadWithMetadata(HttpContent content) - { - var arguments = new object[] { content }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostFileUploadWithMetadata", new Type[] { typeof(HttpContent) }); - return (Task>)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedResponseTestsIMyAliasService : ResponseTests.IMyAliasService - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedResponseTestsIMyAliasService(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task ResponseTests.IMyAliasService.GetTestObject() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetTestObject", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedAuthenticatedClientHandlerTestsIMyAuthenticatedService : AuthenticatedClientHandlerTests.IMyAuthenticatedService - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedAuthenticatedClientHandlerTestsIMyAuthenticatedService(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task AuthenticatedClientHandlerTests.IMyAuthenticatedService.GetUnauthenticated() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUnauthenticated", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task AuthenticatedClientHandlerTests.IMyAuthenticatedService.GetAuthenticated() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetAuthenticated", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedINamespaceCollisionApi : INamespaceCollisionApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedINamespaceCollisionApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task INamespaceCollisionApi.SomeRequest() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("SomeRequest", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedTestNestedINestedGitHubApi : TestNested.INestedGitHubApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedTestNestedINestedGitHubApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task TestNested.INestedGitHubApi.GetUser(string userName) - { - var arguments = new object[] { userName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUser", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - IObservable TestNested.INestedGitHubApi.GetUserObservable(string userName) - { - var arguments = new object[] { userName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUserObservable", new Type[] { typeof(string) }); - return (IObservable)func(Client, arguments); - } - - /// - IObservable TestNested.INestedGitHubApi.GetUserCamelCase(string userName) - { - var arguments = new object[] { userName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetUserCamelCase", new Type[] { typeof(string) }); - return (IObservable)func(Client, arguments); - } - - /// - Task> TestNested.INestedGitHubApi.GetOrgMembers(string orgName) - { - var arguments = new object[] { orgName }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetOrgMembers", new Type[] { typeof(string) }); - return (Task>)func(Client, arguments); - } - - /// - Task TestNested.INestedGitHubApi.FindUsers(string q) - { - var arguments = new object[] { q }; - var func = requestBuilder.BuildRestResultFuncForMethod("FindUsers", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - Task TestNested.INestedGitHubApi.GetIndex() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetIndex", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - IObservable TestNested.INestedGitHubApi.GetIndexObservable() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetIndexObservable", new Type[] { }); - return (IObservable)func(Client, arguments); - } - - /// - Task TestNested.INestedGitHubApi.NothingToSeeHere() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("NothingToSeeHere", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedINonGenericInterfaceWithGenericMethod : INonGenericInterfaceWithGenericMethod - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedINonGenericInterfaceWithGenericMethod(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task INonGenericInterfaceWithGenericMethod.PostMessage(T message) - { - var arguments = new object[] { message }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostMessage", new Type[] { typeof(T) }, new Type[] { typeof(T) }); - return (Task)func(Client, arguments); - } - - /// - Task INonGenericInterfaceWithGenericMethod.PostMessage(T message, U param1, V param2) - { - var arguments = new object[] { message, param1, param2 }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostMessage", new Type[] { typeof(T), typeof(U), typeof(V) }, new Type[] { typeof(T), typeof(U), typeof(V) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedINpmJs : INpmJs - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedINpmJs(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task INpmJs.GetCongruence() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetCongruence", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIRelativePathApi1 : IRelativePathApi1 - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIRelativePathApi1(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IRelativePathApi1.Get() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIRelativePathApi2 : IRelativePathApi2 - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIRelativePathApi2(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IRelativePathApi2.Get() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIRequestBin : IRequestBin - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIRequestBin(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IRequestBin.Post() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Post", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IRequestBin.PostRawStringDefault(string str) - { - var arguments = new object[] { str }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostRawStringDefault", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - Task IRequestBin.PostRawStringJson(string str) - { - var arguments = new object[] { str }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostRawStringJson", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - Task IRequestBin.PostRawStringUrlEncoded(string str) - { - var arguments = new object[] { str }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostRawStringUrlEncoded", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - Task IRequestBin.PostGeneric(T param) - { - var arguments = new object[] { param }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostGeneric", new Type[] { typeof(T) }, new Type[] { typeof(T) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIRunscopeApi : IRunscopeApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIRunscopeApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IRunscopeApi.UploadStream(Stream stream) - { - var arguments = new object[] { stream }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadStream", new Type[] { typeof(Stream) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadStreamPart(StreamPart stream) - { - var arguments = new object[] { stream }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadStreamPart", new Type[] { typeof(StreamPart) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadBytes(byte[] bytes) - { - var arguments = new object[] { bytes }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadBytes", new Type[] { typeof(byte[]) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadBytesPart(ByteArrayPart bytes) - { - var arguments = new object[] { bytes }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadBytesPart", new Type[] { typeof(ByteArrayPart) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadString(string someString) - { - var arguments = new object[] { someString }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadString", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadFileInfo(IEnumerable fileInfos, FileInfo anotherFile) - { - var arguments = new object[] { fileInfos, anotherFile }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadFileInfo", new Type[] { typeof(IEnumerable), typeof(FileInfo) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadFileInfoPart(IEnumerable fileInfos, FileInfoPart anotherFile) - { - var arguments = new object[] { fileInfos, anotherFile }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadFileInfoPart", new Type[] { typeof(IEnumerable), typeof(FileInfoPart) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadJsonObject(ModelObject theObject) - { - var arguments = new object[] { theObject }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadJsonObject", new Type[] { typeof(ModelObject) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadJsonObjects(IEnumerable theObjects) - { - var arguments = new object[] { theObjects }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadJsonObjects", new Type[] { typeof(IEnumerable) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadMixedObjects(IEnumerable theObjects, AnotherModel anotherModel, FileInfo aFile, AnEnum anEnum, string aString, int anInt) - { - var arguments = new object[] { theObjects, anotherModel, aFile, anEnum, aString, anInt }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadMixedObjects", new Type[] { typeof(IEnumerable), typeof(AnotherModel), typeof(FileInfo), typeof(AnEnum), typeof(string), typeof(int) }); - return (Task)func(Client, arguments); - } - - /// - Task IRunscopeApi.UploadHttpContent(HttpContent content) - { - var arguments = new object[] { content }; - var func = requestBuilder.BuildRestResultFuncForMethod("UploadHttpContent", new Type[] { typeof(HttpContent) }); - return (Task)func(Client, arguments); - } - } -} - -namespace AutoGeneratedIServiceWithoutNamespace -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIServiceWithoutNamespace : IServiceWithoutNamespace - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIServiceWithoutNamespace(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IServiceWithoutNamespace.GetRoot() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetRoot", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IServiceWithoutNamespace.PostRoot() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("PostRoot", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIStreamApi : IStreamApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIStreamApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IStreamApi.GetRemoteFile(string filename) - { - var arguments = new object[] { filename }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetRemoteFile", new Type[] { typeof(string) }); - return (Task)func(Client, arguments); - } - - /// - Task> IStreamApi.GetRemoteFileWithMetadata(string filename) - { - var arguments = new object[] { filename }; - var func = requestBuilder.BuildRestResultFuncForMethod("GetRemoteFileWithMetadata", new Type[] { typeof(string) }); - return (Task>)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedITrimTrailingForwardSlashApi : ITrimTrailingForwardSlashApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedITrimTrailingForwardSlashApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task ITrimTrailingForwardSlashApi.Get() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIUseOverloadedGenericMethods - : IUseOverloadedGenericMethods - where TResponse : class - where THeader : struct - - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIUseOverloadedGenericMethods(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IUseOverloadedGenericMethods.Get() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IUseOverloadedGenericMethods.Get(TParam param, THeader header) - { - var arguments = new object[] { param, header }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { typeof(TParam), typeof(THeader) }); - return (Task)func(Client, arguments); - } - - /// - Task IUseOverloadedGenericMethods.Get(THeader param, TParam header) - { - var arguments = new object[] { param, header }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { typeof(THeader), typeof(TParam) }); - return (Task)func(Client, arguments); - } - - /// - Task IUseOverloadedGenericMethods.Get(int httpstatuscode) - { - var arguments = new object[] { httpstatuscode }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { typeof(int) }); - return (Task)func(Client, arguments); - } - - /// - Task IUseOverloadedGenericMethods.Get(int someVal) - { - var arguments = new object[] { someVal }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { typeof(int) }, new Type[] { typeof(TValue) }); - return (Task)func(Client, arguments); - } - - /// - Task IUseOverloadedGenericMethods.Get(TInput input) - { - var arguments = new object[] { input }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { typeof(TInput) }, new Type[] { typeof(TValue), typeof(TInput) }); - return (Task)func(Client, arguments); - } - - /// - Task IUseOverloadedGenericMethods.Get(TInput1 input1, TInput2 input2) - { - var arguments = new object[] { input1, input2 }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { typeof(TInput1), typeof(TInput2) }, new Type[] { typeof(TInput1), typeof(TInput2) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIUseOverloadedMethods : IUseOverloadedMethods - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIUseOverloadedMethods(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IUseOverloadedMethods.Get() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { }); - return (Task)func(Client, arguments); - } - - /// - Task IUseOverloadedMethods.Get(int httpstatuscode) - { - var arguments = new object[] { httpstatuscode }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { typeof(int) }); - return (Task)func(Client, arguments); - } - } -} - -namespace Refit.Tests -{ - using Refit.Tests.RefitInternalGenerated; - - /// - [global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - [global::System.Diagnostics.DebuggerNonUserCode] - [Preserve] - [global::System.Reflection.Obfuscation(Exclude=true)] - partial class AutoGeneratedIValidApi : IValidApi - { - /// - public HttpClient Client { get; protected set; } - readonly IRequestBuilder requestBuilder; - - /// - public AutoGeneratedIValidApi(HttpClient client, IRequestBuilder requestBuilder) - { - Client = client; - this.requestBuilder = requestBuilder; - } - - /// - Task IValidApi.Get() - { - var arguments = new object[] { }; - var func = requestBuilder.BuildRestResultFuncForMethod("Get", new Type[] { }); - return (Task)func(Client, arguments); - } - } -} From a688dd1a9357343cbc22d7248ca0db5c041057b0 Mon Sep 17 00:00:00 2001 From: pit Date: Thu, 6 Jun 2019 00:02:43 -0400 Subject: [PATCH 4/6] fix RefitStubs generation and compilation for Refit.Tests --- Refit.Tests/Refit.Tests.csproj | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/Refit.Tests/Refit.Tests.csproj b/Refit.Tests/Refit.Tests.csproj index 45936ca9c..1b810969d 100644 --- a/Refit.Tests/Refit.Tests.csproj +++ b/Refit.Tests/Refit.Tests.csproj @@ -25,11 +25,10 @@ - - + - + $(MSBuildThisFileDirectory)RefitStubs.Net46.cs $(MSBuildThisFileDirectory)RefitStubs.NetCore2.cs @@ -45,9 +44,15 @@ + + + + - + $(MSBuildThisFileDirectory)RefitStubs.Net46.cs $(MSBuildThisFileDirectory)RefitStubs.NetCore2.cs @@ -63,6 +68,12 @@ + + + + From 7af485851500cf093b2eeaecd397ed0913ceadb6 Mon Sep 17 00:00:00 2001 From: pit Date: Fri, 7 Jun 2019 22:34:38 -0400 Subject: [PATCH 5/6] Better test RefitStubs generation --- Refit.Tests/Refit.Tests.csproj | 44 +++++++--------------------------- 1 file changed, 9 insertions(+), 35 deletions(-) diff --git a/Refit.Tests/Refit.Tests.csproj b/Refit.Tests/Refit.Tests.csproj index 1b810969d..7f0a86c14 100644 --- a/Refit.Tests/Refit.Tests.csproj +++ b/Refit.Tests/Refit.Tests.csproj @@ -28,51 +28,25 @@ - + - $(MSBuildThisFileDirectory)RefitStubs.Net46.cs - $(MSBuildThisFileDirectory)RefitStubs.NetCore2.cs + $(MSBuildThisFileDirectory)RefitStubs.$(TargetFramework).cs $(MSBuildThisFileDirectory)$(IntermediateOutputPath)RefitParams.rsp + $(MSBuildThisFileDirectory)../InterfaceStubGenerator.App/bin/$(ConfigurationName)/$(TargetFramework)/InterfaceStubGenerator.App + "$(OutputStubsFile)" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)" "$(RootNamespace)" - - "$(MSBuildThisFileDirectory)..\InterfaceStubGenerator.App\bin\$(ConfigurationName)\net461\InterfaceStubGenerator.App.exe" "$(OutputStubsFile)" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)" "$(RootNamespace)" - - - mono "$(MSBuildThisFileDirectory)../InterfaceStubGenerator.App/bin/$(Configuration)/net461/InterfaceStubGenerator.App.exe" "$(OutputStubsFile)" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)" "$(RootNamespace)" - - - - - - - - - - - - $(MSBuildThisFileDirectory)RefitStubs.Net46.cs - $(MSBuildThisFileDirectory)RefitStubs.NetCore2.cs - $(MSBuildThisFileDirectory)$(IntermediateOutputPath)RefitParams.rsp - - - - dotnet "$(MSBuildThisFileDirectory)..\InterfaceStubGenerator.App\bin\$(ConfigurationName)\netcoreapp2.1\InterfaceStubGenerator.App.dll" "$(OutputStubsFile)" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)" "$(RootNamespace)" - - - dotnet "$(MSBuildThisFileDirectory)../InterfaceStubGenerator.App/bin/$(Configuration)/netcoreapp2.1/InterfaceStubGenerator.App.dll" "$(OutputStubsFile)" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)" "$(RootNamespace)" + dotnet "$(RefitExecutableBase.Replace('/', $([System.IO.Path]::DirectorySeparatorChar.ToString()))).dll" $(RefitExecCmdParams) + "$(RefitExecutableBase.Replace(`/`, $([System.IO.Path]::DirectorySeparatorChar.ToString()))).exe" $(RefitExecCmdParams) - - + From c94dd3a199268dbcff8a9e5a67b181577ddb22ad Mon Sep 17 00:00:00 2001 From: pit Date: Sat, 8 Jun 2019 11:37:53 -0400 Subject: [PATCH 6/6] Support for indipendent RefitStub executble framework from test build framework --- Refit.Tests/Refit.Tests.csproj | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Refit.Tests/Refit.Tests.csproj b/Refit.Tests/Refit.Tests.csproj index 7f0a86c14..750402db0 100644 --- a/Refit.Tests/Refit.Tests.csproj +++ b/Refit.Tests/Refit.Tests.csproj @@ -30,16 +30,18 @@ + netcoreapp2.1 + net461 $(MSBuildThisFileDirectory)RefitStubs.$(TargetFramework).cs $(MSBuildThisFileDirectory)$(IntermediateOutputPath)RefitParams.rsp - $(MSBuildThisFileDirectory)../InterfaceStubGenerator.App/bin/$(ConfigurationName)/$(TargetFramework)/InterfaceStubGenerator.App + $(MSBuildThisFileDirectory)../InterfaceStubGenerator.App/bin/$(ConfigurationName)/$(RefitStubExecPlatform)/InterfaceStubGenerator.App "$(OutputStubsFile)" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)" "$(RootNamespace)" - dotnet "$(RefitExecutableBase.Replace('/', $([System.IO.Path]::DirectorySeparatorChar.ToString()))).dll" $(RefitExecCmdParams) - "$(RefitExecutableBase.Replace(`/`, $([System.IO.Path]::DirectorySeparatorChar.ToString()))).exe" $(RefitExecCmdParams)