Exemplo n.º 1
0
        static string GetResponseString(HttpContext context)
        {
            MornRequestData requestData = MornRequestData.Create(context);

            if (ProtocolDataVerifier != null)
            {
                try
                {
                    ProtocolDataVerifier.Validate(requestData);
                }
                catch (MornException ex)
                {
                    return(MornErrorUtil.GenError(
                               ex.ErrorType,
                               ex.Message));
                }
            }

            var handler = GetProtocolHandler(requestData.Method);

            if (handler == null)
            {
                return(MornErrorUtil.GenError(MornErrorType.UnknownMethod));
            }

            return(handler.Process(requestData));
        }
Exemplo n.º 2
0
        public string Process(MornRequestData data)
        {
            var request  = JsonConvert.DeserializeObject <TRequest>(data.Data);
            var response = _localFunc.Invoke(request, data.RequestServices);

            var timeFormat = new Newtonsoft.Json.Converters.IsoDateTimeConverter();

            timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
            return(JsonConvert.SerializeObject(response, Formatting.Indented, timeFormat));
        }
Exemplo n.º 3
0
 public string Process(MornRequestData data)
 {
     try
     {
         return(_client.DoPost(_url, data.Context));
     }
     catch (Exception ex)
     {
         return(MornErrorUtil.GenError(MornErrorType.SystemError, ex.Message));
     }
 }
Exemplo n.º 4
0
        public static MornRequestData Create(HttpContext context)
        {
            MornRequestData data = new MornRequestData();

            data.RequestServices = context.RequestServices;
            var request = context.Request;

            //准备内容元素
            using (StreamReader sr = new StreamReader(context.Request.Body, Encoding.UTF8))
            {
                data.Context = sr.ReadToEnd();
            }
            var map = JsonConvert.DeserializeObject <IDictionary <string, string> >(data.Context);

            foreach (var kv in map)
            {
                data._textParams[kv.Key] = kv.Value;
            }

            return(data);
        }
Exemplo n.º 5
0
        public void Validate(MornRequestData data)
        {
            if (!VerifyAppKey && !VerifySignature && !VerifyAuthority)
            {
                return;
            }

            AppItem item;

            if (!_appMap.TryGetValue(data.AppKey, out item))
            {
                throw new MornException(MornErrorType.InvalidAppKey);
            }

            if (VerifySignature)
            {
                if (string.IsNullOrEmpty(item.AppSecret))
                {
                    throw new MornException(MornErrorType.SignError);
                }
                var dic  = data.GetTextParamsWithoutSign();
                var sign = Security.Signature.SignRequestByMd5Method(dic, item.AppSecret);
                if (!data.Sign.Equals(sign))
                {
                    throw new MornException(MornErrorType.SignError);
                }
            }

            if (VerifyAuthority)
            {
                if (item.AuthoritySet == null)
                {
                    throw new MornException(MornErrorType.InvalidAuthority);
                }
                if (!item.AuthoritySet.Contains(data.Method))
                {
                    throw new MornException(MornErrorType.InvalidAuthority);
                }
            }
        }