public async Task <IActionResult> Search([FromBody] SearchScopesRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var parameter = request.ToSearchScopesParameter();
            var result    = await _scopeActions.Search(parameter);

            return(new OkObjectResult(result.ToDto()));
        }
        /// <inheritdoc />
        public async Task <PagedResult <Scope> > Search(SearchScopesRequest parameter, CancellationToken cancellationToken = default)
        {
            await using var session = this._sessionFactory();
            var results = await session.Query <Scope>()
                          .Where(x => x.Name.IsOneOf(parameter.ScopeNames) && x.Type.IsOneOf(parameter.ScopeTypes))
                          .ToPagedListAsync(parameter.StartIndex + 1, parameter.NbResults, cancellationToken)
                          .ConfigureAwait(false);

            return(new PagedResult <Scope>
            {
                Content = results.ToArray(),
                StartIndex = parameter.StartIndex,
                TotalResults = results.TotalItemCount
            });
        }
        public static SearchScopesParameter ToSearchScopesParameter(this SearchScopesRequest parameter)
        {
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            return(new SearchScopesParameter
            {
                Count = parameter.NbResults,
                ScopeNames = parameter.ScopeNames,
                StartIndex = parameter.StartIndex,
                Types = parameter.ScopeTypes,
                Order = parameter.Order == null ? null : parameter.Order.ToParameter()
            });
        }
        public async Task <PagedResult <ScopeResponse> > ExecuteAsync(Uri clientsUri, SearchScopesRequest parameter, string authorizationHeaderValue = null)
        {
            if (clientsUri == null)
            {
                throw new ArgumentNullException(nameof(clientsUri));
            }

            var httpClient = _httpClientFactory.GetHttpClient();
            var serializedPostPermission = JsonConvert.SerializeObject(parameter);
            var body    = new StringContent(serializedPostPermission, Encoding.UTF8, "application/json");
            var request = new HttpRequestMessage
            {
                Method     = HttpMethod.Post,
                RequestUri = clientsUri,
                Content    = body
            };

            if (!string.IsNullOrWhiteSpace(authorizationHeaderValue))
            {
                request.Headers.Add("Authorization", "Bearer " + authorizationHeaderValue);
            }

            var httpResult = await httpClient.SendAsync(request);

            var content = await httpResult.Content.ReadAsStringAsync().ConfigureAwait(false);

            var rec = JObject.Parse(content);

            try
            {
                httpResult.EnsureSuccessStatusCode();
            }
            catch (Exception)
            {
                return(new PagedResult <ScopeResponse>
                {
                    ContainsError = true,
                    Error = JsonConvert.DeserializeObject <ErrorResponse>(content),
                    HttpStatus = httpResult.StatusCode
                });
            }

            return(new PagedResult <ScopeResponse>
            {
                Content = JsonConvert.DeserializeObject <PagedResponse <ScopeResponse> >(content)
            });
        }
Beispiel #5
0
        public async Task <PagedResult <ScopeResponse> > ResolveSearch(Uri wellKnownConfigurationUri, SearchScopesRequest searchScopesParameter, string authorizationHeaderValue = null)
        {
            var configuration = await _configurationClient.GetConfiguration(wellKnownConfigurationUri).ConfigureAwait(false);

            return(await _searchScopesOperation.ExecuteAsync(new Uri(configuration.Content.ScopesEndpoint + "/.search"), searchScopesParameter, authorizationHeaderValue).ConfigureAwait(false));
        }