class MailHandler::Receiver
handling receiving email
Constants
- Search
@param [Hash] - search options @see MailHandler::Receiving::Checker::AVAILABLE_SEARCH_OPTIONS for available options
@param [Time] - search started at Time @param [Time] - search finished at Time @param [int] - how long search lasted @param [int] - how long search can last @param [boolean] - result of search @param [Mail] - first email found @param [Array] - all emails found
Attributes
checker[RW]
max_search_duration[RW]
search[RW]
search_frequency[RW]
validate_result[RW]
Public Class Methods
new(checker)
click to toggle source
# File lib/mailhandler/receiver.rb, line 37 def initialize(checker) @checker = checker @max_search_duration = DEFAULTS::MAX_SEARCH_DURATION @search_frequency = DEFAULTS::SEARCH_FREQUENCY @validate_result = false end
Public Instance Methods
find_email(options)
click to toggle source
# File lib/mailhandler/receiver.rb, line 44 def find_email(options) init_search_details(options) checker.start until search_time_expired? break if single_search(options) sleep search_frequency end notify_observers(search) checker.search_result ensure checker.stop check_result end
Private Instance Methods
check_result()
click to toggle source
# File lib/mailhandler/receiver.rb, line 63 def check_result return unless validate_result return if checker.search_result raise SearchEmailError, "Email searched by #{@search.options} not found for #{@search.max_duration} seconds." end
init_search_details(options)
click to toggle source
# File lib/mailhandler/receiver.rb, line 77 def init_search_details(options) @search = Search.new @search.options = options @search.started_at = Time.now @search.max_duration = @max_search_duration end
search_details_set?()
click to toggle source
# File lib/mailhandler/receiver.rb, line 91 def search_details_set? !search.duration.nil? end
search_time_expired?()
click to toggle source
# File lib/mailhandler/receiver.rb, line 100 def search_time_expired? ((Time.now - search.started_at) > @max_search_duration) && search_details_set? end
single_search(options)
click to toggle source
# File lib/mailhandler/receiver.rb, line 70 def single_search(options) received = checker.find(options) update_search_details notify_observers(search) received end
update_search_details()
click to toggle source
# File lib/mailhandler/receiver.rb, line 84 def update_search_details search.finished_at = Time.now search.duration = search.finished_at - search.started_at search.result = checker.search_result update_search_email_details end
update_search_email_details()
click to toggle source
# File lib/mailhandler/receiver.rb, line 95 def update_search_email_details search.emails = checker.found_emails search.email = checker.found_emails.first end