private void AddHeaders(HttpRequestEnum httpRequest, HttpRequestHeaders headers, ref string url, params string[] args) { switch (httpRequest) { case HttpRequestEnum.AllReportCodes: break; case HttpRequestEnum.ReportCodesByDateRange: url += $"/{args[0]}/{args[1]}"; headers.Add("from", args[0]); headers.Add("to", args[1]); break; case HttpRequestEnum.LatestReportCode: break; case HttpRequestEnum.ReportCodesByLocation: url += $"/{args[0]}"; headers.Add("officeLocation", args[0]); break; case HttpRequestEnum.ReportCodesCountByDateRange: url += $"/{args[0]}/{args[1]}"; headers.Add("from", args[0]); headers.Add("to", args[1]); break; case HttpRequestEnum.AllOfficeLocations: break; default: break; } }
private async Task <string> SendRequest(HttpRequestEnum httpRequest, HttpMethod httpMethod, object content, CancellationToken token, params string[] args) { int timeout = 30; try { using (HttpClient client = new HttpClient()) { var url = _connectionUrl + GetUrl(httpRequest); client.Timeout = TimeSpan.FromSeconds(timeout); AddHeaders(httpRequest, client.DefaultRequestHeaders, ref url, args); HttpResponseMessage response = null; if (httpMethod == HttpMethod.Post) { var json = JsonConvert.SerializeObject(content); var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); response = await client.PostAsync(url, stringContent, token); } else { response = await client.GetAsync(url, token); } if (response.IsSuccessStatusCode) { var result = await response.Content.ReadAsStringAsync(); return(result); } throw new Exception(response.ReasonPhrase); } } catch (Exception) { throw; } }
private string GetUrl(HttpRequestEnum httpRequest) { string url = ""; switch (httpRequest) { case HttpRequestEnum.AllReportCodes: url = _allReportCodes; break; case HttpRequestEnum.CreateNewReportCode: url = _createNewReportCodes; break; case HttpRequestEnum.ReportCodesByDateRange: url = _reportCodesByDateRange; break; case HttpRequestEnum.LatestReportCode: url = _latestReportCode; break; case HttpRequestEnum.ReportCodesByLocation: url = _reportCodesByLocation; break; case HttpRequestEnum.ReportCodesCountByDateRange: url = _reportCodesCountByDateRange; break; case HttpRequestEnum.AllOfficeLocations: url = _allOfficeLocations; break; default: throw new ArgumentException("invalid enum value", nameof(httpRequest)); } return(url); }