public List <Loan> GetAll(Page page, LoanFilter filter) { using (HttpClient client = _httpClientFactory.CreateClient()) { //your code throw new NotImplementedException(); //remove this } }
public async Task <IActionResult> List([FromQuery] Page page, [FromQuery] LoanFilter filter) { List <Loan> loans; try { loans = await _loanManagement.GetAll(page, filter); } catch (HttpRequestException) { return(StatusCode((int)HttpStatusCode.ServiceUnavailable, new { error = "LoanManagementApi unavailable" })); } catch (UnexpectedResponseException) { return(StatusCode((int)HttpStatusCode.InternalServerError, new { error = "something went wrong in LoanManagementApi" })); } return(Ok(loans)); }
public async Task <List <Loan> > GetAll(Page page, LoanFilter filter) { using (HttpClient client = _httpClientFactory.CreateClient()) { HttpRequestMessage request = new HttpRequestMessage() { Method = HttpMethod.Get, RequestUri = new Uri($"{_loanApiBaseUrl}/api/loan?pageNo={page.PageNo}&pageSize={page.PageSize}") //TODO: Add filters to url }; HttpResponseMessage response = await client.SendAsync(request); if (response.StatusCode != HttpStatusCode.OK) { throw new UnexpectedResponseException($"LoanManagementApi response statusCode: {response.StatusCode}"); } JsonElement loansJson = JsonDocument.Parse(await response.Content.ReadAsStringAsync()).RootElement; if (loansJson.ValueKind != JsonValueKind.Array) { throw new UnexpectedResponseException($"LoanManagementApi response is not an array"); } List <Loan> loans = new List <Loan>(); JsonSerializerOptions options = new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }; for (int index = 0, length = loansJson.GetArrayLength(); index < length; index++) { JsonElement loanJson = loansJson[index]; if (loanJson.ValueKind != JsonValueKind.Object) { continue; } loans.Add(JsonSerializer.Deserialize <Loan>(loanJson.GetRawText(), options)); } return(loans); } }