public async Task <IActionResult> SaveFundingPeriods(HttpRequest request) { string yaml = await request.GetRawBodyStringAsync(); string yamlFilename = request.GetYamlFileNameFromRequest(); if (string.IsNullOrEmpty(yaml)) { _logger.Error($"Null or empty yaml provided for file: {yamlFilename}"); return(new BadRequestObjectResult($"Invalid yaml was provided for file: {yamlFilename}")); } IDeserializer deserializer = new DeserializerBuilder() .WithNamingConvention(new CamelCaseNamingConvention()) .Build(); FundingPeriodsYamlModel fundingPeriodsYamlModel = null; try { fundingPeriodsYamlModel = deserializer.Deserialize <FundingPeriodsYamlModel>(yaml); } catch (Exception exception) { _logger.Error(exception, $"Invalid yaml was provided for file: {yamlFilename}"); return(new BadRequestObjectResult($"Invalid yaml was provided for file: {yamlFilename}")); } try { if (!fundingPeriodsYamlModel.FundingPeriods.IsNullOrEmpty()) { await _specificationsRepository.SavePeriods(fundingPeriodsYamlModel.FundingPeriods); await _cacheProvider.SetAsync <Period[]>(CacheKeys.FundingPeriods, fundingPeriodsYamlModel.FundingPeriods, TimeSpan.FromDays(100), true); _logger.Information($"Upserted {fundingPeriodsYamlModel.FundingPeriods.Length} funding periods into cosomos"); } } catch (Exception exception) { _logger.Error(exception, $"Exception occurred writing to yaml file: {yamlFilename} to cosmos db"); return(new StatusCodeResult(500)); } _logger.Information($"Successfully saved file: {yamlFilename} to cosmos db"); return(new OkResult()); }