コード例 #1
0
ファイル: Client.cs プロジェクト: SiftScience/sift-dotnet
        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);
        }
コード例 #2
0
        private static string responseErrorMessage(SiftResponse response)
        {
            if (response.ErrorMessage != null)
            {
                return(response.ErrorMessage);
            }

            if (response.Error != null)
            {
                return(response.Error);
            }

            return("Unexpected API error.");
        }
コード例 #3
0
 public SiftException(SiftResponse response) : base(responseErrorMessage(response))
 {
     this.response    = response;
     this.Description = response.Description;
     this.Issues      = response.Issues;
 }