private RestResult <T> TrySerializeXml <T> () where T : class { RestResult <T> result = GetRestResult <T> (); // return early if there was a status / data error other than Forbidden if (result.IsError && result.StatusCode == HttpStatusCode.Forbidden) { try { ErrorResult error = XMLHelper.FromXml <ErrorResult> (request.downloadHandler.text); Debug.LogWarning("Authentication Failed: " + error.AuthenticationErrorDetail); } catch (Exception e) { Debug.LogWarning("Authentication Failed: " + e.Message); } return(result); } else if (result.IsError) { return(result); } // otherwise try and serialize XML response text to an object try { result.AnObject = XMLHelper.FromXml <T> (request.downloadHandler.text); } catch (Exception e) { result.IsError = true; result.ErrorMessage = "Failed to parse object of type: " + typeof(T).ToString() + " Exception message: " + e.Message; } return(result); }
/// <summary> /// To be used with a callback which passes the response with result including status success or error code, request url and any body text. /// </summary> /// <param name="callback">Callback.</param> public void Result(Action <RestResponse> callback = null) { RestResult result = GetRestResult(false); if (result.IsError) { Debug.LogWarning("Response error status:" + result.StatusCode + " code:" + request.responseCode + " error:" + result.ErrorMessage + " request url:" + request.url); callback(new RestResponse(result.ErrorMessage, result.StatusCode, request.url, request.downloadHandler.text)); } else { callback(new RestResponse(result.StatusCode, request.url, request.downloadHandler.text)); } }
public void ParseXML <T> (Action <IRestResponse <T> > callback = null) where T : class { RestResult <T> result = TrySerializeXml <T> (); if (result.IsError) { Debug.LogWarning("Response error status:" + result.StatusCode + " code:" + request.responseCode + " error:" + result.ErrorMessage + " request url:" + request.url); callback(new RestResponse <T> (result.ErrorMessage, result.StatusCode, request.url, request.downloadHandler.text)); } else { callback(new RestResponse <T> (result.StatusCode, request.url, request.downloadHandler.text, result.AnObject)); } this.Dispose(); }
private RestResult <T> GetRestResult <T> () where T : class { HttpStatusCode statusCode = (HttpStatusCode)Enum.Parse(typeof(HttpStatusCode), request.responseCode.ToString()); RestResult <T> result = new RestResult <T> (statusCode); if (result.IsError) { result.ErrorMessage = "Response failed with status: " + statusCode.ToString(); return(result); } if (string.IsNullOrEmpty(request.downloadHandler.text)) { result.IsError = true; result.ErrorMessage = "Response has empty body"; return(result); } return(result); }
private RestResult GetRestResult(bool expectedBodyContent = true) { HttpStatusCode statusCode = (HttpStatusCode)Enum.Parse(typeof(HttpStatusCode), request.responseCode.ToString()); RestResult result = new RestResult(statusCode); if (result.IsError) { result.ErrorMessage = "Response failed with status: " + statusCode.ToString(); return(result); } if (expectedBodyContent && string.IsNullOrEmpty(request.downloadHandler.text)) { result.IsError = true; result.ErrorMessage = "Response has empty body"; return(result); } return(result); }