コード例 #1
0
        /// <inheritdoc />
        public async Task <GetCensusesResponse> GetCensusesAsync(
            GetCensusesRequest getCensusesRequest,
            CancellationToken cancellationToken)
        {
            var censuses = new Census[getCensusesRequest.CensusIdentifiers.Length];

            for (var i = 0; i < censuses.Length; i++)
            {
                var singleRequest = new GetCensusRequest
                {
                    CensusIdentifier = getCensusesRequest.CensusIdentifiers[i],
                    AggregateQueries = getCensusesRequest.AggregateQueries,
                };

                var singleResponse = await GetCensusAsync(singleRequest, cancellationToken);

                censuses[i] = singleResponse.Census;
            }

            return(new GetCensusesResponse
            {
                Censuses = censuses,
            });
        }
コード例 #2
0
        /// <inheritdoc />
        protected override async Task <IActionResult> ProcessWellFormedRequestAsync(
            GetCensusesHttpRequest request,
            FunctionRunContext runContext,
            CancellationToken cancellationToken)
        {
            try
            {
                var censusRequest = new GetCensusesRequest
                {
                    CensusIdentifiers = request.Identifiers.Select(ParseIdentifier).ToArray(),
                    AggregateQueries  = request.AggregateQueries,
                };

                var response = await this.censusProcessor.GetCensusesAsync(
                    censusRequest,
                    cancellationToken);

                var jsonSerializerSettings = JsonConvert.DefaultSettings();

                return(jsonSerializerSettings == null
                    ? new JsonResult(response.Censuses)
                    : new JsonResult(response.Censuses, jsonSerializerSettings));
            }
            catch (DatasetQueryFileNotFoundException datasetQueryFileNotFoundException)
            {
                return(this.GetErrorBody(
                           HttpStatusCode.NotFound,
                           4,
                           datasetQueryFileNotFoundException));
            }
            catch (IncompleteDatasetQueryFileException incompleteDatasetQueryFileException)
            {
                return(this.GetErrorBody(
                           HttpStatusCode.ExpectationFailed,
                           5,
                           incompleteDatasetQueryFileException));
            }
            catch (TranslationApiAdapterException translationApiAdapterException)
            {
                return(this.GetErrorBody(
                           HttpStatusCode.FailedDependency,
                           6,
                           translationApiAdapterException));
            }
            catch (UnsupportedAggregateColumnRequestException unsupportedAggregateColumnRequestException)
            {
                return(this.GetErrorBody(
                           HttpStatusCode.BadRequest,
                           7,
                           unsupportedAggregateColumnRequestException));
            }
            catch (InvalidMappingTypeException invalidMappingTypeException)
            {
                return(this.GetErrorBody(
                           HttpStatusCode.ExpectationFailed,
                           8,
                           invalidMappingTypeException));
            }
            catch (SqlFieldValueUnboxingTypeException sqlFieldValueUnboxingTypeException)
            {
                return(this.GetErrorBody(
                           HttpStatusCode.ExpectationFailed,
                           9,
                           sqlFieldValueUnboxingTypeException));
            }
            catch (InvalidBetweenValueException invalidBetweenValueException)
            {
                return(this.GetErrorBody(
                           HttpStatusCode.BadRequest,
                           10,
                           invalidBetweenValueException));
            }
            catch (InvalidDateTimeFormatException invalidDateTimeFormatException)
            {
                return(this.GetErrorBody(
                           HttpStatusCode.BadRequest,
                           11,
                           invalidDateTimeFormatException));
            }
            catch (DataFilterValueUnboxingTypeException dataFilterValueUnboxingTypeException)
            {
                return(this.GetErrorBody(
                           HttpStatusCode.BadRequest,
                           12,
                           dataFilterValueUnboxingTypeException));
            }
            catch (UnsupportedSearchParameterException unsupportedSearchParameterException)
            {
                return(this.GetErrorBody(
                           HttpStatusCode.BadRequest,
                           13,
                           unsupportedSearchParameterException));
            }
        }