예제 #1
0
        /// <summary>
        /// Parsing Response/Callback
        /// </summary>
        /// <param name="response"></param>
        /// <param name="type"></param>
        /// <param name="isCredit"></param>
        /// <returns></returns>
        public ResponseModel GetResponse(string response, string type = null, bool isCredit = false)
        {
            ResponseModel data = RequiredParams.ConvertResponseByContentType <ResponseModel>(response, false, type);
            bool          v2   = ISv2Resp(data);

            try
            {
                if (v2)
                {
                    IsSignatureValidV2(data, isCredit);
                }
                else
                {
                    IsSignatureValid(data, response, type, isCredit);
                }
            }
            catch (SignatureException e)
            {
                return(new ResponseModel {
                    SignatureError = e
                });
            }

            if (v2)
            {
                ResponseModel dataV2 = JsonFormatter.ConvertFromJson <ResponseModel>(data.data, true, "order");
                return(dataV2);
            }
            return(data);
        }
예제 #2
0
        /// <summary>
        /// Basic Client
        /// </summary>
        /// <param name="req"></param>
        /// <param name="actionUrl"></param>
        /// <param name="isRoot"></param>
        /// <param name="isCredit"></param>
        /// <typeparam name="TCipspRequest"></typeparam>
        /// <typeparam name="TCipspResponse"></typeparam>
        /// <returns></returns>
        /// <exception cref="ClientException"></exception>
        public static TCipspResponse Invoke <TCipspRequest, TCipspResponse>(
            TCipspRequest req,
            string actionUrl,
            bool isRoot   = true,
            bool isCredit = false
            )
        {
            string data;

            if (Config.Protocol == "2.0")
            {
                // In protocol v2 Only json allowed
                if (Config.ContentType != "json")
                {
                    throw new ClientException
                          {
                              ErrorMessage = "In protocol v2 only json content allowed",
                              ErrorCode    = "0"
                          };
                }

                data = RequiredParams.GetParamsV2(req, isCredit);
            }
            else
            {
                data = RequiredParams.ConvertRequestByContentType(req);
            }

            string uriString = Config.Endpoint(null) + actionUrl;

            HttpWebRequest conn = WebRequest.CreateHttp(new Uri(uriString)) as HttpWebRequest;

            conn.ContentType = GetContentTypeHeader(Config.ContentType);
            conn.UserAgent   = _agent;
            conn.Method      = _method;
            byte[] requestData   = Encoding.UTF8.GetBytes(data);
            var    resultRequest = conn.BeginGetRequestStream(null, null);

            using (Stream postStream = conn.EndGetRequestStream(resultRequest))
            {
                postStream.Write(requestData, 0, requestData.Length);
                postStream.Dispose();
            }

            execute(conn);
            if (_statusCode != 200)
            {
                throw new ClientException
                      {
                          ErrorCode    = "500",
                          ErrorMessage = _response,
                          RequestId    = "Server is gone",
                      };
            }

            ErrorResponseModel errorResponse =
                RequiredParams.ConvertResponseByContentType <ErrorResponseModel>(_response, isRoot);

            if (errorResponse.response_status == "failure" || errorResponse.error_message != null)
            {
                throw new ClientException
                      {
                          ErrorCode    = errorResponse.error_code,
                          ErrorMessage = errorResponse.error_message,
                          RequestId    = errorResponse.request_id,
                      };
            }

            TCipspResponse normalResponse =
                RequiredParams.ConvertResponseByContentType <TCipspResponse>(_response, isRoot);

            return(normalResponse);
        }