public virtual IResponseConcern <T> Post <T, ReqConcern>(string url, IRequestConcern <ReqConcern> request = null)
            where ReqConcern : new()
        {
            RestRequest restRequest = new RestRequest(url, Method.POST)
            {
                JsonSerializer = JsonSerializer.Default, RequestFormat = DataFormat.Json
            };

            if (request != null)
            {
                if (request.QueryParams != null && request.QueryParams.Any())
                {
                    foreach (var param in request.QueryParams)
                    {
                        restRequest.AddQueryParameter(param.Key, param.Value);
                    }
                }
                //TO DO: Need to find better way to handle
                if (request != null && request.Concern != null)
                {
                    restRequest.AddJsonBody(request.Concern);
                }
            }

            var response = Execute <T>(restRequest);

            LogApi(BaseUrl, request, response, restRequest);
            return(response);
        }
        public virtual IResponseConcern <T> Get <T>(string url, IRequestConcern request = null)
        {
            RestRequest restRequest = new RestRequest(url, Method.GET);

            if (request != null && request.QueryParams.Any())
            {
                foreach (var param in request.QueryParams)
                {
                    restRequest.AddQueryParameter(param.Key, param.Value);
                }
            }

            return(Execute <T>(restRequest));
        }
        public virtual IResponseConcern Delete(string url, IRequestConcern request = null)
        {
            RestRequest restRequest = new RestRequest(url, Method.DELETE);

            if (request != null && request.QueryParams != null && request.QueryParams.Any())
            {
                foreach (var param in request.QueryParams)
                {
                    restRequest.AddQueryParameter(param.Key, param.Value);
                }
            }

            var response = Execute(restRequest);

            LogApi(BaseUrl, request, response, restRequest);
            return(response);
        }
 private void AddJsonBody(RestRequest restRequest, IRequestConcern request)
 {
     try
     {
         var concernProp = request.GetType().GetProperty("Concern");
         if (concernProp != null)
         {
             restRequest.AddJsonBody(concernProp.GetValue(request));
         }
         else
         {
             restRequest.AddJsonBody(request);
         }
     }
     catch (Exception ex)
     {
     }
 }
        public virtual IResponseConcern Post(string url, IRequestConcern request = null)
        {
            RestRequest restRequest = new RestRequest(url, Method.POST)
            {
                JsonSerializer = JsonSerializer.Default
            };

            if (request != null)
            {
                if (request.QueryParams != null && request.QueryParams.Any())
                {
                    foreach (var param in request.QueryParams)
                    {
                        restRequest.AddQueryParameter(param.Key, param.Value);
                    }
                }
                AddJsonBody(restRequest, request);
            }
            var response = Execute(restRequest);

            LogApi(BaseUrl, request, response, restRequest);
            return(response);
        }
        protected void LogApi(string url, IRequestConcern request, IResponseConcern response, IRestRequest baseRequest = null, IRestResponse baseResponse = null)
        {
            if (ConfigurationManager.AppSettings["ENABLE:SERIALIZATIONLOG"] != null)
            {
                if (Logger == null)
                {
                    return;
                }

                StringBuilder sb = new StringBuilder();
                sb.Append($" Url :{url}{baseRequest.Resource} Status: {baseResponse?.ResponseStatus.ToString()} Code:{baseResponse?.StatusCode}");
                if (baseResponse != null && baseResponse.ErrorException != null)
                {
                    Logger.Log(baseResponse.ErrorException, sb.ToString());
                }
                Logger.LogApi(sb.ToString(), $@"{{
                                                ""Url"":""{url}{baseRequest.Resource}"",
                                                ""Request.Params"":{JsonSerializer.Default.Serialize(baseRequest?.Parameters.Where(_ => _.Type == ParameterType.QueryString))},
                                                ""Request.Body"":{JsonSerializer.Default.Serialize(request)},
                                                ""Reponse.Status"":""{baseResponse?.StatusCode.ToString()}  {response.IsSuccess.ToString()}"",
                                                ""Response.Body"":{response.ToJson()}
                                                }}");
            }
        }
Exemple #7
0
 public IResponseConcern <T> PostWithCallback <T, ReqConcern>(string url, string callbackUrl, IRequestConcern <ReqConcern> request = null)
     where T : new()
     where ReqConcern : new()
 {
     this.TransactionContext?.SetCallbackUrl(callbackUrl);
     return(base.Post <T, ReqConcern>(url, request));
 }