public async Task <IResult <IProviderSearchResult> > GetProviderByPRNAsync(IProviderSearchCriteria criteria) { Throw.IfNull(criteria, nameof(criteria)); _logger.LogMethodEnter(); try { _logger.LogInformationObject("Provider search criteria.", criteria); _logger.LogInformationObject("Provider search URI", _getProviderByPRNUri); //var content = new StringContent(criteria.ToJson(), Encoding.UTF8, "application/json"); HttpClient httpClient = new HttpClient(); // cos getting object disposed exception in file processor httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", _settings.ApiKey); var response = await httpClient.GetAsync(_getProviderByPRNUri + $"?PRN={criteria.Search}"); _logger.LogHttpResponseMessage("Provider search service http response", response); if (response.IsSuccessStatusCode) { var json = await response.Content.ReadAsStringAsync(); if (!json.StartsWith("[")) { json = "[" + json + "]"; } _logger.LogInformationObject("Provider search service json response", json); var providers = JsonConvert.DeserializeObject <IEnumerable <Provider> >(json); var searchResult = new ProviderSearchResult(providers) { Value = providers }; return(Result.Ok <IProviderSearchResult>(searchResult)); } else { return(Result.Fail <IProviderSearchResult>("Provider search service unsuccessful http response")); } } catch (HttpRequestException hre) { _logger.LogException("Provider search service http request error", hre); return(Result.Fail <IProviderSearchResult>("Provider search service http request error.")); } catch (Exception e) { _logger.LogException("Provider search service unknown error.", e); return(Result.Fail <IProviderSearchResult>("Provider search service unknown error.")); } finally { _logger.LogMethodExit(); } }
internal static string ToJson(this IProviderSearchCriteria extendee) { ProviderSearchJson json = new ProviderSearchJson { PRN = extendee.Search }; var result = JsonConvert.SerializeObject(json); return(result); }