public static T DeSerializeNull <T>(SdkResponse sdkResponse) where T : SdkResponse { var t = Activator.CreateInstance <T>(); t.HttpHeaders = sdkResponse.HttpHeaders; t.HttpBody = sdkResponse.HttpBody; t.HttpStatusCode = sdkResponse.HttpStatusCode; return(t); }
public static T DeSerialize <T>(SdkResponse response) where T : SdkResponse { var jsonObject = JsonConvert.DeserializeObject <T>(response.HttpBody, GetJsonSettings()) ?? Activator.CreateInstance <T>(); jsonObject.HttpStatusCode = response.HttpStatusCode; jsonObject.HttpHeaders = response.HttpHeaders; jsonObject.HttpBody = response.HttpBody; return(jsonObject); }
public static T DeSerialize <T>(SdkResponse sdkResponse) where T : SdkResponse { var jsonObject = JsonConvert.DeserializeObject <T>(sdkResponse.GetHttpBody()); if (jsonObject == null) { return(DeSerializeNull <T>(sdkResponse)); } jsonObject.HttpStatusCode = sdkResponse.HttpStatusCode; jsonObject.HttpHeaders = sdkResponse.HttpHeaders; jsonObject.HttpBody = sdkResponse.HttpBody; return(jsonObject); }
private SdkResponse _http(string url, string method, string contentType, Dictionary <string, string> headers, string content) { var request = GetHttpRequest(url, method, contentType, headers, content); _credential.SignAuthRequest(request); var client = new SdkHttpClient(_httpConfig); var message = client.InitHttpRequest(request); var result = new SdkResponse(); try { var task = client.DoHttpRequest(message); var requestId = task.Result.Headers.GetValues(XRequestId).FirstOrDefault(); result.HttpStatusCode = (int)task.Result.StatusCode; result.HttpHeaders = task.Result.Headers.ToString(); result.HttpBody = task.Result.Content.ReadAsStringAsync().Result; if (result.HttpStatusCode < 400) { return(result); } SdkError sdkError; try { sdkError = GetSdkErrorFromResponse(requestId, result); } catch (Exception exception) { throw new ServerResponseException(result.HttpStatusCode, new SdkError { ErrorMsg = exception.Message }); } if (result.HttpStatusCode >= 400 && result.HttpStatusCode < 500) { throw new ClientRequestException(result.HttpStatusCode, sdkError); } throw new ServerResponseException(result.HttpStatusCode, sdkError); } catch (AggregateException aggregateException) { throw new ConnectionException(aggregateException.Message); } }
private SdkError HandleServiceCommonException(SdkResponse response) { var exception = JsonConvert.DeserializeObject <Dictionary <string, object> >(response.HttpBody); if (exception.ContainsKey("code") && exception.ContainsKey("message")) { return(new SdkError(exception["code"].ToString(), exception["message"].ToString())); } foreach (var item in exception) { var jValue = JObject.Parse(item.Value.ToString()); var message = jValue["message"]; var code = jValue["code"]; if (message != null && code != null) { return(new SdkError(code.ToString(), message.ToString())); } } return(new SdkError(response.HttpBody)); }
private HttpResponseMessage GetResult(HttpResponseMessage responseMessage) { if ((int)responseMessage.StatusCode < 400) { return(responseMessage); } var result = new SdkResponse { HttpStatusCode = (int)responseMessage.StatusCode, HttpHeaders = responseMessage.Headers.ToString(), HttpBody = responseMessage.Content.ReadAsStringAsync().Result }; var requestId = responseMessage.Headers.GetValues(XRequestId).FirstOrDefault(); SdkError sdkError; try { sdkError = GetSdkErrorFromResponse(requestId, result); } catch (Exception exception) { throw new ServerResponseException(result.HttpStatusCode, new SdkError { ErrorMsg = exception.Message }); } if (result.HttpStatusCode >= 400 && result.HttpStatusCode < 500) { throw new ClientRequestException(result.HttpStatusCode, sdkError); } throw new ServerResponseException(result.HttpStatusCode, sdkError); }
protected virtual SdkError HandleServiceSpecException(SdkResponse response) { return(new SdkError()); }
private static SdkError HandleServiceSpecException(SdkResponse response) { return(new SdkError()); }
public static List <T> DeSerializeList <T>(SdkResponse sdkResponse) { var data = JArray.Parse(sdkResponse.GetHttpBody()).ToObject <List <T> >(); return(data); }