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));
 }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 6
0
        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);
        }