private async Task <ExtractResponse> GetSearchResults(string splunkQuery, Extract extractDetails)
        {
            var extractResponseMessage = new ExtractResponse {
                ExtractResponseMessage = new HttpResponseMessage()
            };

            try
            {
                if (extractDetails.ExtractRequired)
                {
                    splunkQuery = splunkQuery.Replace("{earliest}", extractDetails.QueryFromDate.ToString("MM/dd/yyyy:HH:mm:ss"));
                    splunkQuery = splunkQuery.Replace("{latest}", extractDetails.QueryToDate.ToString("MM/dd/yyyy:HH:mm:ss"));

                    _splunkClient = await _configurationService.GetSplunkClientConfiguration();

                    if (extractDetails != null)
                    {
                        var client = _httpClientFactory.CreateClient("SplunkApiClient");
                        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _splunkClient.ApiToken);
                        var uriBuilder = new UriBuilder
                        {
                            Scheme = "https",
                            Host   = _splunkClient.HostName,
                            Port   = _splunkClient.HostPort,
                            Path   = _splunkClient.BaseUrl,
                            Query  = string.Format(_splunkClient.QueryParameters, HttpUtility.UrlEncode(splunkQuery))
                        };

                        var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, uriBuilder.Uri);
                        _logger.LogInformation("Sending download request to Splunk Cloud API", httpRequestMessage);
                        var response = await client.SendAsync(httpRequestMessage);

                        var responseStream = await response.Content.ReadAsStreamAsync();

                        _logger.LogInformation("Reading content response stream from Splunk Cloud API", responseStream);

                        extractResponseMessage.ExtractResponseStream  = responseStream;
                        extractResponseMessage.ExtractResponseMessage = response;
                        extractResponseMessage.ExtractRequestDetails  = extractDetails;
                    }
                }
                else
                {
                    extractResponseMessage.ExtractResponseMessage.ReasonPhrase = "No extract required";
                    extractResponseMessage.ExtractResponseMessage.StatusCode   = System.Net.HttpStatusCode.NoContent;
                }
            }
            catch (OperationCanceledException operationCancelledException)
            {
                extractResponseMessage.ExtractResponseMessage.ReasonPhrase = operationCancelledException.Message;
                extractResponseMessage.ExtractResponseMessage.StatusCode   = System.Net.HttpStatusCode.RequestTimeout;
            }
            catch (Exception ex)
            {
                extractResponseMessage.ExtractResponseMessage.ReasonPhrase = ex.Message;
                extractResponseMessage.ExtractResponseMessage.StatusCode   = System.Net.HttpStatusCode.InternalServerError;
            }
            return(extractResponseMessage);
        }
Exemplo n.º 2
0
 public static void OpenLog(string id, string filePath = null, bool splunkEnabled = true)
 {
     SplunkEnabled = splunkEnabled;
     lock (Locker)
     {
         requestLog       = new Dictionary <object, RequestLog>();
         Queue            = new FixedSizeQueue(300);
         numBegunRequests = new Dictionary <object, int>();
         threadsEnabled   = new Dictionary <object, bool>();
         restReq          = new RestRequest();
         // Create new Service object
         if (splunkEnabled)
         {
             splunkClient = new SplunkClient();
             splunkClient.SetSource(id);
         }
         if (filePath == null)
         {
             return;
         }
         Logger.filePath = filePath;
         file            = new System.IO.StreamWriter(filePath + "TripThru-" + id + ".log");
     }
 }