Exemple #1
0
 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);
            }
        }