Sha256: 588bba5ffc15dc4098b4baeef522d05ef2a99e4d5122adfd70bfcd7ed0e19d3f

Contents?: true

Size: 1.8 KB

Versions: 13

Compression:

Stored size: 1.8 KB

Contents

module Contentful
  module Management
    # All errors raised by the contentful gem are either instances of Contentful::Management::Error
    # or inherit from Contentful::Management::Error
    class Error < StandardError
      attr_reader :response, :error

      def initialize(response)
        @response = response
        @error = {
          url: response.request.endpoint,
          message: response.error_message,
          details: response.raw.body.instance_variable_get(:@contents)
        }
        super @response.error_message
      end

      # Shortcut for creating specialized error classes
      # USAGE rescue Contentful::Management::Error[404]
      def self.[](error_status_code)
        case error_status_code
        when 404
          NotFound
        when 400
          BadRequest
        when 403
          AccessDenied
        when 409
          Conflict
        when 401
          Unauthorized
        when 422
          UnprocessableEntity
        when 429
          RateLimitExceeded
        when 500
          ServerError
        when 503
          ServiceUnavailable
        else
          Error
        end
      end
    end

    # 404
    class NotFound < Error
    end

    # 400
    class BadRequest < Error
    end

    # 403
    class AccessDenied < Error
    end

    # 401
    class Unauthorized < Error
    end

    # 409
    class Conflict < Error
    end

    # 422
    class UnprocessableEntity < Error
    end

    # 429
    class RateLimitExceeded < Error
    end

    # 500
    class ServerError < Error
    end

    # 503
    class ServiceUnavailable < Error
    end

    # Raised when response is no valid json
    class UnparsableJson < Error
    end

    # Raised when response is not parsable as a Contentful::Management::Resource
    class UnparsableResource < Error
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
contentful-management-1.9.0 lib/contentful/management/error.rb
contentful-management-1.8.1 lib/contentful/management/error.rb
contentful-management-1.8.0 lib/contentful/management/error.rb
contentful-management-1.7.0 lib/contentful/management/error.rb
contentful-management-1.6.0 lib/contentful/management/error.rb
contentful-management-1.5.0 lib/contentful/management/error.rb
contentful-management-1.4.0 lib/contentful/management/error.rb
contentful-management-1.3.0 lib/contentful/management/error.rb
contentful-management-1.2.0 lib/contentful/management/error.rb
contentful-management-1.1.0 lib/contentful/management/error.rb
contentful-management-1.0.1 lib/contentful/management/error.rb
contentful-management-1.0.0 lib/contentful/management/error.rb
contentful-management-0.9.0 lib/contentful/management/error.rb