Sha256: e849f81b88337ba8d0accee62b3211d9a01f8271cdac20c162deceec2609e9b5

Contents?: true

Size: 928 Bytes

Versions: 1

Compression:

Stored size: 928 Bytes

Contents

module MList
  class Server
    attr_reader :list_manager, :email_server
    
    def initialize(config)
      @list_manager = config[:list_manager]
      @email_server = config[:email_server]
      @email_server.receiver(self)
    end
    
    def receive(email)
      lists = list_manager.lists(email)
      if email.bounce?
        process_bounce(lists.first, email)
      else
        process_post(lists, email)
      end
    end
    
    protected
      def process_bounce(list, email)
        list.bounce(email)
      end
      
      def process_post(lists, email)
        lists.each do |list|
          if list.subscriber?(email.from_address)
            mail_list = MailList.find_or_create_by_list(list)
            mail_list.post(email_server, MList::Message.new(:mail_list => mail_list, :tmail => email.tmail))
          else
            list.non_subscriber_posted(email)
          end
        end
      end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aiwilliams-mlist-0.0.0 lib/mlist/server.rb