예제 #1
0
        public IPassiveMessage HandleMessage(WechatPushingMessage incomingMessage, MessageContext context)
        {
            Assert.Equal(context.SupportPassiveMessage, false);
            Assert.Equal(context.TypeIdentity.MsgType, "text");
            Assert.Equal(context.TypeIdentity.EventType, null);
            Assert.NotNull(context.Raw);
            Assert.NotNull(incomingMessage);

            return(null);
        }
예제 #2
0
        public IPassiveMessage HandleMessage(WechatPushingMessage incomingMessage, MessageContext context)
        {
            var typedMessage = incomingMessage as TIn;

            if (typedMessage != null)
            {
                return(HandleMessage(typedMessage, context));
            }

            throw new InvalidCastException("incomingMessage doesn't match required message type.");
        }
예제 #3
0
        public IMessageHandler Picking(WechatPushingMessage message)
        {
            var trueType = message.GetType();

            if (_handlers.ContainsKey(trueType))
            {
                return(_handlers[trueType]);
            }

            return(null);
        }
예제 #4
0
        public IPassiveMessage HandleMessage(WechatPushingMessage incomingMessage, MessageContext context)
        {
            try
            {
                var passive = _innerHandler.HandleMessage(incomingMessage, context);

                if (context.SupportPassiveMessage && passive is WechatPassiveMessage)
                {
                    Log.Logger.Debug("imcoming message support passive message.");
                    var wechatPassive = (WechatPassiveMessage)passive;
                    wechatPassive.BridgeTo(incomingMessage);
                    Log.Logger.Debug("passive message bind to incoming message.");

                    return(passive);
                }
            }
            catch (Exception exp)
            {
                Log.Logger.Fatal(exp, "execute message handler failed.");
                throw;
            }

            return(new AsyncPassiveMessage());
        }
예제 #5
0
        private MessageContext BuideMessageContext(HubContext context, TypeIdentity typeIdentity, XDocument rawXml, WechatPushingMessage message)
        {
            var supportPassiveMessage = message is IAcceptPassiveMessage;

            return(new MessageContext
            {
                Channel = context.Channel,
                TypeIdentity = typeIdentity,
                Raw = rawXml.ToString(),
                SupportPassiveMessage = supportPassiveMessage
            });
        }