class Mailtruck::Receiver

Public Class Methods

new(addresses) click to toggle source
# File lib/mailtruck/receiver.rb, line 10
def initialize(addresses)
  @addresses = addresses
  @emails = []
end
wait_for(addresses, block) click to toggle source
# File lib/mailtruck/receiver.rb, line 5
def self.wait_for(addresses, block)
  receiver = new(addresses)
  receiver.wait(block)
end

Public Instance Methods

wait(block) click to toggle source
# File lib/mailtruck/receiver.rb, line 15
def wait(block)
  Timeout::timeout(Mailtruck.configuration.timeout) do
    Thread.new do
      EM.run {
        subscribe_to_addresses

        block.call
      }
    end
  end

  while(missing_emails) do
    sleep 0.1
  end

  @emails
rescue Timeout::Error => e
  raise Mailtruck::Timeout
end

Private Instance Methods

client() click to toggle source
# File lib/mailtruck/receiver.rb, line 47
def client
  @client ||= Faye::Client.new(Mailtruck.configuration.receiver_url)
end
missing_emails() click to toggle source
# File lib/mailtruck/receiver.rb, line 51
def missing_emails
  @emails.size < @addresses.size
end
subscribe_to_addresses() click to toggle source
# File lib/mailtruck/receiver.rb, line 37
def subscribe_to_addresses
  @addresses.each do |address|
    channel = "/" + address.prefix

    client.subscribe(channel) do |message|
      @emails << Mailtruck::Email.new(message)
    end
  end
end