public ApiResponse(IResponse response, T bodyAsObject) { response.ArgumentNotNull(nameof(response)); HttpResponse = response; Body = bodyAsObject; }
public IApiResponse <T> DeserializeResponse <T>(IResponse response) where T : class { response.ArgumentNotNull(nameof(response)); if (response.ContentType != null && response.ContentType.Equals("application/json", StringComparison.Ordinal)) { var body = response.Body as string; if (!string.IsNullOrEmpty(body) && body != "{}") { #if NET40 || NET45 || NET46 var typeIsDictionary = typeof(IDictionary).IsAssignableFrom(typeof(T)); var typeIsEnumerable = typeof(IEnumerable).IsAssignableFrom(typeof(T)); #else var typeIsDictionary = typeof(IDictionary).GetTypeInfo().IsAssignableFrom(typeof(T).GetTypeInfo()); var typeIsEnumerable = typeof(IEnumerable).GetTypeInfo().IsAssignableFrom(typeof(T).GetTypeInfo()); #endif var responseIsObject = body != null && body.StartsWith("{", StringComparison.Ordinal); if (!typeIsDictionary && typeIsEnumerable && responseIsObject) { body = "[" + body + "]"; } var json = serializer.Deserialize <T>(body); return(new ApiResponse <T>(response, json)); } } return(new ApiResponse <T>(response)); }
public RateLimitExceededException(IResponse response, Exception innerException) : base(response, innerException) { response.ArgumentNotNull(nameof(response)); rateLimit = response.ApiInfo.RateLimit; }
public ApiException(IResponse response, Exception innerException) : base(null, innerException) { response.ArgumentNotNull(nameof(response)); StatusCode = response.StatusCode; ApiError = GetApiErrorFromExceptionMessage(response); HttpResponse = response; }