public void GetFilenamePstDateTime_ValidData_ReturnsCorrectFilename() { // Arrange COReCsvStringWriter sut = new COReCsvStringWriter(); string expected = getValidFilenamePst(); List <Observation> obs = getValidObservations(); // Act string actual = sut.GetFilenamePstDateTime(obs[0]); // Assert Assert.Equal(expected, actual); }
public static async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { //log.LogInformation("C# HTTP trigger function processed a request."); // //string name = req.Query["name"]; // //string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); //dynamic data = JsonConvert.DeserializeObject(requestBody); //name = name ?? data?.name; // //return name != null // ? (ActionResult)new OkObjectResult($"Hello, {name}") // : new BadRequestObjectResult("Please pass a name on the query string or in the request body"); log.LogInformation($"Webhook was triggered!"); int utcOffset = -8; string jsonContent = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(jsonContent); //log.Info("data: " + data.ToString()); if (data == null | data?.measurements[0]?.physicalQuantities[0] == null | data?.recentFilePath == null | data?.recentFileContent == null) { log.LogError("No data"); return(new BadRequestObjectResult("Data are null")); } // Convert Measurements to CORe.Observation //MeasurementJsonExtractor extractor = new MeasurementJsonExtractor(); List <MeasurementV2> measurements = JsonConvert.DeserializeObject <List <MeasurementV2> >( data.measurements.ToString()); LtarDataPortalCOReTransformer transformer = new LtarDataPortalCOReTransformer(); COReCsvStringWriter loader = new COReCsvStringWriter(); //List<Measurement> measurements = extractor.ToMeasurements(data.measurements.ToString()); List <Observation> observations = transformer.ToCOReObservations("CAF", "000", 'L', utcOffset, measurements); log.LogInformation("count: " + observations.Count); // Check if we're writing a new file string filename = loader.GetFilenamePstDateTime(observations[0]); //string filename = "cafMET001L_01_20170900_00.csv"; string oldFileYYYYMM = data.recentFilePath.ToString().Substring(data.recentFilePath.ToString().Length - 15, 6); string newFileYYYYMM = filename.Substring(filename.Length - 15, 6); log.LogInformation("old: " + oldFileYYYYMM); log.LogInformation("new: " + newFileYYYYMM); // If files match then we need to append the data if (oldFileYYYYMM == newFileYYYYMM) { log.LogInformation("Files match, appending old data"); COReCsvExtractor e = new COReCsvExtractor(); //log.Info("Recent content: " + data.recentFileContent.ToString()); List <Observation> oldObs = e.GetObservations(data.recentFileContent.ToString(), utcOffset); if (oldObs.Count > 0) { oldObs.AddRange(observations); observations = oldObs; } } // Now write the data to string and return string fileContent = loader.GetContentString(observations); //string fileContent = "foo"; var returnObj = new { filename = filename, fileContent = fileContent }; string result = JsonConvert.SerializeObject(returnObj); return(new JsonResult(result)); }