/// <summary> /// Parse a response and return occured errors /// </summary> public RequestReport HandleResponse(ResponseEx response) { RequestReport result = null; // get the HTTP status code var status = response.StatusHttp; // if success or 'no content' if ((status == HttpStatusCode.OK) || (status == HttpStatusCode.Created) || (status == HttpStatusCode.NoContent)) { // then do nothing, it's not an error } // if any other case else { // create a simple error report result = new RequestReport(status) { Code = "Api.Client.Response.Failure", Message = status.ToString() }; } return(result); }
/// <summary> /// Parse a response and return occured errors /// </summary> public RequestReport HandleResponse <TContent>(out TContent content, ResponseEx response) where TContent : class { RequestReport result = null; content = null; // if we have a response if (response != null) { // get the HTTP status code var status = response.StatusHttp; // if we have a body if (response.HasBody) { // if succeeded if ((status == HttpStatusCode.OK) || (status == HttpStatusCode.Created)) { // deserialize content = response.GetBodyAsJson <TContent>(); // if parsing failed if (content == null) { // wrap in an error report result = new RequestReport(status) { Code = "Api.Client.Response.ParsingFailed.Content", Message = string.Format("Could not parse response body after a success [{0}]", response.GetBodyAsString()) }; } } // if failed else { // deserialize an error result = response.GetBodyAsJson <RequestReport>(); // if parsing succeeded if (result != null) { // update the status result.StatusCode = (int)status; } // if failed else { // wrap in an error report result = new RequestReport(status) { Code = "Api.Client.Response.ParsingFailed.Error", Message = string.Format("Could not parse response body after a failure [{0}]", response.GetBodyAsString()) }; } } } // if no body in the response else { // if it's an error if (status >= HttpStatusCode.BadRequest) { // create a simple error report result = new RequestReport(status) { Code = "Api.Client.Response.Failure", Message = status.ToString() }; } } } return(result); }
/// <summary> /// Create a request /// </summary> protected RequestReport CreateRequest(out RequestFluent request, string endpoint) { RequestReport result = null; request = null; // if we have a valid root uri if (UriRoot != null) { // if we have a given url if (!string.IsNullOrEmpty(endpoint)) { try { // combine the urls endpoint = new Uri(UriRoot, new Uri(endpoint, UriKind.Relative)).ToString(); // if we got a provider if (this._provider != null) { request = this._provider.CreateRequest(endpoint); } // if no provided else { request = RequestFluent.Create(endpoint); } } catch (Exception exc) { // error result = new RequestReport { Code = "Api.Client.CreateRequest.Exception", Message = "ProAbono client library internal error - " + exc.Message, Exception = exc.ToString() }; } } // if no url else { // error result = new RequestReport { Code = "Api.Client.CreateRequest.NoEndpoint", Message = "ProAbono client library internal error suspected - Endpoint is missing" }; } } // if no root URI else { // error result = new RequestReport { Code = "Api.Client.CreateRequest.NoRootUrl", Message = "Configuration error suspected - ProAbono API root url not found" }; } return(result); }