Sha256: a2129b5be127a03b565861fc552948515a76f457d64b664462ab0ce88398bc6e

Contents?: true

Size: 1.33 KB

Versions: 4

Compression:

Stored size: 1.33 KB

Contents

module MailerLite
  # Base MailerLite error.
  class Error < StandardError
    # Returns the appropriate MailerLite::Error sublcass based on status and
    # response message.
    #
    # @param response [Hash] HTTP response.
    #
    # @return [MailerLite::Error]
    def self.from_response(response)
      status = response[:status].to_i

      klass = case status
      when 400 then MailerLite::BadRequest
      when 401 then MailerLite::Unauthorized
      when 404 then MailerLite::NotFound
      when 500 then MailerLite::InternalServerError
      end

      klass.new if klass
    end
  end

  # Raised when MailerLite returns a 400 HTTP status code
  class BadRequest < Error
    # Default error message.
    def to_s
      'Missing a required parameter or calling invalid method'
    end
  end

  # Raised when MailerLite returns a 401 HTTP status code
  class Unauthorized < Error
    # Default error message.
    def to_s
      'Invalid API key provided'
    end
  end

  # Raised when MailerLite returns a 404 HTTP status code
  class NotFound < Error
    # Default error message.
    def to_s
      "Can't find requested items"
    end
  end

  # Raised when MailerLite returns a 500 HTTP status code
  class InternalServerError < Error
    # Default error message.
    def to_s
      'The server encountered an unexpected condition'
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mailerlite-1.1.0 lib/mailerlite/error.rb
mailerlite-1.0.2 lib/mailerlite/error.rb
mailerlite-1.0.1 lib/mailerlite/error.rb
mailerlite-1.0.0 lib/mailerlite/error.rb