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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }