public virtual async Task <APIStandardResponse <TResponse> > RequestAsync <TResponse>(RequestMethod requestMethod, string url, APIRequestBaseModel requestParameters) { return(await BasicConsumeAPI <TResponse>(requestMethod, url, requestParameters, GetHttpClient())); }
protected virtual async Task <APIStandardResponse <TResponse> > BasicConsumeAPI <TResponse>(RequestMethod requestMethod, string requestURL, APIRequestBaseModel requestParams, System.Net.Http.HttpClient httpClientAsync) { Exception exception = null; APIStandardResponse <TResponse> aPIStandardResponse = (APIStandardResponse <TResponse>)Activator.CreateInstance(typeof(APIStandardResponse <TResponse>)); try { using (var cts = new CancellationTokenSource()) { using (var httpClient = httpClientAsync) { httpClient.Timeout = TimeSpan.FromSeconds(Utils.API_REQUEST_TIMEOUT); HttpResponseMessage httpResponse = null; /* * Process with GET Method */ if (requestMethod == RequestMethod.GET) { var paramete = requestParams.Get_GetParamsRequest(); httpResponse = await httpClient.GetAsync(requestURL + paramete, cts.Token); } /* * Process with POST Method */ else if (requestMethod == RequestMethod.POST) { var paramete = requestParams.Get_PostParamsRequest(); httpResponse = await httpClient.PostAsync(requestURL, new StringContent(paramete, Encoding.UTF8, "application/json"), cts.Token); } /* * Process with PUT Method */ else if (requestMethod == RequestMethod.PUT) { var paramete = requestParams.Get_PutParamsRequest(); httpResponse = await httpClient.PutAsync(requestURL, new StringContent(paramete, Encoding.UTF8, "application/json"), cts.Token); } /* * Process reponse after request */ if (httpResponse != null) { aPIStandardResponse.ObjectRaw = httpResponse.Content.ReadAsStringAsync().Result; if (httpResponse.IsSuccessStatusCode) { aPIStandardResponse.RequestOK = true; aPIStandardResponse.ObjectSuccess = await Task.Run(() => { var result = JsonConvert.DeserializeObject <TResponse>(aPIStandardResponse.ObjectRaw, jsonSerializerSettings); aPIStandardResponse.JsonConvertSuccess = true; return(result); }); } else { aPIStandardResponse.StatusCode = httpResponse.StatusCode; } } } } } catch (Exception ex) { exception = ex; DebugMessage(ex.StackTrace, "ParseJsonError"); } if (exception == null) { /* * Request successfully and return data */ return(aPIStandardResponse); } else { /* * Request error and return default object of reponse model */ return(aPIStandardResponse); } }
public virtual async Task <APIStandardResponse <TResponse> > RequestPutAsync <TResponse>(string url, APIRequestBaseModel requestParameters) { return(await RequestAsync <TResponse>(RequestMethod.PUT, url, requestParameters)); }