Sha256: a18e00baa8f6496643982392ff595294008baa259134f004ce62aa10ac213e1a

Contents?: true

Size: 1.09 KB

Versions: 3

Compression:

Stored size: 1.09 KB

Contents

require 'faraday_middleware'
require_relative 'retry_helper'
require_relative 'mail_catcher_message'

module MailFetcher
  class MailCatcherClient

    attr_accessor :logger

    def initialize(host, port, clean_inbox=false)
      base_url = "http://#{host}:#{port}"
      @connection = Faraday.new base_url do |conn|
        conn.request :json
        conn.response :json, :content_type => /\bjson$/
        conn.use :instrumentation
        conn.adapter Faraday.default_adapter
      end
      delete_all_messages if clean_inbox
    end

    ## @return MailCatcherMessage if message found or nil
    def find(recipient, subject='', wait=1)
      message_id = eventually(:tries => wait, :delay => 1) do
        message_data = all.find { |m| m['recipients'][0].include?(recipient) && m['subject'].include?(subject) }
        message_data ? message_data['id'] : nil
      end
      message_id ? MailCatcherMessage.new(@connection, message_id) : nil
    end

    private

    def delete_all_messages
      @connection.delete('/messages')
    end

    def all
      @connection.get('/messages').body
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mail_fetcher-0.0.4 lib/mail_fetcher/mail_catcher_client.rb
mail_fetcher-0.0.3 lib/mail_fetcher/mail_catcher_client.rb
mail_fetcher-0.0.2 lib/mail_fetcher/mail_catcher_client.rb