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> /// This will update some of the properties in an existing Kensho datafeed. /// </summary> /// <param name="request">Aa add_datafeed_users request.</param> /// <returns>A create_datafeed response.</returns> private static KenshoUpdateDatafeedResponse SendUpdateDatafeedRequestAsync(KenshoUpdateDatafeedRequest request) { KenshoUpdateDatafeedResponse response; Console.WriteLine(JObject.Parse(JsonConvert.SerializeObject(request))); KenshoBaseResponse responseMessage = kenshoProvider.SendRequestAsync(JsonConvert.SerializeObject(request), UpdateDatafeedString).Result; response = new KenshoUpdateDatafeedResponse() { StatusCode = responseMessage.StatusCode == HttpStatusCode.NoContent ? HttpStatusCode.OK : responseMessage.StatusCode, ContentOrErrorMessage = responseMessage.ContentOrErrorMessage, }; return(response); }
/// <summary> /// Just a generic message and get the response. /// </summary> /// <param name="json">The json for the request.</param> /// <param name="apiCommand">The api command that Kensho recognizes.</param> /// <returns></returns> public async Task <KenshoBaseResponse> SendRequestAsync(string json, string apiCommand) { // Most requests go to Kensho standard API, but one goes to the backend API (this is the Azure cogitive API for the // Kensho connector). Documentation on this can be found at: // https://westus2.dev.cognitive.microsoft.com/docs/services/AnomalyDetector/operations/post-timeseries-last-detect bool useBackend = (apiCommand == AnomalyDetectorTimeSeriesLastDetect); string url = useBackend ? $"{this.kenshoSettings.BackendAPIURL}/{apiCommand}" : $"{this.kenshoSettings.APIURL}/{apiCommand}"; KenshoBaseResponse response; try { HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post, new Uri(url)); requestMessage.Content = new StringContent(json, Encoding.UTF8); requestMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); requestMessage.Headers.Add("Accept", "application/json"); if (useBackend) { requestMessage.Headers.Add("Ocp-Apim-Subscription-Key", this.kenshoSettings.BackendAPITenantKey); } else { requestMessage.Headers.Add("x-api-key", this.kenshoSettings.APITenantKey); } HttpResponseMessage httpResponse = await httpClient.SendAsync(requestMessage); response = new KenshoBaseResponse() { StatusCode = httpResponse.StatusCode, ContentOrErrorMessage = httpResponse.Content != null ? await httpResponse.Content.ReadAsStringAsync() : "", }; } catch (Exception excep) { Console.WriteLine($"Kensho API Post Exception: {excep.ToString()}"); response = new KenshoBaseResponse() { StatusCode = HttpStatusCode.InternalServerError, ContentOrErrorMessage = $"Kensho API Post Exception: {excep.Message}", }; } return(response); }