/// <summary> /// Gets SoilMoisture data using the given TimeSeriesInput parameters. /// </summary> /// <param name="input"></param> /// <returns></returns> public ITimeSeriesOutput GetSoilMoisture(SoilMoistureInput input) { string errorMsg = ""; // Constructs default error output object containing error message. Utilities.ErrorOutput err = new Utilities.ErrorOutput(); // Validate SoilMoisture sources. errorMsg = (!Enum.TryParse(input.Source, true, out SoilMSources pSource)) ? "ERROR: 'Source' was not found or is invalid." : ""; if (errorMsg.Contains("ERROR")) { return(err.ReturnError(errorMsg)); } // SoilMoisture object SoilMoisture.SoilMoisture soilM = new SoilMoisture.SoilMoisture() { Layers = input.Layers }; // Assigning dataset values, used to determine base url List <string> dataset = new List <string>(); foreach (string layer in soilM.Layers) { string l = layer.Replace('-', '_'); dataset.Add(l + "_SOILM"); } // ITimeSeriesInputFactory object used to validate and initialize all variables of the input object. ITimeSeriesInputFactory iFactory = new TimeSeriesInputFactory(); soilM.Input = iFactory.SetTimeSeriesInput(input, dataset, out errorMsg); // If error occurs in input validation and setup, errorMsg is added to metadata of an empty object. if (errorMsg.Contains("ERROR")) { return(err.ReturnError(errorMsg)); } // Gets the SoilMoisture data. ITimeSeriesOutput result = soilM.GetData(out errorMsg); if (errorMsg.Contains("ERROR")) { return(err.ReturnError(errorMsg)); } return(result); }
public async Task ValidRequests(string soilmoistureInputString) { string endpoint = "api/hydrology/soilmoisture"; SoilMoistureInput input = JsonConvert.DeserializeObject <SoilMoistureInput>(soilmoistureInputString); Debug.WriteLine("Integration Test: Soil Moisture controller; Endpoint:" + endpoint + "; Data source: " + input.Source); var response = await _client.PostAsync( endpoint, new StringContent(JsonConvert.SerializeObject(input), Encoding.UTF8, "application/json")); response.EnsureSuccessStatusCode(); var result = await response.Content.ReadAsStringAsync(); Assert.NotNull(result); TimeSeriesOutput resultObj = JsonConvert.DeserializeObject <TimeSeriesOutput>(result); Assert.Equal(365, resultObj.Data.Count); }