Example #1
0
 private HttpRequest GetRequest(SquashRequest request)
 {
     return(GetRequest(JsonConvert.SerializeObject(request, new JsonSerializerSettings
     {
         ContractResolver = new CamelCasePropertyNamesContractResolver(),
         NullValueHandling = NullValueHandling.Ignore,
     })));
 }
Example #2
0
        public async Task <SquashResponse> SquashAsync(SquashRequest request, CancellationToken cancellationToken)
        {
            var profileName = request.Algorithm ?? "default";

            _logger.Info($"Loading profile {profileName}");
            var profile = await _profileRepository.GetProfileAsync(profileName, cancellationToken);

            if (profile == null)
            {
                throw new ProfileNotFoundException(profileName);
            }

            var result = await SquashAsync(request, profile, cancellationToken);

            return(new SquashResponse
            {
                SquashedEntityResults = result,
            });
        }
Example #3
0
        private async Task <SquashedEntityResult[]> SquashAsync(SquashRequest request, Profile profile, CancellationToken cancellationToken)
        {
            if (request.EntityName.Equals(LearningProviderEntityName, StringComparison.InvariantCultureIgnoreCase))
            {
                _logger.Info("Squashing learning providers");
                return(await _learningProviderSquasher.SquashAsync(
                           request.EntityReferences,
                           request.AggregatesRequest,
                           request.Fields ?? new string[0],
                           request.Live,
                           request.PointInTime,
                           profile,
                           cancellationToken));
            }

            if (request.EntityName.Equals(ManagementGroupEntityName, StringComparison.InvariantCultureIgnoreCase))
            {
                _logger.Info("Squashing management groups");
                return(await _managementGroupSquasher.SquashAsync(
                           request.EntityReferences,
                           request.AggregatesRequest,
                           request.Fields ?? new string[0],
                           request.Live,
                           request.PointInTime,
                           profile,
                           cancellationToken));
            }

            if (request.EntityName.Equals(LearningProviderRatesEntityName, StringComparison.InvariantCultureIgnoreCase))
            {
                _logger.Info("Squashing learning provider rates");
                return(await _learningProviderRatesSquasher.SquashAsync(
                           request.EntityReferences,
                           request.AggregatesRequest,
                           request.Fields ?? new string[0],
                           request.Live,
                           request.PointInTime,
                           profile,
                           cancellationToken));
            }

            if (request.EntityName.Equals(ManagementGroupRatesEntityName, StringComparison.InvariantCultureIgnoreCase))
            {
                _logger.Info("Squashing management group rates");
                return(await _managementGroupRatesSquasher.SquashAsync(
                           request.EntityReferences,
                           request.AggregatesRequest,
                           request.Fields ?? new string[0],
                           request.Live,
                           request.PointInTime,
                           profile,
                           cancellationToken));
            }

            if (request.EntityName.Equals(CensusEntityName, StringComparison.InvariantCultureIgnoreCase))
            {
                _logger.Info("Squashing censuses");
                return(await _censusSquasher.SquashAsync(
                           request.EntityReferences,
                           request.AggregatesRequest,
                           request.Fields ?? new string[0],
                           request.Live,
                           request.PointInTime,
                           profile,
                           cancellationToken));
            }

            throw new InvalidRequestException($"Unsupported entity type {request.EntityName}");
        }