Fix: Support both HTTP and HTTPS channel credentials

This commit is contained in:
masoodafar-web
2025-12-07 17:04:02 +03:30
parent 17f8346a87
commit 419bcbdf7a

View File

@@ -132,27 +132,28 @@ public static class ConfigureServices
var credentials = CallCredentials.FromInterceptor(async (context, metadata) =>
{
var provider = serviceProvider.GetRequiredService<ITokenProvider>();
// var accessToken = await provider.RequestAccessToken();
// accessToken.TryGetToken(out var token);
var token = await provider.GetTokenAsync();
if (!string.IsNullOrEmpty(token))
{
// Console.WriteLine($"Authorization Bearer {token.Value}");
metadata.Add("Authorization", $"Bearer {token}");
}
await Task.CompletedTask;
});
// SslCredentials is used here because this channel is using TLS.
// CallCredentials can't be used with ChannelCredentials.Insecure on non-TLS channels.
// تشخیص HTTP یا HTTPS
var isHttps = address.StartsWith("https://", StringComparison.OrdinalIgnoreCase);
var channelCredentials = isHttps
? ChannelCredentials.Create(new SslCredentials(), credentials)
: ChannelCredentials.Create(ChannelCredentials.Insecure, credentials);
var channel = GrpcChannel.ForAddress(address, new GrpcChannelOptions
{
UnsafeUseInsecureChannelCallCredentials = true,
Credentials = ChannelCredentials.Create(new SslCredentials(), credentials),
UnsafeUseInsecureChannelCallCredentials = !isHttps, // فقط برای HTTP
Credentials = channelCredentials,
HttpClient = httpClient,
MaxReceiveMessageSize = 1000 * 1024 * 1024, // 1 GB
MaxSendMessageSize = 1000 * 1024 * 1024 // 1 GB
MaxReceiveMessageSize = 1000 * 1024 * 1024,
MaxSendMessageSize = 1000 * 1024 * 1024
});
return channel.Intercept(new ErrorHandlerInterceptor());
}