Exclude System.Runtime.CompilerServices.NullableContextAttribute (#66)
* HttpClient * . * . * .
This commit is contained in:
@@ -32,6 +32,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProxyInterfaceConsumerForAk
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProxyInterfaceConsumerViaNuGet", "src-examples\ProxyInterfaceConsumerViaNuGet\ProxyInterfaceConsumerViaNuGet.csproj", "{1EA000E4-6103-4577-8D98-BDDA3BE458A2}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProxyInterfaceConsumerViaNuGet", "src-examples\ProxyInterfaceConsumerViaNuGet\ProxyInterfaceConsumerViaNuGet.csproj", "{1EA000E4-6103-4577-8D98-BDDA3BE458A2}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IHttpClient", "src\IHttpClient\IHttpClient.csproj", "{38C2BB6E-EE23-4C4F-B8D5-A2AD592DE5E3}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleAppIHttpClient", "src-examples\ConsoleAppIHttpClient\ConsoleAppIHttpClient.csproj", "{3E93C092-0E42-4200-B71A-5EEE410FE1F5}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@@ -74,6 +78,18 @@ Global
|
|||||||
{1EA000E4-6103-4577-8D98-BDDA3BE458A2}.DebugAttach|Any CPU.Build.0 = Debug|Any CPU
|
{1EA000E4-6103-4577-8D98-BDDA3BE458A2}.DebugAttach|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{1EA000E4-6103-4577-8D98-BDDA3BE458A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{1EA000E4-6103-4577-8D98-BDDA3BE458A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{1EA000E4-6103-4577-8D98-BDDA3BE458A2}.Release|Any CPU.Build.0 = Release|Any CPU
|
{1EA000E4-6103-4577-8D98-BDDA3BE458A2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{38C2BB6E-EE23-4C4F-B8D5-A2AD592DE5E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{38C2BB6E-EE23-4C4F-B8D5-A2AD592DE5E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{38C2BB6E-EE23-4C4F-B8D5-A2AD592DE5E3}.DebugAttach|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{38C2BB6E-EE23-4C4F-B8D5-A2AD592DE5E3}.DebugAttach|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{38C2BB6E-EE23-4C4F-B8D5-A2AD592DE5E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{38C2BB6E-EE23-4C4F-B8D5-A2AD592DE5E3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{3E93C092-0E42-4200-B71A-5EEE410FE1F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{3E93C092-0E42-4200-B71A-5EEE410FE1F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{3E93C092-0E42-4200-B71A-5EEE410FE1F5}.DebugAttach|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{3E93C092-0E42-4200-B71A-5EEE410FE1F5}.DebugAttach|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{3E93C092-0E42-4200-B71A-5EEE410FE1F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{3E93C092-0E42-4200-B71A-5EEE410FE1F5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
@@ -85,6 +101,8 @@ Global
|
|||||||
{5F7DA2C5-B908-4B57-9F5F-BADF1216D89C} = {38BA087F-EDA1-4F8A-A140-85B84791B815}
|
{5F7DA2C5-B908-4B57-9F5F-BADF1216D89C} = {38BA087F-EDA1-4F8A-A140-85B84791B815}
|
||||||
{590908DF-A813-467A-94E4-3500020D0D54} = {38BA087F-EDA1-4F8A-A140-85B84791B815}
|
{590908DF-A813-467A-94E4-3500020D0D54} = {38BA087F-EDA1-4F8A-A140-85B84791B815}
|
||||||
{1EA000E4-6103-4577-8D98-BDDA3BE458A2} = {38BA087F-EDA1-4F8A-A140-85B84791B815}
|
{1EA000E4-6103-4577-8D98-BDDA3BE458A2} = {38BA087F-EDA1-4F8A-A140-85B84791B815}
|
||||||
|
{38C2BB6E-EE23-4C4F-B8D5-A2AD592DE5E3} = {ED3DA9DD-1E07-444B-A2D7-2DBA280F96D4}
|
||||||
|
{3E93C092-0E42-4200-B71A-5EEE410FE1F5} = {38BA087F-EDA1-4F8A-A140-85B84791B815}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {585F071D-051D-441C-9C6B-226D9E15A1F5}
|
SolutionGuid = {585F071D-051D-441C-9C6B-226D9E15A1F5}
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,13 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\src\IHttpClient\IHttpClient.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
using System.Net.Http;
|
||||||
|
using System.Net.Http.Json;
|
||||||
|
|
||||||
|
var httpClient = new HttpClient();
|
||||||
|
var httpClientProxy = new HttpClientProxy(httpClient);
|
||||||
|
|
||||||
|
var result = await httpClientProxy.GetAsync("https://www.google.nl");
|
||||||
|
var todo = await httpClientProxy.GetFromJsonAsync<Todo>("https://jsonplaceholder.typicode.com/todos/1");
|
||||||
|
var postResult = await httpClientProxy.PostAsJsonAsync("https://jsonplaceholder.typicode.com/todos", new Todo { Id = 123 });
|
||||||
|
var patchResult = await httpClientProxy.PatchAsJsonAsync("https://jsonplaceholder.typicode.com/todos", new Todo { Id = 400 });
|
||||||
|
var putResult = await httpClientProxy.PutAsJsonAsync("https://jsonplaceholder.typicode.com/todos", new Todo { Id = 444 });
|
||||||
|
|
||||||
|
int x = 0;
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
public class Todo
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace DifferentNamespace
|
namespace ProxyInterfaceConsumer
|
||||||
{
|
{
|
||||||
public class Address
|
public class Address
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
namespace ProxyInterfaceConsumer.Http
|
using System.Net.Http;
|
||||||
|
|
||||||
|
namespace ProxyInterfaceConsumer.Http;
|
||||||
|
|
||||||
|
[ProxyInterfaceGenerator.Proxy(typeof(HttpClient), true)]
|
||||||
|
public partial interface IHttpClient : IHttpMessageInvoker
|
||||||
{
|
{
|
||||||
[ProxyInterfaceGenerator.Proxy(typeof(System.Net.Http.HttpClient), true)]
|
}
|
||||||
public partial interface IHttpClient : IHttpMessageInvoker
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
[ProxyInterfaceGenerator.Proxy(typeof(System.Net.Http.HttpMessageInvoker))]
|
[ProxyInterfaceGenerator.Proxy(typeof(HttpMessageInvoker))]
|
||||||
public partial interface IHttpMessageInvoker
|
public partial interface IHttpMessageInvoker
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,108 @@
|
|||||||
|
using System;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Net.Http.Json;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using System.Text.Json.Serialization.Metadata;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ProxyInterfaceConsumer.Http;
|
||||||
|
|
||||||
|
public static class IHttpClientExtensions
|
||||||
|
{
|
||||||
|
#region PostAsJsonAsync
|
||||||
|
public static Task<HttpResponseMessage> PostAsJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.PostAsJsonAsync(requestUri, value, options, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PostAsJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.PostAsJsonAsync(requestUri, value, options, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PostAsJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, TValue value, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
return client._Instance.PostAsJsonAsync(requestUri, value, options: null, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PostAsJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, TValue value, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
return client._Instance.PostAsJsonAsync(requestUri, value, options: null, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PostAsJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, TValue value, JsonTypeInfo<TValue> jsonTypeInfo, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.PostAsJsonAsync(requestUri, value, jsonTypeInfo, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PostAsJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, TValue value, JsonTypeInfo<TValue> jsonTypeInfo, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.PostAsJsonAsync(requestUri, value, jsonTypeInfo, cancellationToken);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region GetFromJsonAsync
|
||||||
|
public static Task<object?> GetFromJsonAsync(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, Type type, JsonSerializerOptions? options, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync(requestUri, type, options, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<object?> GetFromJsonAsync(this IHttpClient client, Uri? requestUri, Type type, JsonSerializerOptions? options, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync(requestUri, type, options, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<TValue?> GetFromJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, JsonSerializerOptions? options, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync<TValue>(requestUri, options, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<TValue?> GetFromJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, JsonSerializerOptions? options, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync<TValue>(requestUri, options, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<object?> GetFromJsonAsync(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, Type type, JsonSerializerContext context, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync(requestUri, type, context, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<object?> GetFromJsonAsync(this IHttpClient client, Uri? requestUri, Type type, JsonSerializerContext context, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync(requestUri, type, context, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<TValue?> GetFromJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, JsonTypeInfo<TValue> jsonTypeInfo, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync(requestUri, jsonTypeInfo, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<TValue?> GetFromJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, JsonTypeInfo<TValue> jsonTypeInfo, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync(requestUri, jsonTypeInfo, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<object?> GetFromJsonAsync(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, Type type, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync(requestUri, type, options: null, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<object?> GetFromJsonAsync(this IHttpClient client, Uri? requestUri, Type type, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync(requestUri, type, options: null, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<TValue?> GetFromJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync<TValue>(requestUri, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<TValue?> GetFromJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync<TValue>(requestUri, cancellationToken);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
@@ -1,5 +1,3 @@
|
|||||||
using DifferentNamespace;
|
|
||||||
|
|
||||||
namespace ProxyInterfaceConsumer
|
namespace ProxyInterfaceConsumer
|
||||||
{
|
{
|
||||||
[ProxyInterfaceGenerator.Proxy(typeof(Address))]
|
[ProxyInterfaceGenerator.Proxy(typeof(Address))]
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using DifferentNamespace;
|
|
||||||
|
|
||||||
namespace ProxyInterfaceConsumer
|
namespace ProxyInterfaceConsumer
|
||||||
{
|
{
|
||||||
@@ -71,12 +70,12 @@ namespace ProxyInterfaceConsumer
|
|||||||
c++;
|
c++;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int In_Out_Ref2(in Address a, out Address b, ref Address c)
|
//public int In_Out_Ref2(in Address a, out Address b, ref Address c)
|
||||||
{
|
//{
|
||||||
b = new Address();
|
// b = new Address();
|
||||||
c.HouseNumber = 11;
|
// c.HouseNumber = 11;
|
||||||
return 404;
|
// return 404;
|
||||||
}
|
//}
|
||||||
|
|
||||||
public void Void()
|
public void Void()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,86 +1,101 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Net.Http.Json;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using DifferentNamespace;
|
using System.Threading.Tasks;
|
||||||
|
using ProxyInterfaceConsumer.Http;
|
||||||
|
|
||||||
namespace ProxyInterfaceConsumer
|
namespace ProxyInterfaceConsumer;
|
||||||
|
|
||||||
|
public class Program
|
||||||
{
|
{
|
||||||
public class Program
|
private static JsonSerializerOptions JsonSerializerOptions = new ()
|
||||||
{
|
{
|
||||||
private static JsonSerializerOptions JsonSerializerOptions = new ()
|
WriteIndented = true
|
||||||
|
};
|
||||||
|
|
||||||
|
public static async Task Main()
|
||||||
|
{
|
||||||
|
var h = new HttpClient();
|
||||||
|
var ph = new HttpClientProxy(h);
|
||||||
|
|
||||||
|
var result = await ph.GetAsync("https://www.google.nl");
|
||||||
|
var todo = await ph.GetFromJsonAsync<Todo>("https://jsonplaceholder.typicode.com/todos/1");
|
||||||
|
|
||||||
|
var postResult = await h.PostAsJsonAsync<Todo>("https://jsonplaceholder.typicode.com/todos", new Todo { Id = 123 });
|
||||||
|
|
||||||
|
var t = new TestProxy(new Test());
|
||||||
|
|
||||||
|
IPersonT<int> pT = new PersonTProxy<int>(new PersonT<int>());
|
||||||
|
pT.TVal = 1;
|
||||||
|
Console.WriteLine(JsonSerializer.Serialize(pT, JsonSerializerOptions));
|
||||||
|
Console.WriteLine(new string('-', 80));
|
||||||
|
|
||||||
|
//IPersonTT<int, Program> pTT = new PersonTTProxy<int, Program>(new PersonTT<int, Program>());
|
||||||
|
//pTT.TVal1 = 42;
|
||||||
|
//pTT.TVal2 = new Program();
|
||||||
|
//Console.WriteLine(JsonSerializer.Serialize(pTT, JsonSerializerOptions));
|
||||||
|
//Console.WriteLine(new string('-', 80));
|
||||||
|
|
||||||
|
var ap = new AddressProxy(new Address { HouseNumber = 42 });
|
||||||
|
ap.HouseNumber = -1;
|
||||||
|
ap.MyEvent += delegate (object x, EventArgs a)
|
||||||
{
|
{
|
||||||
WriteIndented = true
|
|
||||||
};
|
};
|
||||||
|
|
||||||
public static void Main()
|
IPerson p = new PersonProxy(new Person());
|
||||||
{
|
p.Name = "test";
|
||||||
var t = new TestProxy(new Test());
|
p.HelloWorld("stef");
|
||||||
|
// p.Address = ap;
|
||||||
|
|
||||||
IPersonT<int> pT = new PersonTProxy<int>(new PersonT<int>());
|
Console.WriteLine("DefaultValue " + p.DefaultValue());
|
||||||
pT.TVal = 1;
|
Console.WriteLine("DefaultValue " + p.DefaultValue(42));
|
||||||
Console.WriteLine(JsonSerializer.Serialize(pT, JsonSerializerOptions));
|
|
||||||
Console.WriteLine(new string('-', 80));
|
|
||||||
|
|
||||||
//IPersonTT<int, Program> pTT = new PersonTTProxy<int, Program>(new PersonTT<int, Program>());
|
Console.WriteLine(JsonSerializer.Serialize(p, JsonSerializerOptions));
|
||||||
//pTT.TVal1 = 42;
|
|
||||||
//pTT.TVal2 = new Program();
|
|
||||||
//Console.WriteLine(JsonSerializer.Serialize(pTT, JsonSerializerOptions));
|
|
||||||
//Console.WriteLine(new string('-', 80));
|
|
||||||
|
|
||||||
var ap = new AddressProxy(new Address { HouseNumber = 42 });
|
|
||||||
ap.HouseNumber = -1;
|
|
||||||
ap.MyEvent += delegate (object x, EventArgs a)
|
|
||||||
{
|
|
||||||
};
|
|
||||||
|
|
||||||
IPerson p = new PersonProxy(new Person());
|
|
||||||
p.Name = "test";
|
|
||||||
p.HelloWorld("stef");
|
|
||||||
// p.Address = ap;
|
|
||||||
|
|
||||||
Console.WriteLine("DefaultValue " + p.DefaultValue());
|
|
||||||
Console.WriteLine("DefaultValue " + p.DefaultValue(42));
|
|
||||||
|
|
||||||
Console.WriteLine(JsonSerializer.Serialize(p, JsonSerializerOptions));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public class Test
|
public class Todo
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Test
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public Clazz C { get; }
|
||||||
|
|
||||||
|
public IList<Clazz> Cs { get; set; }
|
||||||
|
|
||||||
|
public int AddString(string s)
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
return 600;
|
||||||
|
|
||||||
public Clazz C { get; }
|
|
||||||
|
|
||||||
public IList<Clazz> Cs { get; set; }
|
|
||||||
|
|
||||||
public int AddString(string s)
|
|
||||||
{
|
|
||||||
return 600;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Test AddTest(Test t)
|
|
||||||
{
|
|
||||||
return new Test();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Clazz AddClazz(Clazz c)
|
|
||||||
{
|
|
||||||
return new Clazz();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class Clazz
|
public Test AddTest(Test t)
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
return new Test();
|
||||||
}
|
}
|
||||||
|
|
||||||
[ProxyInterfaceGenerator.Proxy(typeof(Test))]
|
public Clazz AddClazz(Clazz c)
|
||||||
public partial interface ITest
|
|
||||||
{
|
{
|
||||||
|
return new Clazz();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[ProxyInterfaceGenerator.Proxy(typeof(Clazz))]
|
public sealed class Clazz
|
||||||
public partial interface IClazz
|
{
|
||||||
{
|
public string Name { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[ProxyInterfaceGenerator.Proxy(typeof(Test))]
|
||||||
|
public partial interface ITest
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ProxyInterfaceGenerator.Proxy(typeof(Clazz))]
|
||||||
|
public partial interface IClazz
|
||||||
|
{
|
||||||
}
|
}
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>net7.0</TargetFramework>
|
|
||||||
<OutputType>Exe</OutputType>
|
|
||||||
<Nullable>enable</Nullable>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Remove="IPersonTT.cs" />
|
|
||||||
<Compile Remove="PersonTT.cs" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="AutoMapper" Version="10.1.1" />
|
|
||||||
<PackageReference Include="Mapster" Version="7.3.0" />
|
|
||||||
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.3">
|
|
||||||
<PrivateAssets>all</PrivateAssets>
|
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="3.10.0" />
|
|
||||||
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.10.0" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\..\src\ProxyInterfaceSourceGenerator\ProxyInterfaceSourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="NewFolder\" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
// ReSharper disable once CheckNamespace
|
||||||
|
namespace System.Net.Http;
|
||||||
|
|
||||||
|
[ProxyInterfaceGenerator.Proxy(typeof(HttpClient), true)]
|
||||||
|
public partial interface IHttpClient : IHttpMessageInvoker
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<Version>0.0.1-preview-01</Version>
|
||||||
|
<TargetFrameworks>netstandard2.1;net6.0;net7.0;net8.0</TargetFrameworks>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<LangVersion>latest</LangVersion>
|
||||||
|
<ProjectGuid>{38C2BB6E-EE23-4C4F-B8D5-A2AD592DE5E3}</ProjectGuid>
|
||||||
|
<Authors>Stef Heyenrath</Authors>
|
||||||
|
<Description></Description>
|
||||||
|
<Title>IHttpClient</Title>
|
||||||
|
<PackageId>IHttpClient</PackageId>
|
||||||
|
<Description>This project uses source generation to generate an IHttpClient interface and HttpClientProxy from the HttpClient to make it injectable and unit-testable.</Description>
|
||||||
|
<PackageTags>HttpClient;interface;IHttpClient;Proxy;HttpClientProxy</PackageTags>
|
||||||
|
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||||
|
<!--<PackageReleaseNotes>$([System.IO.File]::ReadAllText("$(MSBuildProjectDirectory)/../../PackageReleaseNotes.txt"))</PackageReleaseNotes>-->
|
||||||
|
<PackageProjectUrl>https://github.com/StefH/ProxyInterfaceGenerator/src/IHttpClient</PackageProjectUrl>
|
||||||
|
<RepositoryType>git</RepositoryType>
|
||||||
|
<RepositoryUrl>https://github.com/StefH/ProxyInterfaceGenerator/src/IHttpClient</RepositoryUrl>
|
||||||
|
<PackageReadmeFile>PackageReadme.md</PackageReadmeFile>
|
||||||
|
<PackageIcon>ihttpclient-icon.png</PackageIcon>
|
||||||
|
<!--<IncludeBuildOutput>false</IncludeBuildOutput>
|
||||||
|
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
|
||||||
|
<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)Generated</CompilerGeneratedFilesOutputPath>
|
||||||
|
<DevelopmentDependency>true</DevelopmentDependency>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Configurations>Debug;Release</Configurations>-->
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
|
||||||
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="../../resources/ihttpclient-icon.png" Pack="true" PackagePath="" />
|
||||||
|
<None Include="PackageReadme.md" Pack="true" PackagePath="" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.1' or '$(TargetFramework)' == 'net6.0' ">
|
||||||
|
<PackageReference Include="System.Net.Http.Json" Version="6.0.0" />
|
||||||
|
<PackageReference Include="StringSyntaxPolyfill" Version="1.1.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\ProxyInterfaceSourceGenerator\ProxyInterfaceSourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,173 @@
|
|||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using System.Text.Json.Serialization.Metadata;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
// ReSharper disable once CheckNamespace
|
||||||
|
namespace System.Net.Http.Json;
|
||||||
|
|
||||||
|
/// <inheritdoc cref="HttpClientJsonExtensions"/>
|
||||||
|
public static class IHttpClientJsonExtensions
|
||||||
|
{
|
||||||
|
#region PostAsJsonAsync
|
||||||
|
public static Task<HttpResponseMessage> PostAsJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.PostAsJsonAsync(requestUri, value, options, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PostAsJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.PostAsJsonAsync(requestUri, value, options, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PostAsJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, TValue value, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
return client._Instance.PostAsJsonAsync(requestUri, value, options: null, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PostAsJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, TValue value, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
return client._Instance.PostAsJsonAsync(requestUri, value, options: null, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PostAsJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, TValue value, JsonTypeInfo<TValue> jsonTypeInfo, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.PostAsJsonAsync(requestUri, value, jsonTypeInfo, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PostAsJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, TValue value, JsonTypeInfo<TValue> jsonTypeInfo, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.PostAsJsonAsync(requestUri, value, jsonTypeInfo, cancellationToken);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#if NET7_0_OR_GREATER
|
||||||
|
#region PatchAsJsonAsync
|
||||||
|
public static Task<HttpResponseMessage> PatchAsJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.PatchAsJsonAsync(requestUri, value, options, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PatchAsJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.PatchAsJsonAsync(requestUri, value, options, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PatchAsJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, TValue value, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
return client._Instance.PatchAsJsonAsync(requestUri, value, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PatchAsJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, TValue value, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
return client._Instance.PatchAsJsonAsync(requestUri, value, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PatchAsJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, TValue value, JsonTypeInfo<TValue> jsonTypeInfo, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.PatchAsJsonAsync(requestUri, value, jsonTypeInfo, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PatchAsJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, TValue value, JsonTypeInfo<TValue> jsonTypeInfo, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.PatchAsJsonAsync(requestUri, value, jsonTypeInfo, cancellationToken);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#region PutAsJsonAsync
|
||||||
|
public static Task<HttpResponseMessage> PutAsJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.PutAsJsonAsync(requestUri, value, options, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PutAsJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, TValue value, JsonSerializerOptions? options = null, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.PutAsJsonAsync(requestUri, value, options, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PutAsJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, TValue value, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
return client._Instance.PutAsJsonAsync(requestUri, value, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PutAsJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, TValue value, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
return client._Instance.PutAsJsonAsync(requestUri, value, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PutAsJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, TValue value, JsonTypeInfo<TValue> jsonTypeInfo, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.PutAsJsonAsync(requestUri, value, jsonTypeInfo, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<HttpResponseMessage> PutAsJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, TValue value, JsonTypeInfo<TValue> jsonTypeInfo, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.PutAsJsonAsync(requestUri, value, jsonTypeInfo, cancellationToken);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region GetFromJsonAsync
|
||||||
|
public static Task<object?> GetFromJsonAsync(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, Type type, JsonSerializerOptions? options, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync(requestUri, type, options, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<object?> GetFromJsonAsync(this IHttpClient client, Uri? requestUri, Type type, JsonSerializerOptions? options, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync(requestUri, type, options, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<TValue?> GetFromJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, JsonSerializerOptions? options, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync<TValue>(requestUri, options, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<TValue?> GetFromJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, JsonSerializerOptions? options, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync<TValue>(requestUri, options, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<object?> GetFromJsonAsync(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, Type type, JsonSerializerContext context, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync(requestUri, type, context, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<object?> GetFromJsonAsync(this IHttpClient client, Uri? requestUri, Type type, JsonSerializerContext context, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync(requestUri, type, context, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<TValue?> GetFromJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, JsonTypeInfo<TValue> jsonTypeInfo, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync(requestUri, jsonTypeInfo, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<TValue?> GetFromJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, JsonTypeInfo<TValue> jsonTypeInfo, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync(requestUri, jsonTypeInfo, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<object?> GetFromJsonAsync(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, Type type, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync(requestUri, type, options: null, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<object?> GetFromJsonAsync(this IHttpClient client, Uri? requestUri, Type type, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync(requestUri, type, options: null, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<TValue?> GetFromJsonAsync<TValue>(this IHttpClient client, [StringSyntax(StringSyntaxAttribute.Uri)] string? requestUri, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync<TValue>(requestUri, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Task<TValue?> GetFromJsonAsync<TValue>(this IHttpClient client, Uri? requestUri, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
return client._Instance.GetFromJsonAsync<TValue>(requestUri, cancellationToken);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
// ReSharper disable once CheckNamespace
|
||||||
|
namespace System.Net.Http;
|
||||||
|
|
||||||
|
[ProxyInterfaceGenerator.Proxy(typeof(HttpMessageInvoker))]
|
||||||
|
public partial interface IHttpMessageInvoker
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
## Info
|
||||||
|
|
||||||
|
This project uses source generation to generate an `IHttpClient` interface and `HttpClientProxy` from the `HttpClient` to make it injectable and unit-testable.
|
||||||
|
|
||||||
|
All the methods and properties from the `HttpClient` are replicated to `IHttpClient`.
|
||||||
|
|
||||||
|
## Use it
|
||||||
|
``` c#
|
||||||
|
HttpClient httpClient = new HttpClient();
|
||||||
|
IHttpClient httpClientProxy = new HttpClientProxy(httpClient);
|
||||||
|
|
||||||
|
var result = await httpClientProxy.GetAsync("https://www.google.nl");
|
||||||
|
var todo = await httpClientProxy.GetFromJsonAsync<Todo>("https://jsonplaceholder.typicode.com/todos/1");
|
||||||
|
var postResult = await httpClientProxy.PostAsJsonAsync("https://jsonplaceholder.typicode.com/todos", new Todo { Id = 123 });
|
||||||
|
var patchResult = await httpClientProxy.PatchAsJsonAsync("https://jsonplaceholder.typicode.com/todos", new Todo { Id = 400 });
|
||||||
|
var putResult = await httpClientProxy.PutAsJsonAsync("https://jsonplaceholder.typicode.com/todos", new Todo { Id = 444 });
|
||||||
|
```
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
namespace ProxyInterfaceSourceGenerator.Constants;
|
|
||||||
|
|
||||||
internal static class InternalClassNames
|
|
||||||
{
|
|
||||||
public const string NullableAttribute = "System.Runtime.CompilerServices.NullableAttribute";
|
|
||||||
|
|
||||||
public const string AsyncStateMachineAttribute = "System.Runtime.CompilerServices.AsyncStateMachineAttribute";
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
using Microsoft.CodeAnalysis;
|
using Microsoft.CodeAnalysis;
|
||||||
using Microsoft.CodeAnalysis.CSharp;
|
using Microsoft.CodeAnalysis.CSharp;
|
||||||
using ProxyInterfaceSourceGenerator.Constants;
|
|
||||||
|
|
||||||
namespace ProxyInterfaceSourceGenerator.Extensions;
|
namespace ProxyInterfaceSourceGenerator.Extensions;
|
||||||
|
|
||||||
@@ -8,8 +7,9 @@ internal static class SymbolExtensions
|
|||||||
{
|
{
|
||||||
private static readonly string[] ExcludedAttributes =
|
private static readonly string[] ExcludedAttributes =
|
||||||
{
|
{
|
||||||
InternalClassNames.AsyncStateMachineAttribute ,
|
"System.Runtime.CompilerServices.NullableAttribute",
|
||||||
InternalClassNames.NullableAttribute
|
"System.Runtime.CompilerServices.NullableContextAttribute",
|
||||||
|
"System.Runtime.CompilerServices.AsyncStateMachineAttribute"
|
||||||
};
|
};
|
||||||
|
|
||||||
public static string GetAttributesPrefix(this ISymbol symbol)
|
public static string GetAttributesPrefix(this ISymbol symbol)
|
||||||
|
|||||||
@@ -198,7 +198,10 @@ using System;
|
|||||||
private string GeneratePublicMethods(ClassSymbol targetClassSymbol, bool proxyBaseClasses)
|
private string GeneratePublicMethods(ClassSymbol targetClassSymbol, bool proxyBaseClasses)
|
||||||
{
|
{
|
||||||
var str = new StringBuilder();
|
var str = new StringBuilder();
|
||||||
foreach (var method in MemberHelper.GetPublicMethods(targetClassSymbol, proxyBaseClasses))
|
|
||||||
|
var methods = MemberHelper.GetPublicMethods(targetClassSymbol, proxyBaseClasses);
|
||||||
|
|
||||||
|
foreach (var method in methods)
|
||||||
{
|
{
|
||||||
var methodParameters = new List<string>();
|
var methodParameters = new List<string>();
|
||||||
var invokeParameters = new List<string>();
|
var invokeParameters = new List<string>();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Version>0.0.36</Version>
|
<Version>0.0.37</Version>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>netstandard2.0</TargetFramework>
|
||||||
<ProjectGuid>{12344228-91F4-4502-9595-39584E5ABB34}</ProjectGuid>
|
<ProjectGuid>{12344228-91F4-4502-9595-39584E5ABB34}</ProjectGuid>
|
||||||
<LangVersion>10</LangVersion>
|
<LangVersion>10</LangVersion>
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ internal static class MemberHelper
|
|||||||
}
|
}
|
||||||
|
|
||||||
var ownMembers = membersQuery.ToList();
|
var ownMembers = membersQuery.ToList();
|
||||||
var ownPropertyNames = ownMembers.Select(x => x.Name);
|
var ownMemberNames = ownMembers.Select(x => x.Name);
|
||||||
|
|
||||||
if (!proxyBaseClasses)
|
if (!proxyBaseClasses)
|
||||||
{
|
{
|
||||||
@@ -106,7 +106,7 @@ internal static class MemberHelper
|
|||||||
{
|
{
|
||||||
var baseMembers = baseType.GetMembers().OfType<T>()
|
var baseMembers = baseType.GetMembers().OfType<T>()
|
||||||
.Where(m => m.DeclaredAccessibility == Accessibility.Public)
|
.Where(m => m.DeclaredAccessibility == Accessibility.Public)
|
||||||
.Where(x => !ownPropertyNames.Contains(x.Name));
|
.Where(x => !ownMemberNames.Contains(x.Name));
|
||||||
|
|
||||||
foreach (var filter in filters)
|
foreach (var filter in filters)
|
||||||
{
|
{
|
||||||
|
|||||||
+5
@@ -23,6 +23,11 @@ namespace ProxyInterfaceSourceGeneratorTests.Source
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
_Instance.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+134
@@ -0,0 +1,134 @@
|
|||||||
|
//----------------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by https://github.com/StefH/ProxyInterfaceSourceGenerator.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace ProxyInterfaceSourceGeneratorTests.Source
|
||||||
|
{
|
||||||
|
public partial interface IHttpClient
|
||||||
|
{
|
||||||
|
new System.Net.Http.HttpClient _Instance { get; }
|
||||||
|
|
||||||
|
System.Net.IWebProxy DefaultProxy { get; set; }
|
||||||
|
|
||||||
|
System.Net.Http.Headers.HttpRequestHeaders DefaultRequestHeaders { get; }
|
||||||
|
|
||||||
|
System.Version DefaultRequestVersion { get; set; }
|
||||||
|
|
||||||
|
System.Net.Http.HttpVersionPolicy DefaultVersionPolicy { get; set; }
|
||||||
|
|
||||||
|
System.Uri? BaseAddress { get; set; }
|
||||||
|
|
||||||
|
System.TimeSpan Timeout { get; set; }
|
||||||
|
|
||||||
|
long MaxResponseContentBufferSize { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<string> GetStringAsync(string? requestUri);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<string> GetStringAsync(System.Uri? requestUri);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<string> GetStringAsync(string? requestUri, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<string> GetStringAsync(System.Uri? requestUri, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<byte[]> GetByteArrayAsync(string? requestUri);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<byte[]> GetByteArrayAsync(System.Uri? requestUri);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<byte[]> GetByteArrayAsync(string? requestUri, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<byte[]> GetByteArrayAsync(System.Uri? requestUri, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.IO.Stream> GetStreamAsync(string? requestUri);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.IO.Stream> GetStreamAsync(string? requestUri, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.IO.Stream> GetStreamAsync(System.Uri? requestUri);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.IO.Stream> GetStreamAsync(System.Uri? requestUri, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> GetAsync(string? requestUri);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> GetAsync(System.Uri? requestUri);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> GetAsync(string? requestUri, System.Net.Http.HttpCompletionOption completionOption);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> GetAsync(System.Uri? requestUri, System.Net.Http.HttpCompletionOption completionOption);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> GetAsync(string? requestUri, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> GetAsync(System.Uri? requestUri, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> GetAsync(string? requestUri, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> GetAsync(System.Uri? requestUri, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PostAsync(string? requestUri, System.Net.Http.HttpContent? content);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PostAsync(System.Uri? requestUri, System.Net.Http.HttpContent? content);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PostAsync(string? requestUri, System.Net.Http.HttpContent? content, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PostAsync(System.Uri? requestUri, System.Net.Http.HttpContent? content, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PutAsync(string? requestUri, System.Net.Http.HttpContent? content);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PutAsync(System.Uri? requestUri, System.Net.Http.HttpContent? content);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PutAsync(string? requestUri, System.Net.Http.HttpContent? content, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PutAsync(System.Uri? requestUri, System.Net.Http.HttpContent? content, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PatchAsync(string? requestUri, System.Net.Http.HttpContent? content);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PatchAsync(System.Uri? requestUri, System.Net.Http.HttpContent? content);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PatchAsync(string? requestUri, System.Net.Http.HttpContent? content, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PatchAsync(System.Uri? requestUri, System.Net.Http.HttpContent? content, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> DeleteAsync(string? requestUri);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> DeleteAsync(System.Uri? requestUri);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> DeleteAsync(string? requestUri, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> DeleteAsync(System.Uri? requestUri, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
[System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")]
|
||||||
|
System.Net.Http.HttpResponseMessage Send(System.Net.Http.HttpRequestMessage request);
|
||||||
|
|
||||||
|
[System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")]
|
||||||
|
System.Net.Http.HttpResponseMessage Send(System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption);
|
||||||
|
|
||||||
|
[System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")]
|
||||||
|
System.Net.Http.HttpResponseMessage Send(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
[System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")]
|
||||||
|
System.Net.Http.HttpResponseMessage Send(System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> SendAsync(System.Net.Http.HttpRequestMessage request);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> SendAsync(System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> SendAsync(System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
void CancelPendingRequests();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#nullable restore
|
||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
//----------------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by https://github.com/StefH/ProxyInterfaceSourceGenerator.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace ProxyInterfaceSourceGeneratorTests.Source
|
||||||
|
{
|
||||||
|
public partial interface IHttpMessageInvoker
|
||||||
|
{
|
||||||
|
System.Net.Http.HttpMessageInvoker _Instance { get; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")]
|
||||||
|
System.Net.Http.HttpResponseMessage Send(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
void Dispose();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#nullable restore
|
||||||
+2
@@ -22,6 +22,8 @@ namespace ProxyInterfaceSourceGeneratorTests.Source
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void Dispose();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+2
@@ -54,6 +54,8 @@ namespace ProxyInterfaceSourceGeneratorTests.Source
|
|||||||
|
|
||||||
System.Threading.Tasks.Task<string?> Method3Async();
|
System.Threading.Tasks.Task<string?> Method3Async();
|
||||||
|
|
||||||
|
void Dispose();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+5
@@ -108,6 +108,11 @@ namespace ProxyInterfaceSourceGeneratorTests.Source
|
|||||||
return result__57684656;
|
return result__57684656;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
_Instance.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+410
@@ -0,0 +1,410 @@
|
|||||||
|
//----------------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by https://github.com/StefH/ProxyInterfaceSourceGenerator.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace ProxyInterfaceSourceGeneratorTests.Source
|
||||||
|
{
|
||||||
|
public partial class HttpClientProxy : ProxyInterfaceSourceGeneratorTests.Source.HttpMessageInvokerProxy, IHttpClient
|
||||||
|
{
|
||||||
|
public new System.Net.Http.HttpClient _Instance { get; }
|
||||||
|
public System.Net.Http.HttpMessageInvoker _InstanceHttpMessageInvoker { get; }
|
||||||
|
|
||||||
|
public System.Net.IWebProxy DefaultProxy { get => System.Net.Http.HttpClient.DefaultProxy; set => System.Net.Http.HttpClient.DefaultProxy = value; }
|
||||||
|
|
||||||
|
public System.Net.Http.Headers.HttpRequestHeaders DefaultRequestHeaders { get => _Instance.DefaultRequestHeaders; }
|
||||||
|
|
||||||
|
public System.Version DefaultRequestVersion { get => _Instance.DefaultRequestVersion; set => _Instance.DefaultRequestVersion = value; }
|
||||||
|
|
||||||
|
public System.Net.Http.HttpVersionPolicy DefaultVersionPolicy { get => _Instance.DefaultVersionPolicy; set => _Instance.DefaultVersionPolicy = value; }
|
||||||
|
|
||||||
|
public System.Uri? BaseAddress { get => _Instance.BaseAddress; set => _Instance.BaseAddress = value; }
|
||||||
|
|
||||||
|
public System.TimeSpan Timeout { get => _Instance.Timeout; set => _Instance.Timeout = value; }
|
||||||
|
|
||||||
|
public long MaxResponseContentBufferSize { get => _Instance.MaxResponseContentBufferSize; set => _Instance.MaxResponseContentBufferSize = value; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<string> GetStringAsync(string? requestUri)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
var result_1347886741 = _Instance.GetStringAsync(requestUri_);
|
||||||
|
return result_1347886741;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<string> GetStringAsync(System.Uri? requestUri)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
var result_1347886741 = _Instance.GetStringAsync(requestUri_);
|
||||||
|
return result_1347886741;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<string> GetStringAsync(string? requestUri, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result_1347886741 = _Instance.GetStringAsync(requestUri_, cancellationToken_);
|
||||||
|
return result_1347886741;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<string> GetStringAsync(System.Uri? requestUri, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result_1347886741 = _Instance.GetStringAsync(requestUri_, cancellationToken_);
|
||||||
|
return result_1347886741;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<byte[]> GetByteArrayAsync(string? requestUri)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
var result__1359336953 = _Instance.GetByteArrayAsync(requestUri_);
|
||||||
|
return result__1359336953;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<byte[]> GetByteArrayAsync(System.Uri? requestUri)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
var result__1359336953 = _Instance.GetByteArrayAsync(requestUri_);
|
||||||
|
return result__1359336953;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<byte[]> GetByteArrayAsync(string? requestUri, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result__1359336953 = _Instance.GetByteArrayAsync(requestUri_, cancellationToken_);
|
||||||
|
return result__1359336953;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<byte[]> GetByteArrayAsync(System.Uri? requestUri, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result__1359336953 = _Instance.GetByteArrayAsync(requestUri_, cancellationToken_);
|
||||||
|
return result__1359336953;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.IO.Stream> GetStreamAsync(string? requestUri)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
var result_355326142 = _Instance.GetStreamAsync(requestUri_);
|
||||||
|
return result_355326142;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.IO.Stream> GetStreamAsync(string? requestUri, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result_355326142 = _Instance.GetStreamAsync(requestUri_, cancellationToken_);
|
||||||
|
return result_355326142;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.IO.Stream> GetStreamAsync(System.Uri? requestUri)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
var result_355326142 = _Instance.GetStreamAsync(requestUri_);
|
||||||
|
return result_355326142;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.IO.Stream> GetStreamAsync(System.Uri? requestUri, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result_355326142 = _Instance.GetStreamAsync(requestUri_, cancellationToken_);
|
||||||
|
return result_355326142;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> GetAsync(string? requestUri)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
var result_1805284658 = _Instance.GetAsync(requestUri_);
|
||||||
|
return result_1805284658;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> GetAsync(System.Uri? requestUri)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
var result_1805284658 = _Instance.GetAsync(requestUri_);
|
||||||
|
return result_1805284658;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> GetAsync(string? requestUri, System.Net.Http.HttpCompletionOption completionOption)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
System.Net.Http.HttpCompletionOption completionOption_ = completionOption;
|
||||||
|
var result_1805284658 = _Instance.GetAsync(requestUri_, completionOption_);
|
||||||
|
return result_1805284658;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> GetAsync(System.Uri? requestUri, System.Net.Http.HttpCompletionOption completionOption)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
System.Net.Http.HttpCompletionOption completionOption_ = completionOption;
|
||||||
|
var result_1805284658 = _Instance.GetAsync(requestUri_, completionOption_);
|
||||||
|
return result_1805284658;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> GetAsync(string? requestUri, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result_1805284658 = _Instance.GetAsync(requestUri_, cancellationToken_);
|
||||||
|
return result_1805284658;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> GetAsync(System.Uri? requestUri, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result_1805284658 = _Instance.GetAsync(requestUri_, cancellationToken_);
|
||||||
|
return result_1805284658;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> GetAsync(string? requestUri, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
System.Net.Http.HttpCompletionOption completionOption_ = completionOption;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result_1805284658 = _Instance.GetAsync(requestUri_, completionOption_, cancellationToken_);
|
||||||
|
return result_1805284658;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> GetAsync(System.Uri? requestUri, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
System.Net.Http.HttpCompletionOption completionOption_ = completionOption;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result_1805284658 = _Instance.GetAsync(requestUri_, completionOption_, cancellationToken_);
|
||||||
|
return result_1805284658;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PostAsync(string? requestUri, System.Net.Http.HttpContent? content)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
System.Net.Http.HttpContent? content_ = content;
|
||||||
|
var result__1705712948 = _Instance.PostAsync(requestUri_, content_);
|
||||||
|
return result__1705712948;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PostAsync(System.Uri? requestUri, System.Net.Http.HttpContent? content)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
System.Net.Http.HttpContent? content_ = content;
|
||||||
|
var result__1705712948 = _Instance.PostAsync(requestUri_, content_);
|
||||||
|
return result__1705712948;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PostAsync(string? requestUri, System.Net.Http.HttpContent? content, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
System.Net.Http.HttpContent? content_ = content;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result__1705712948 = _Instance.PostAsync(requestUri_, content_, cancellationToken_);
|
||||||
|
return result__1705712948;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PostAsync(System.Uri? requestUri, System.Net.Http.HttpContent? content, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
System.Net.Http.HttpContent? content_ = content;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result__1705712948 = _Instance.PostAsync(requestUri_, content_, cancellationToken_);
|
||||||
|
return result__1705712948;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PutAsync(string? requestUri, System.Net.Http.HttpContent? content)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
System.Net.Http.HttpContent? content_ = content;
|
||||||
|
var result_182918739 = _Instance.PutAsync(requestUri_, content_);
|
||||||
|
return result_182918739;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PutAsync(System.Uri? requestUri, System.Net.Http.HttpContent? content)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
System.Net.Http.HttpContent? content_ = content;
|
||||||
|
var result_182918739 = _Instance.PutAsync(requestUri_, content_);
|
||||||
|
return result_182918739;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PutAsync(string? requestUri, System.Net.Http.HttpContent? content, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
System.Net.Http.HttpContent? content_ = content;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result_182918739 = _Instance.PutAsync(requestUri_, content_, cancellationToken_);
|
||||||
|
return result_182918739;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PutAsync(System.Uri? requestUri, System.Net.Http.HttpContent? content, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
System.Net.Http.HttpContent? content_ = content;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result_182918739 = _Instance.PutAsync(requestUri_, content_, cancellationToken_);
|
||||||
|
return result_182918739;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PatchAsync(string? requestUri, System.Net.Http.HttpContent? content)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
System.Net.Http.HttpContent? content_ = content;
|
||||||
|
var result_910894592 = _Instance.PatchAsync(requestUri_, content_);
|
||||||
|
return result_910894592;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PatchAsync(System.Uri? requestUri, System.Net.Http.HttpContent? content)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
System.Net.Http.HttpContent? content_ = content;
|
||||||
|
var result_910894592 = _Instance.PatchAsync(requestUri_, content_);
|
||||||
|
return result_910894592;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PatchAsync(string? requestUri, System.Net.Http.HttpContent? content, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
System.Net.Http.HttpContent? content_ = content;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result_910894592 = _Instance.PatchAsync(requestUri_, content_, cancellationToken_);
|
||||||
|
return result_910894592;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> PatchAsync(System.Uri? requestUri, System.Net.Http.HttpContent? content, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
System.Net.Http.HttpContent? content_ = content;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result_910894592 = _Instance.PatchAsync(requestUri_, content_, cancellationToken_);
|
||||||
|
return result_910894592;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> DeleteAsync(string? requestUri)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
var result_534537427 = _Instance.DeleteAsync(requestUri_);
|
||||||
|
return result_534537427;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> DeleteAsync(System.Uri? requestUri)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
var result_534537427 = _Instance.DeleteAsync(requestUri_);
|
||||||
|
return result_534537427;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> DeleteAsync(string? requestUri, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
string? requestUri_ = requestUri;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result_534537427 = _Instance.DeleteAsync(requestUri_, cancellationToken_);
|
||||||
|
return result_534537427;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> DeleteAsync(System.Uri? requestUri, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
System.Uri? requestUri_ = requestUri;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result_534537427 = _Instance.DeleteAsync(requestUri_, cancellationToken_);
|
||||||
|
return result_534537427;
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")]
|
||||||
|
public System.Net.Http.HttpResponseMessage Send(System.Net.Http.HttpRequestMessage request)
|
||||||
|
{
|
||||||
|
System.Net.Http.HttpRequestMessage request_ = request;
|
||||||
|
var result__989347188 = _Instance.Send(request_);
|
||||||
|
return result__989347188;
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")]
|
||||||
|
public System.Net.Http.HttpResponseMessage Send(System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption)
|
||||||
|
{
|
||||||
|
System.Net.Http.HttpRequestMessage request_ = request;
|
||||||
|
System.Net.Http.HttpCompletionOption completionOption_ = completionOption;
|
||||||
|
var result__989347188 = _Instance.Send(request_, completionOption_);
|
||||||
|
return result__989347188;
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")]
|
||||||
|
public override System.Net.Http.HttpResponseMessage Send(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
System.Net.Http.HttpRequestMessage request_ = request;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result__989347188 = _Instance.Send(request_, cancellationToken_);
|
||||||
|
return result__989347188;
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")]
|
||||||
|
public System.Net.Http.HttpResponseMessage Send(System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
System.Net.Http.HttpRequestMessage request_ = request;
|
||||||
|
System.Net.Http.HttpCompletionOption completionOption_ = completionOption;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result__989347188 = _Instance.Send(request_, completionOption_, cancellationToken_);
|
||||||
|
return result__989347188;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> SendAsync(System.Net.Http.HttpRequestMessage request)
|
||||||
|
{
|
||||||
|
System.Net.Http.HttpRequestMessage request_ = request;
|
||||||
|
var result__1161702976 = _Instance.SendAsync(request_);
|
||||||
|
return result__1161702976;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
System.Net.Http.HttpRequestMessage request_ = request;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result__1161702976 = _Instance.SendAsync(request_, cancellationToken_);
|
||||||
|
return result__1161702976;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> SendAsync(System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption)
|
||||||
|
{
|
||||||
|
System.Net.Http.HttpRequestMessage request_ = request;
|
||||||
|
System.Net.Http.HttpCompletionOption completionOption_ = completionOption;
|
||||||
|
var result__1161702976 = _Instance.SendAsync(request_, completionOption_);
|
||||||
|
return result__1161702976;
|
||||||
|
}
|
||||||
|
|
||||||
|
public System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> SendAsync(System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
System.Net.Http.HttpRequestMessage request_ = request;
|
||||||
|
System.Net.Http.HttpCompletionOption completionOption_ = completionOption;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result__1161702976 = _Instance.SendAsync(request_, completionOption_, cancellationToken_);
|
||||||
|
return result__1161702976;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CancelPendingRequests()
|
||||||
|
{
|
||||||
|
_Instance.CancelPendingRequests();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public HttpClientProxy(System.Net.Http.HttpClient instance) : base(instance)
|
||||||
|
{
|
||||||
|
_Instance = instance;
|
||||||
|
_InstanceHttpMessageInvoker = instance;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#nullable restore
|
||||||
+59
@@ -0,0 +1,59 @@
|
|||||||
|
//----------------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by https://github.com/StefH/ProxyInterfaceSourceGenerator.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace ProxyInterfaceSourceGeneratorTests.Source
|
||||||
|
{
|
||||||
|
public partial class HttpMessageInvokerProxy : IHttpMessageInvoker
|
||||||
|
{
|
||||||
|
public System.Net.Http.HttpMessageInvoker _Instance { get; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[System.Runtime.Versioning.UnsupportedOSPlatformAttribute("browser")]
|
||||||
|
public virtual System.Net.Http.HttpResponseMessage Send(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
System.Net.Http.HttpRequestMessage request_ = request;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result__989347188 = _Instance.Send(request_, cancellationToken_);
|
||||||
|
return result__989347188;
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
System.Net.Http.HttpRequestMessage request_ = request;
|
||||||
|
System.Threading.CancellationToken cancellationToken_ = cancellationToken;
|
||||||
|
var result__1161702976 = _Instance.SendAsync(request_, cancellationToken_);
|
||||||
|
return result__1161702976;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
_Instance.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public HttpMessageInvokerProxy(System.Net.Http.HttpMessageInvoker instance)
|
||||||
|
{
|
||||||
|
_Instance = instance;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#nullable restore
|
||||||
@@ -448,4 +448,86 @@ public class ProxyInterfaceSourceGeneratorTest
|
|||||||
|
|
||||||
c.Should().Be(101);
|
c.Should().Be(101);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void GenerateFiles_HttpClient()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var attributeFilename = "ProxyInterfaceGenerator.Extra.g.cs";
|
||||||
|
var interfaceIHttpClientFilename = "ProxyInterfaceSourceGeneratorTests.Source.IHttpClient.g.cs";
|
||||||
|
var proxyClassIHttpClientFilename = "System.Net.Http.HttpClientProxy.g.cs";
|
||||||
|
var interfaceIHttpMessageInvokerFilename = "ProxyInterfaceSourceGeneratorTests.Source.IHttpMessageInvoker.g.cs";
|
||||||
|
var proxyClassIHttpMessageInvokerFilename = "System.Net.Http.HttpMessageInvokerProxy.g.cs";
|
||||||
|
|
||||||
|
var pathIHttpClient = "./Source/IHttpClient.cs";
|
||||||
|
var sourceFileIHttpClient = new SourceFile
|
||||||
|
{
|
||||||
|
Path = pathIHttpClient,
|
||||||
|
Text = File.ReadAllText(pathIHttpClient),
|
||||||
|
AttributeToAddToInterface = new ExtraAttribute
|
||||||
|
{
|
||||||
|
Name = "ProxyInterfaceGenerator.Proxy",
|
||||||
|
ArgumentList = "typeof(System.Net.Http.HttpClient)"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var pathIHttpMessageInvoker = "./Source/IHttpMessageInvoker.cs";
|
||||||
|
var sourceFileIHttpMessageInvoker = new SourceFile
|
||||||
|
{
|
||||||
|
Path = pathIHttpMessageInvoker,
|
||||||
|
Text = File.ReadAllText(pathIHttpMessageInvoker),
|
||||||
|
AttributeToAddToInterface = new ExtraAttribute
|
||||||
|
{
|
||||||
|
Name = "ProxyInterfaceGenerator.Proxy",
|
||||||
|
ArgumentList = "typeof(System.Net.Http.HttpMessageInvoker)"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = _sut.Execute(new[] { sourceFileIHttpClient, sourceFileIHttpMessageInvoker });
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
result.Valid.Should().BeTrue();
|
||||||
|
result.Files.Should().HaveCount(5);
|
||||||
|
|
||||||
|
// Assert attribute
|
||||||
|
var attribute = result.Files[0].SyntaxTree;
|
||||||
|
attribute.FilePath.Should().EndWith(attributeFilename);
|
||||||
|
|
||||||
|
|
||||||
|
// Assert interface IHttpClient
|
||||||
|
var interfaceIHttpClient = result.Files[1].SyntaxTree;
|
||||||
|
interfaceIHttpClient.FilePath.Should().EndWith(interfaceIHttpClientFilename);
|
||||||
|
|
||||||
|
var interfaceCodeIHttpClient = interfaceIHttpClient.ToString();
|
||||||
|
if (Write) File.WriteAllText($"../../../Destination/{interfaceIHttpClientFilename}", interfaceCodeIHttpClient);
|
||||||
|
interfaceCodeIHttpClient.Should().NotBeNullOrEmpty().And.Be(File.ReadAllText($"../../../Destination/{interfaceIHttpClientFilename}"));
|
||||||
|
|
||||||
|
|
||||||
|
// Assert interface IHttpMessageInvoker
|
||||||
|
var interfaceIMessageInvoker = result.Files[2].SyntaxTree;
|
||||||
|
interfaceIMessageInvoker.FilePath.Should().EndWith(interfaceIHttpMessageInvokerFilename);
|
||||||
|
|
||||||
|
var interfaceCodeIMessageInvoker = interfaceIMessageInvoker.ToString();
|
||||||
|
if (Write) File.WriteAllText($"../../../Destination/{interfaceIHttpMessageInvokerFilename}", interfaceCodeIMessageInvoker);
|
||||||
|
interfaceCodeIMessageInvoker.Should().NotBeNullOrEmpty().And.Be(File.ReadAllText($"../../../Destination/{interfaceIHttpMessageInvokerFilename}"));
|
||||||
|
|
||||||
|
|
||||||
|
// Assert Proxy IHttpClient
|
||||||
|
var proxyClassIHttpClient = result.Files[3].SyntaxTree;
|
||||||
|
proxyClassIHttpClient.FilePath.Should().EndWith(proxyClassIHttpClientFilename);
|
||||||
|
|
||||||
|
var proxyCodeIHttpClient = proxyClassIHttpClient.ToString();
|
||||||
|
if (Write) File.WriteAllText($"../../../Destination/{proxyClassIHttpClientFilename}", proxyCodeIHttpClient);
|
||||||
|
proxyCodeIHttpClient.Should().NotBeNullOrEmpty().And.Be(File.ReadAllText($"../../../Destination/{proxyClassIHttpClientFilename}"));
|
||||||
|
|
||||||
|
|
||||||
|
// Assert Proxy IHttpMessageInvoker
|
||||||
|
var proxyClassIMessageInvoker = result.Files[4].SyntaxTree;
|
||||||
|
proxyClassIMessageInvoker.FilePath.Should().EndWith(proxyClassIHttpMessageInvokerFilename);
|
||||||
|
|
||||||
|
var proxyIMessageInvoker = proxyClassIMessageInvoker.ToString();
|
||||||
|
if (Write) File.WriteAllText($"../../../Destination/{proxyClassIHttpMessageInvokerFilename}", proxyIMessageInvoker);
|
||||||
|
proxyIMessageInvoker.Should().NotBeNullOrEmpty().And.Be(File.ReadAllText($"../../../Destination/{proxyClassIHttpMessageInvokerFilename}"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -5,5 +5,10 @@ namespace ProxyInterfaceSourceGeneratorTests.Source
|
|||||||
public bool IsAlive { get; set; }
|
public bool IsAlive { get; set; }
|
||||||
|
|
||||||
public string GetterOnly => "x";
|
public string GetterOnly => "x";
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
namespace ProxyInterfaceSourceGeneratorTests.Source;
|
||||||
|
|
||||||
|
public partial interface IHttpClient : IHttpMessageInvoker
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
namespace ProxyInterfaceSourceGeneratorTests.Source;
|
||||||
|
|
||||||
|
public partial interface IHttpMessageInvoker
|
||||||
|
{
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user