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