SiftResponse ProcessResponse(SiftResponse siftResponse, int httpStatusCode) { // Handle success with no content if (siftResponse == null && httpStatusCode == 204) { siftResponse = new SiftResponse { Status = 0 }; } // Handle REST errors if (siftResponse.Status.HasValue && siftResponse.Status != 0) { if (httpStatusCode >= 500 && httpStatusCode < 600) { throw new ServerException(siftResponse); } else if (httpStatusCode >= 400 && httpStatusCode < 500) { switch (siftResponse.Status.Value) { case -4: case -3: case -2: case -1: throw new ServerException(siftResponse); case 51: throw new InvalidApiKeyException(siftResponse); case 52: case 53: case 105: throw new InvalidFieldException(siftResponse); case 55: throw new MissingFieldException(siftResponse); case 56: case 57: case 104: throw new InvalidRequestException(siftResponse); case 60: throw new RateLimitException(siftResponse); } } throw new SiftException(siftResponse); } // Handle v3 errors if (siftResponse.Error != null) { throw new SiftException(siftResponse); } return(siftResponse); }
private static string responseErrorMessage(SiftResponse response) { if (response.ErrorMessage != null) { return(response.ErrorMessage); } if (response.Error != null) { return(response.Error); } return("Unexpected API error."); }
public SiftException(SiftResponse response) : base(responseErrorMessage(response)) { this.response = response; this.Description = response.Description; this.Issues = response.Issues; }