private static bool IsValidRequest(NormalizationTestRequest request, out string message) { if (request == null) { message = "Request body can not be null"; return(false); } if (string.IsNullOrWhiteSpace(request.DeviceMapping)) { message = "Device Mapping can not be null"; return(false); } if (string.IsNullOrWhiteSpace(request.DeviceSample)) { message = "Device test data can not be null"; return(false); } if (!Utility.IsValidJson(request.DeviceMapping, out message) || !Utility.IsValidJson(request.DeviceSample, out message)) { return(false); } message = null; return(true); }
public IActionResult Post([FromBody] NormalizationTestRequest request) { // Validate Request. if (!IsValidRequest(request, out string errorMessage)) { return(this.BadRequest( new NormalizationTestResponse() { Result = TestResult.Fail.ToString(), Reason = errorMessage, })); } // Validate mapping semantic. var templateContext = CollectionContentTemplateFactory.Default.Create(request.DeviceMapping); if (!templateContext.IsValid(out string errors)) { return(this.BadRequest( new NormalizationTestResponse() { Result = TestResult.Fail.ToString(), Reason = errors, })); } // try normalizing and return result. try { var token = JToken.Parse(request.DeviceSample); var measurements = templateContext.Template.GetMeasurements(token); return(this.Ok( new NormalizationTestResponse() { Result = TestResult.Success.ToString(), NormalizedData = JToken.FromObject(measurements).ToString(), })); } catch (Exception ex) { return(this.BadRequest( new NormalizationTestResponse() { Result = TestResult.Fail.ToString(), Reason = ex.Message, })); } }