/// <summary> /// Gets the search results for the pertinent request identifier. /// Implementation should have dedicated parsers to format the received results into MBF /// </summary> /// <remarks>An exception is thrown if the request does not succeed.</remarks> /// <param name="requestIdentifier">Identifier for the request of interest.</param> /// <param name="parameters">Blast input parameters</param> /// <returns>The search results</returns> public string GetResult( string requestIdentifier, BlastParameters parameters) { string resultUri = _blastClient.GetJobResult(new Guid(requestIdentifier)); WebAccessor accessor = new WebAccessor(); WebAccessorResponse webAccessorResponse = null; if (Configuration.UseBrowserProxy) { accessor.GetBrowserProxy(); } webAccessorResponse = accessor.SubmitHttpRequest( new Uri(resultUri), false, // POST request new Dictionary <string, string>()); if (!webAccessorResponse.IsSuccessful) { // failure accessor.Close(); return(null); } accessor.Close(); return(webAccessorResponse.ResponseString); }
/// <summary> /// Gets the search results for the pertinent request identifier. /// Implementation should have dedicated parsers to format the received results into Bio /// </summary> /// <remarks>An exception is thrown if the request does not succeed.</remarks> /// <param name="requestIdentifier">Identifier for the request of interest.</param> /// <param name="parameters">Blast input parameters</param> /// <returns>The search results</returns> public string GetResult( string requestIdentifier, BlastParameters parameters) { if (parameters == null) { throw new ArgumentNullException("parameters"); } string status = string.Empty; string information = string.Empty; WebAccessor accessor = new WebAccessor(); WebAccessorResponse webAccessorResponse = null; parameters.Add(PARAMETERCOMMAND, COMMANDGET); parameters.Add(PARAMETERJOBID, requestIdentifier); parameters.Add(PARAMETERFORMAT, FORMATXML); if (Configuration.UseBrowserProxy) { accessor.GetBrowserProxy(); } webAccessorResponse = accessor.SubmitHttpRequest( ServiceUri, true, // POST request parameters.Settings); if (!webAccessorResponse.IsSuccessful) { // failure accessor.Close(); return(null); } accessor.Close(); information = ExtractInfoSection(webAccessorResponse.ResponseString); if (!String.IsNullOrEmpty(information)) { int statusStart = information.IndexOf("Status=", StringComparison.OrdinalIgnoreCase); if (statusStart >= 0) { statusStart += "Status=".Length; int statusEnd = information.IndexOf('\n', statusStart); if (statusEnd >= 0) { status = information.Substring(statusStart, statusEnd - statusStart); } } } if (!string.IsNullOrEmpty(status)) { if (status == STATUSWAITING) { return(null); } else { string message = String.Format(CultureInfo.InvariantCulture, Resources.INVALIDNCBISTATUS, status); throw new Exception(message); } } return(webAccessorResponse.ResponseString); }
/// <summary> /// Return the status of a submitted job. /// </summary> /// <param name="requestIdentifier">Identifier for the request of interest.</param> /// <returns>The status of the request.</returns> public ServiceRequestInformation GetRequestStatus(string requestIdentifier) { string information = string.Empty; string errorInformation = string.Empty; WebAccessor accessor = new WebAccessor(); WebAccessorResponse webAccessorResponse = null; ServiceRequestInformation status = new ServiceRequestInformation(); Dictionary <string, string> settings = new Dictionary <string, string>(); settings.Add(PARAMETERCMD, "GET"); settings.Add(PARAMETERRID, System.Web.HttpUtility.UrlEncode(requestIdentifier)); if (Configuration.UseBrowserProxy) { accessor.GetBrowserProxy(); } webAccessorResponse = accessor.SubmitHttpRequest( ServiceUri, true, settings); if (!webAccessorResponse.IsSuccessful) { // failure accessor.Close(); status.Status = ServiceRequestStatus.Error; status.StatusInformation = webAccessorResponse.StatusDescription; return(status); } webAccessorResponse.StatusDescription = string.Empty; information = ExtractInfoSection(webAccessorResponse.ResponseString); if (String.IsNullOrEmpty(information)) { status.Status = ServiceRequestStatus.Error; // see if we got an error message errorInformation = ExtractBlastErrorSection(webAccessorResponse.ResponseString); if (string.IsNullOrEmpty(errorInformation)) { status.StatusInformation = "An unknown server error has occurred."; } else { status.StatusInformation = errorInformation; } return(status); } else { int statusStart = information.IndexOf("Status=", StringComparison.OrdinalIgnoreCase); if (statusStart >= 0) { statusStart += "Status=".Length; int statusEnd = information.IndexOf('\n', statusStart); if (statusEnd >= 0) { webAccessorResponse.StatusDescription = information.Substring(statusStart, statusEnd - statusStart); } } } if (webAccessorResponse.StatusDescription == STATUSWAITING) { status.Status = ServiceRequestStatus.Waiting; return(status); } else if (webAccessorResponse.StatusDescription == STATUSREADY) { status.Status = ServiceRequestStatus.Ready; return(status); } status.Status = ServiceRequestStatus.Error; status.StatusInformation = webAccessorResponse.StatusDescription; return(status); }