public async Task <List <ResourceResponse> > SearchResources( SearchResourceRequest searchResourceRequest, string url, string accessToken) { return(await _searchResourceOperation.ExecuteAsync(searchResourceRequest, TryGetUri(url), accessToken)); }
public async Task <List <ResourceResponse> > SearchResources( SearchResourceRequest searchResourceRequest, Uri uri, string accessToken) { return(await _searchResourceOperation.ExecuteAsync(searchResourceRequest, uri, accessToken)); }
public async Task GivenAnSearchResourceRequest_WhenHandled_ThenABundleShouldBeReturned() { SearchResourceRequest request = new SearchResourceRequest("Patient", null); Bundle expectedBundle = new Bundle(); _searchService.SearchAsync(request.ResourceType, null).Returns(expectedBundle); SearchResourceResponse actualResponse = await _searchResourceHandler.Handle(request, CancellationToken.None); Assert.NotNull(actualResponse); Assert.Equal(expectedBundle, actualResponse.Bundle); }
public async Task <SearchResultEntry[]> GetExistingResourceId(string requestUrl, string resourceType, StringValues conditionalQueries, CancellationToken cancellationToken) { if (string.IsNullOrEmpty(resourceType) || string.IsNullOrEmpty(conditionalQueries)) { throw new RequestNotValidException(string.Format(Api.Resources.InvalidConditionalReferenceParameters, requestUrl)); } Tuple <string, string>[] conditionalParameters = QueryHelpers.ParseQuery(conditionalQueries) .SelectMany(query => query.Value, (query, value) => Tuple.Create(query.Key, value)).ToArray(); var searchResourceRequest = new SearchResourceRequest(resourceType, conditionalParameters); return(await Search(searchResourceRequest.ResourceType, searchResourceRequest.Queries, cancellationToken)); }
public async Task <List <ResourceResponse> > ExecuteAsync( SearchResourceRequest searchResourceRequest, Uri uri, string accessToken) { if (uri == null) { throw new ArgumentNullException(nameof(uri)); } var contentRequest = new Dictionary <string, string>(); if (searchResourceRequest != null) { contentRequest.Add(Constants.SearchResourceRequestNames.IsExactUrl, searchResourceRequest.IsExactUrl.ToString()); contentRequest.Add(Constants.SearchResourceRequestNames.AuthorizationPolicyFilter, Constants.MappingAuthorizationPolicyFiltersToNames[searchResourceRequest.AuthorizationPolicyFilter]); if (!string.IsNullOrWhiteSpace(searchResourceRequest.Url)) { contentRequest.Add(Constants.SearchResourceRequestNames.Url, searchResourceRequest.Url); } if (!string.IsNullOrWhiteSpace(searchResourceRequest.ResourceId)) { contentRequest.Add(Constants.SearchResourceRequestNames.ResourceId, searchResourceRequest.ResourceId); } if (!string.IsNullOrWhiteSpace(searchResourceRequest.AuthorizationPolicy)) { contentRequest.Add(Constants.SearchResourceRequestNames.AuthorizationPolicy, searchResourceRequest.AuthorizationPolicy); } } var resourcesUrl = $"{uri.AbsoluteUri.TrimEnd('/')}/search"; var request = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri(resourcesUrl), Content = new FormUrlEncodedContent(contentRequest) }; request.Headers.Add("Authorization", "Bearer " + accessToken); var httpClient = _httpClientFactory.GetHttpClient(); var httpResult = await httpClient.SendAsync(request); httpResult.EnsureSuccessStatusCode(); var content = await httpResult.Content.ReadAsStringAsync().ConfigureAwait(false); return(JsonConvert.DeserializeObject <List <ResourceResponse> >(content)); }
public async Task GivenASearchResourceRequest_WhenHandled_ThenABundleShouldBeReturned() { var request = new SearchResourceRequest("Patient", null); var searchResult = new SearchResult(Enumerable.Empty <SearchResultEntry>(), new Tuple <string, string> [0], Array.Empty <(string parameterName, string reason)>(), null); _searchService.SearchAsync(request.ResourceType, request.Queries, CancellationToken.None).Returns(searchResult); var expectedBundle = new Bundle().ToResourceElement(); _bundleFactory.CreateSearchBundle(searchResult).Returns(expectedBundle); SearchResourceResponse actualResponse = await _searchResourceHandler.Handle(request, CancellationToken.None); Assert.NotNull(actualResponse); Assert.Equal(expectedBundle, actualResponse.Bundle); }