Files
juipnet/Infrastructure/WxApi/Notice/MessageFactory.cs
“wanyongkang” ed3b2c653e 接口文件
2024-04-10 13:55:27 +08:00

96 lines
3.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Hncore.Infrastructure.Common;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.IO;
using System.Xml;
using System.Xml.Linq;
namespace Hncore.Wx.Open
{
/// <summary>
/// RequestMessage工厂
/// </summary>
public static class MessageFactory
{
public static IServiceCollection Service { get; set; }
/// <summary>
/// 获取XDocument转换后的IRequestMessageBase实例。
/// 如果MsgType不存在抛出UnknownRequestMsgTypeException异常
/// </summary>
/// <returns></returns>
public static IMessageBase GetRequestEntity(XDocument doc)
{
IMessageBase requestMessage = null;
RequestInfoType infoType;
try
{
infoType = InfoTypeHelper.GetRequestInfoType(doc);
switch (infoType)
{
case RequestInfoType.component_verify_ticket:
requestMessage = new MessageComponentVerifyTicket(doc);
break;
case RequestInfoType.unauthorized:
requestMessage = new MessageUnauthorized(doc);
break;
case RequestInfoType.authorized:
requestMessage = new MessageAuthorized(doc);
break;
case RequestInfoType.updateauthorized:
requestMessage = new MessageUpdateAuthorized(doc);
break;
case RequestInfoType.notify_third_fasteregister:
requestMessage = new MessageThirdFasteRegister(doc);
break;
case RequestInfoType.event_subscribe_qrscene:
requestMessage = new MessageEventSubscribeQrscene(doc);
break;
case RequestInfoType.event_SCAN:
requestMessage = new MessageEventScan(doc);
break;
case RequestInfoType.event_subscribe:
requestMessage = new MessageEventSubscribe(doc);
break;
default:
return new MessageDefault();
}
}
catch (Exception ex)
{
LogHelper.Error("MessageFactory 解析失败", ex.Message);
}
return requestMessage;
}
/// <summary>
/// 获取XDocument转换后的IRequestMessageBase实例。
/// 如果MsgType不存在抛出UnknownRequestMsgTypeException异常
/// </summary>
/// <returns></returns>
public static IMessageBase GetRequestEntity(string xml)
{
return GetRequestEntity(XDocument.Parse(xml));
}
/// <summary>
/// 获取XDocument转换后的IRequestMessageBase实例。
/// 如果MsgType不存在抛出UnknownRequestMsgTypeException异常
/// </summary>
/// <param name="stream">如Request.InputStream</param>
/// <returns></returns>
public static IMessageBase GetRequestEntity(Stream stream)
{
using (XmlReader xr = XmlReader.Create(stream))
{
var doc = XDocument.Load(xr);
return GetRequestEntity(doc);
}
}
}
}