/// <summary> /// Loads the deserialized operationModel objects from the flat files. /// </summary> private void LoadDeserializedOperationObjects(IRestClient restClient = null, ISolrLog log = null) { IEnumerable <string> jobFiles = _directoryInfoWrapper.GetFileContentsFromDirectory(); foreach (string jobFileText in jobFiles) { ISolrOperationModel operationModel = JsonConvert.DeserializeObject <SolrOperationModel>(jobFileText); IRestClient operationRestClient = restClient ?? GetSolrRestClient(operationModel); SolrOperations.Add(new SolrOperation(operationModel, operationRestClient, log)); } }
/// <summary> /// Gets the solr response. /// </summary> /// <param name="client">The client.</param> /// <param name="solrOperationModel">The solr operationModel.</param> /// <param name="responseTimeInTicks">The response time in ticks.</param> /// <returns>SolrScheduler.Objects.Models.SolrResponseObject.</returns> private ISolrResponseObject GetSolrResponse(IRestClient client, ISolrOperationModel solrOperationModel, out long responseTimeInTicks) { //Create request IRestRequest request = CreateRequestFromSolrOperation(solrOperationModel); //Start the timer and execute the request DateTime startResponseTime = DateTime.Now; IRestResponse response = client.Execute(request); //Get the time it took for the response to resolve DateTime stopResponseTime = DateTime.Now; responseTimeInTicks = stopResponseTime.Ticks; //Return the deserialized response ISolrResponseObject solrResponse = JsonConvert.DeserializeObject <SolrResponseObject>(response.Content); //Log the action _solrLog.AppendSolrAction(startResponseTime, stopResponseTime, solrOperationModel.Name, solrResponse); return(solrResponse); }
/// <summary> /// Creates the request from solr operationModel. /// </summary> /// <param name="solrOperationModel">The solr operationModel.</param> /// <returns>RestSharp.IRestRequest.</returns> private IRestRequest CreateRequestFromSolrOperation(ISolrOperationModel solrOperationModel) { RestRequest request = new RestRequest("/dataimport", Method.GET); request.AddQueryParameter("wt", "json"); request.AddQueryParameter("command", solrOperationModel.ImportType); if (solrOperationModel.Clean) { request.AddQueryParameter("clean", "true"); } if (solrOperationModel.Commit) { request.AddQueryParameter("commit", "true"); } if (solrOperationModel.Optimize) { request.AddQueryParameter("optimize", "true"); } return(request); }
/// <summary> /// Initializes a new instance of the <see cref="SolrOperation"/> class. /// </summary> /// <param name="operationModel">The operation model.</param> /// <param name="restClient">The rest client.</param> /// <param name="solrLog">The solr log.</param> public SolrOperation(ISolrOperationModel operationModel, IRestClient restClient, ISolrLog solrLog) { OperationModel = operationModel; RestClient = restClient; _solrLog = solrLog; }
/// <summary> /// Gets the solr rest client. /// </summary> /// <param name="solrOperationModel">The solr operationModel.</param> /// <returns>RestSharp.IRestClient.</returns> private IRestClient GetSolrRestClient(ISolrOperationModel solrOperationModel) { return(new RestClient($"http://{solrOperationModel.Server}/{solrOperationModel.Core}/")); }