mirror of
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
synced 2025-07-15 23:13:32 +08:00
feat(openai): 移除 JWT 工具类
This commit is contained in:
parent
e356449b67
commit
07429761cb
@ -40,7 +40,6 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="JWT" Version="9.0.3" />
|
||||
<PackageReference Include="SKIT.FlurlHttpClient.Common" Version="2.5.0" />
|
||||
</ItemGroup>
|
||||
|
||||
|
@ -1,27 +0,0 @@
|
||||
using System;
|
||||
using JWT;
|
||||
using JWT.Algorithms;
|
||||
using JWT.Serializers;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.OpenAI.Utilities
|
||||
{
|
||||
internal static class JwtUtility
|
||||
{
|
||||
private static readonly Lazy<IJwtEncoder> _encoder = new Lazy<IJwtEncoder>(() =>
|
||||
{
|
||||
#pragma warning disable CS0618
|
||||
IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
|
||||
#pragma warning restore CS0618
|
||||
IJsonSerializer serializer = new JsonNetSerializer(new JsonSerializer() { NullValueHandling = NullValueHandling.Ignore });
|
||||
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
|
||||
IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);
|
||||
return encoder;
|
||||
}, isThreadSafe: true);
|
||||
|
||||
public static string EncodeWithHS256(object payload, string secret)
|
||||
{
|
||||
return _encoder.Value.Encode(payload, secret);
|
||||
}
|
||||
}
|
||||
}
|
@ -125,42 +125,5 @@ namespace SKIT.FlurlHttpClient.Wechat.OpenAI
|
||||
throw new WechatOpenAIException(ex.Message, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 异步发起请求。
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="flurlRequest"></param>
|
||||
/// <param name="data"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<T> SendRequestWithUrlEncodedAsync<T>(IFlurlRequest flurlRequest, object? data = null, CancellationToken cancellationToken = default)
|
||||
where T : WechatOpenAIResponse, new()
|
||||
{
|
||||
if (flurlRequest == null) throw new ArgumentNullException(nameof(flurlRequest));
|
||||
|
||||
try
|
||||
{
|
||||
if (data is WechatOpenAIRequest.Serialization.IEncryptedUrlEncoded)
|
||||
{
|
||||
string jwt = Utilities.JwtUtility.EncodeWithHS256(payload: data, secret: Credentials.EncodingAESKey!);
|
||||
data = new { query = jwt };
|
||||
}
|
||||
|
||||
using IFlurlResponse flurlResponse = await flurlRequest
|
||||
.WithClient(FlurlClient)
|
||||
.AllowAnyHttpStatus()
|
||||
.SendUrlEncodedAsync(flurlRequest.Verb, data, cancellationToken);
|
||||
return await WrapResponseWithJsonAsync<T>(flurlResponse, cancellationToken);
|
||||
}
|
||||
catch (FlurlHttpTimeoutException ex)
|
||||
{
|
||||
throw new Exceptions.WechatOpenAIRequestTimeoutException(ex.Message, ex);
|
||||
}
|
||||
catch (FlurlHttpException ex)
|
||||
{
|
||||
throw new WechatOpenAIException(ex.Message, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,10 +10,6 @@ namespace SKIT.FlurlHttpClient.Wechat.OpenAI
|
||||
public interface IEncryptedXmlable
|
||||
{
|
||||
}
|
||||
|
||||
public interface IEncryptedUrlEncoded
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -1,26 +0,0 @@
|
||||
using Xunit;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.OpenAI.UnitTests
|
||||
{
|
||||
public class TestCase_JwtUtilityTests
|
||||
{
|
||||
[Fact(DisplayName = "测试用例:JWT HS256 编码")]
|
||||
public void TestJwtEncodeWithHS256()
|
||||
{
|
||||
object payload = new
|
||||
{
|
||||
uid = "xjlsj33lasfaf",
|
||||
data = new
|
||||
{
|
||||
q = "在微信智言与微信智聆两大技术的支持下,微信AI团队推出了“微信对话开放平台”和“腾讯小微”智能硬件两大核心产品。微信支付团队最新发布的“微信青蛙Pro”在现场设置了体验区,让大家感受AI认脸的本事。"
|
||||
}
|
||||
};
|
||||
string secret = "jWmYm7qr5nMoAUwZRjGtBxmz3KA1tkAj3ykkR6q2B2C";
|
||||
|
||||
string actualJwt = Utilities.JwtUtility.EncodeWithHS256(payload: payload, secret: secret);
|
||||
string expectedJwt = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJ4amxzajMzbGFzZmFmIiwiZGF0YSI6eyJxIjoi5Zyo5b6u5L-h5pm66KiA5LiO5b6u5L-h5pm66IGG5Lik5aSn5oqA5pyv55qE5pSv5oyB5LiL77yM5b6u5L-hQUnlm6LpmJ_mjqjlh7rkuobigJzlvq7kv6Hlr7nor53lvIDmlL7lubPlj7DigJ3lkozigJzohb7orq_lsI_lvq7igJ3mmbrog73noazku7bkuKTlpKfmoLjlv4Pkuqflk4HjgILlvq7kv6HmlK_ku5jlm6LpmJ_mnIDmlrDlj5HluIPnmoTigJzlvq7kv6HpnZLom5lQcm_igJ3lnKjnjrDlnLrorr7nva7kuobkvZPpqozljLrvvIzorqnlpKflrrbmhJ_lj5dBSeiupOiEuOeahOacrOS6i-OAgiJ9fQ.8FeSvxKlIrbI6MCAaWGekB4sHGA8DeUxgVXiHa8ulJk";
|
||||
|
||||
Assert.Equal(expectedJwt, actualJwt, ignoreCase: true);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user