mirror of
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
synced 2025-09-22 20:13:41 +08:00
feat(wxapi): 反序列化微信回调通知事件时支持反序列化成 WechatApiEvent 基类
This commit is contained in:
@@ -9,9 +9,9 @@ using System.Xml.Serialization;
|
|||||||
namespace SKIT.FlurlHttpClient.Wechat.Api
|
namespace SKIT.FlurlHttpClient.Wechat.Api
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 为 <see cref="WechatApiClient"/> 提供回调通知事件的扩展方法。
|
/// 为 <see cref="WechatApiClient"/> 提供回调通知事件序列化的扩展方法。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static class WechatApiClientEventExtensions
|
public static class WechatApiClientEventSerializationExtensions
|
||||||
{
|
{
|
||||||
private class EncryptedWechatApiEvent
|
private class EncryptedWechatApiEvent
|
||||||
{
|
{
|
||||||
@@ -33,15 +33,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
|
|||||||
public string Signature { get; set; } = default!;
|
public string Signature { get; set; } = default!;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
private static TEvent InnerDeserializeEventFromJson<TEvent>(this WechatApiClient client, string callbackJson, bool safety)
|
||||||
/// <para>从 JSON 反序列化得到 <see cref="WechatApiEvent"/> 对象。</para>
|
where TEvent : WechatApiEvent
|
||||||
/// </summary>
|
|
||||||
/// <param name="client"></param>
|
|
||||||
/// <param name="callbackJson"></param>
|
|
||||||
/// <param name="safety">是否是安全模式(即是否需要解密)。</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static TEvent DeserializeEventFromJson<TEvent>(this WechatApiClient client, string callbackJson, bool safety = false)
|
|
||||||
where TEvent : WechatApiEvent, WechatApiEvent.Types.IJsonSerializable, new()
|
|
||||||
{
|
{
|
||||||
if (client == null) throw new ArgumentNullException(nameof(client));
|
if (client == null) throw new ArgumentNullException(nameof(client));
|
||||||
if (string.IsNullOrEmpty(callbackJson)) throw new ArgumentNullException(callbackJson);
|
if (string.IsNullOrEmpty(callbackJson)) throw new ArgumentNullException(callbackJson);
|
||||||
@@ -76,15 +69,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
private static TEvent InnerDeserializeEventFromXml<TEvent>(this WechatApiClient client, string callbackXml, bool safety)
|
||||||
/// <para>从 XML 反序列化得到 <see cref="WechatApiEvent"/> 对象。</para>
|
where TEvent : WechatApiEvent
|
||||||
/// </summary>
|
|
||||||
/// <param name="client"></param>
|
|
||||||
/// <param name="callbackXml"></param>
|
|
||||||
/// <param name="safety">是否是安全模式(即是否需要解密)。</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static TEvent DeserializeEventFromXml<TEvent>(this WechatApiClient client, string callbackXml, bool safety = false)
|
|
||||||
where TEvent : WechatApiEvent, WechatApiEvent.Types.IXmlSerializable, new()
|
|
||||||
{
|
{
|
||||||
if (client == null) throw new ArgumentNullException(nameof(client));
|
if (client == null) throw new ArgumentNullException(nameof(client));
|
||||||
if (string.IsNullOrEmpty(callbackXml)) throw new ArgumentNullException(callbackXml);
|
if (string.IsNullOrEmpty(callbackXml)) throw new ArgumentNullException(callbackXml);
|
||||||
@@ -112,6 +98,58 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// <para>从 JSON 反序列化得到 <see cref="WechatApiEvent"/> 对象。</para>
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TEvent"></typeparam>
|
||||||
|
/// <param name="client"></param>
|
||||||
|
/// <param name="callbackJson"></param>
|
||||||
|
/// <param name="safety">是否是安全模式(即是否需要解密)。</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static TEvent DeserializeEventFromJson<TEvent>(this WechatApiClient client, string callbackJson, bool safety = false)
|
||||||
|
where TEvent : WechatApiEvent, WechatApiEvent.Types.IJsonSerializable, new()
|
||||||
|
{
|
||||||
|
return InnerDeserializeEventFromJson<TEvent>(client, callbackJson, safety);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// <para>从 JSON 反序列化得到 <see cref="WechatApiEvent"/> 对象。</para>
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="client"></param>
|
||||||
|
/// <param name="callbackJson"></param>
|
||||||
|
/// <param name="safety">是否是安全模式(即是否需要解密)。</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static WechatApiEvent DeserializeEventFromJson(this WechatApiClient client, string callbackJson, bool safety = false)
|
||||||
|
{
|
||||||
|
return InnerDeserializeEventFromJson<WechatApiEvent>(client, callbackJson, safety);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// <para>从 XML 反序列化得到 <see cref="WechatApiEvent"/> 对象。</para>
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TEvent"></typeparam>
|
||||||
|
/// <param name="client"></param>
|
||||||
|
/// <param name="callbackXml"></param>
|
||||||
|
/// <param name="safety">是否是安全模式(即是否需要解密)。</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static TEvent DeserializeEventFromXml<TEvent>(this WechatApiClient client, string callbackXml, bool safety = false)
|
||||||
|
where TEvent : WechatApiEvent, WechatApiEvent.Types.IXmlSerializable, new()
|
||||||
|
{
|
||||||
|
return InnerDeserializeEventFromXml<TEvent>(client, callbackXml, safety);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// <para>从 XML 反序列化得到 <see cref="WechatApiEvent"/> 对象。</para>
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="client"></param>
|
||||||
|
/// <param name="callbackXml"></param>
|
||||||
|
/// <param name="safety">是否是安全模式(即是否需要解密)。</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static WechatApiEvent DeserializeEventFromXml(this WechatApiClient client, string callbackXml, bool safety = false)
|
||||||
|
{
|
||||||
|
return InnerDeserializeEventFromXml<WechatApiEvent>(client, callbackXml, safety);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 将 <see cref="WechatApiEvent"/> 对象序列化成 JSON。
|
/// 将 <see cref="WechatApiEvent"/> 对象序列化成 JSON。
|
||||||
/// </summary>
|
/// </summary>
|
Reference in New Issue
Block a user