class Mailosaur::MailosaurClient

Public Class Methods

new(api_key, base_url = 'https://mailosaur.com/') click to toggle source

Creates initializes a new instance of the MailosaurClient class. @param api_key [String] your Mailosaur API key. @param base_url [String] the base URI of the service.

# File lib/mailosaur.rb, line 50
def initialize(api_key, base_url = 'https://mailosaur.com/')
  @api_key = api_key
  @base_url = base_url
end

Public Instance Methods

analysis() click to toggle source

@return [Analysis] analysis

# File lib/mailosaur.rb, line 56
def analysis
  @analysis ||= Analysis.new(connection, method(:handle_http_error))
end
files() click to toggle source

@return [Files] files

# File lib/mailosaur.rb, line 61
def files
  @files ||= Files.new(connection, method(:handle_http_error))
end
messages() click to toggle source

@return [Messages] messages

# File lib/mailosaur.rb, line 66
def messages
  @messages ||= Messages.new(connection, method(:handle_http_error))
end
servers() click to toggle source

@return [Servers] servers

# File lib/mailosaur.rb, line 71
def servers
  @servers ||= Servers.new(connection, method(:handle_http_error))
end
usage() click to toggle source

@return [Usage] usage

# File lib/mailosaur.rb, line 76
def usage
  @usage ||= Usage.new(connection, method(:handle_http_error))
end

Private Instance Methods

connection() click to toggle source
# File lib/mailosaur.rb, line 82
def connection
  Faraday.new(@base_url, {
    headers: {
      content_type: 'application/json; charset=utf-8',
      user_agent: 'mailosaur-ruby/' + Mailosaur::VERSION
    }
  }).tap { |conn| conn.basic_auth(@api_key, '') }
end
handle_http_error(response) click to toggle source
# File lib/mailosaur.rb, line 91
def handle_http_error(response)
  case response.status
  when 400
    raise Mailosaur::MailosaurError.new('Request had one or more invalid parameters.', 'invalid_request', response.status, response.body)
  when 401
    raise Mailosaur::MailosaurError.new('Authentication failed, check your API key.', 'authentication_error', response.status, response.body)
  when 403
    raise Mailosaur::MailosaurError.new('Insufficient permission to perform that task.', 'permission_error', response.status, response.body)
  when 404
    raise Mailosaur::MailosaurError.new('Request did not find any matching resources.', 'invalid_request', response.status, response.body)
  else
    raise Mailosaur::MailosaurError.new('An API error occurred, see httpResponse for further information.', 'api_error', response.status, response.body)
  end
end