Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions samples/OcelotGateway/OcelotGateway.csproj
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net5.0</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
<PackageReference Include="Ocelot" Version="14.0.11" />
<PackageReference Include="Ocelot" Version="15.0.6" />
</ItemGroup>

<ItemGroup>
Expand Down
9 changes: 4 additions & 5 deletions src/GrpcJsonTranscoder/DownStreamContextExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public static async Task HandleGrpcRequestAsync(this DownstreamContext context,
{
var methodPath = context.DownstreamReRoute.DownstreamPathTemplate.Value;
var grpcAssemblyResolver = context.HttpContext.RequestServices.GetService<GrpcAssemblyResolver>();
var methodDescriptor = grpcAssemblyResolver.FindMethodDescriptor(methodPath.Split('/').Last().ToUpperInvariant());
var methodDescriptor = grpcAssemblyResolver.FindMethodDescriptor(methodPath.TrimStart('/').Replace("/", ".").Last().ToUpperInvariant());

if (methodDescriptor == null)
{
Expand All @@ -55,7 +55,7 @@ public static async Task HandleGrpcRequestAsync(this DownstreamContext context,
logger.LogInformation($"Request object data is {requestJsonData}");

var loadBalancerFactory = context.HttpContext.RequestServices.GetService<ILoadBalancerFactory>();
var loadBalancerResponse = await loadBalancerFactory.Get(context.DownstreamReRoute, context.Configuration.ServiceProviderConfiguration);
var loadBalancerResponse = loadBalancerFactory.Get(context.DownstreamReRoute, context.Configuration.ServiceProviderConfiguration);
var serviceHostPort = await loadBalancerResponse.Data.Lease(context);

var downstreamHost = $"{serviceHostPort.Data.DownstreamHost}:{serviceHostPort.Data.DownstreamPort}";
Expand All @@ -77,14 +77,13 @@ public static async Task HandleGrpcRequestAsync(this DownstreamContext context,
{
client = new MethodDescriptorCaller(channel);
}

var concreteObject = JsonConvert.DeserializeObject(requestJsonData, methodDescriptor.InputType.ClrType);
var concreteObject = Google.Protobuf.JsonParser.Default.Parse(upstreamHeaders["x-grpc-body-data"], methodDescriptor.InputType);
var result = await client.InvokeAsync(methodDescriptor, context.HttpContext.GetRequestHeaders(), concreteObject);
logger.LogDebug($"gRPC response called with {JsonConvert.SerializeObject(result)}");

var jsonSerializer = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() };
var response = new OkResponse<GrpcHttpContent>(new GrpcHttpContent(JsonConvert.SerializeObject(result, jsonSerializer)));

context.HttpContext.Response.ContentLength = response.Data.ReadAsByteArrayAsync().Result.Length;
var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = response.Data
Expand Down
2 changes: 1 addition & 1 deletion src/GrpcJsonTranscoder/Grpc/GrpcAssemblyResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ private ConcurrentDictionary<string, MethodDescriptor> GetMethodDescriptors(para
foreach (var method in svr.Methods)
{
_logger.LogInformation($"Add method name #{method.Name.ToUpper()} into the assembly resolver.");
methodDescriptorDic.TryAdd(method.Name.ToUpper(), method);
methodDescriptorDic.TryAdd(method.FullName.ToUpper(), method);
}
}
}
Expand Down
22 changes: 11 additions & 11 deletions src/GrpcJsonTranscoder/GrpcJsonTranscoder.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net5.0</TargetFramework>
<!--<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>GrpcJsonTranscoder.pfx</AssemblyOriginatorKeyFile>-->
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
Expand All @@ -17,16 +17,16 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.11.4" />
<PackageReference Include="Grpc.Core" Version="2.27.0" />
<PackageReference Include="Grpc.Reflection" Version="2.27.0" />
<PackageReference Include="Ocelot" Version="14.0.11" />
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Http.Extensions" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.2" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="Google.Protobuf" Version="3.19.1" />
<PackageReference Include="Grpc.Core" Version="2.42.0" />
<PackageReference Include="Grpc.Reflection" Version="2.42.0" />
<PackageReference Include="Ocelot" Version="15.0.6" />
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Http.Extensions" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.2" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup>

</Project>