Пример #1
0
 public static TopResponse GetTopResponse(this HttpRequest request, IParamsRequest req, ITopCache cache = null)
 {
     if (req is IParamsRequest)
     {
         var parameters = request.HttpMethod.ToUpper() == "GET" ? request.QueryString : request.Form;
         return (req as IParamsRequest).GetTopResponse(parameters, null);
     }
     throw new TopException(1, "method is null");
 }
Пример #2
0
        public T Execute <T>(IParamsRequest request, DateTime timestamp) where T : TopResponse
        {
            try
            {
                request.Validate();
            }
            catch (TopException e)
            {
                return(createErrorResponse <T>(e.ErrorCode, e.ErrorMsg));
            }

            string url = this.ServerUrl;

            var txtParams = new TopDictionary(request.GetParameters());

            txtParams.Add(METHOD, request.GetApiName());
            txtParams.Add(API_KEY, apiKey);
            txtParams.Add(TIMESTAMP, TopUtils.GetUnixTimestamp(timestamp).ToString());
            //if (expires.HasValue) txtParams.Add(EXPIRES, PushUtils.GetUnixTimestamp(expires.Value).ToString());
            txtParams.Add(SIGN, TopUtils.SignTopRequest(txtParams, appSecret));

            string body;

            if (request is ITopUploadRequest)
            {
                var fileParams = (request as ITopUploadRequest).GetFileParameters();
                body = webUtils.DoPost(url, txtParams, fileParams);
            }
            else
            {
                body = webUtils.DoPost(url, txtParams);
            }

            // 解释响应结果
            T rsp = this.DisableParser ? Activator.CreateInstance <T>() : TopUtils.JsonParser <T>(body);

            rsp.Body = body;

            // 追踪错误的请求
            if (!DisableTrace)
            {
                txtParams.Remove(SIGN);
                txtParams.Add(SIGN, TopUtils.SignTopRequest(txtParams, appSecret));
                rsp.ReqUrl = WebUtils.BuildGetUrl(url, txtParams);
                if (rsp.IsError)
                {
                    topLogger.Warn(rsp.ReqUrl + "\r\n" + rsp.Body);
                }
            }

            return(rsp);
        }
Пример #3
0
 public T Execute <T>(IParamsRequest request) where T : TopResponse
 {
     return(Execute <T>(request, DateTime.Now));
 }