private static KenshoQueryDetectResultAnomaliesResponse SendQueryDetectResultAnomaliesRequestAsync(KenshoQueryDetectResultAnomaliesRequest request) { KenshoQueryDetectResultAnomaliesResponse response; KenshoBaseResponse responseMessage = kenshoProvider.SendRequestAsync(JsonConvert.SerializeObject(request), QueryDetectResultAmomalies).Result; if (responseMessage.StatusCode == HttpStatusCode.OK) { response = new KenshoQueryDetectResultAnomaliesResponse() { StatusCode = HttpStatusCode.OK, AnomalySetList = JsonConvert.DeserializeObject <List <KenshoDetectAnomaly> >(responseMessage.ContentOrErrorMessage), }; } else { response = new KenshoQueryDetectResultAnomaliesResponse() { StatusCode = responseMessage.StatusCode, ContentOrErrorMessage = responseMessage.ContentOrErrorMessage, }; } return(response); }
/// <summary> /// REtrieves any anomalies found on a given date. /// </summary> /// <param name="metricGuid">The metric we are processing.</param> /// <param name="startTime">The date we are processing.</param> /// <param name="configId">The detect config id in Kensho.</param> /// <param name="pageNum">The page of anomalies we are currently on.</param> /// <param name="pageSize">Max number of anomalies to retrieve.</param> /// <returns>A list of anomalies found.</returns> private static List <KenshoDetectAnomaly> GetAnomalies(Guid metricGuid, DateTime startTime, Guid configId, int pageNum, int pageSize) { KenshoQueryDetectResultAnomaliesRequest request = new KenshoQueryDetectResultAnomaliesRequest() { MetricGuid = metricGuid, DetectConfigGuid = configId, StartTime = startTime, EndTime = startTime.AddDays(1), PageNum = pageNum, PageSize = pageSize, Filter = new KenshoQueryFilter() { SeverityFilter = new KenshoQuerySeverityFilter() { // For now, no one is likely to want anything different for this, so we will just hard code these values. // If more flexibility is required later, we will need to modify KenshoTestContent to include a direction and // we will possible want to change the types of min and max severity to be strings instead of the old ints. MinSeverity = "High", MaxSeverity = "High", AnomalyDetectorDirection = "Both", }, }, }; //Console.WriteLine(JObject.Parse(JsonConvert.SerializeObject(request))); KenshoQueryDetectResultAnomaliesResponse response = SendQueryDetectResultAnomaliesRequestAsync(request); if (response.StatusCode != HttpStatusCode.OK) { throw new ProtocolViolationException($"query_detect_results_anomalies returned error {response.StatusCode}, message {response.ContentOrErrorMessage}"); } return(response.AnomalySetList); }