Module: Mailpot::Mail

Defined in:
lib/mailpot/mail.rb

Class Method Summary collapse

Class Method Details

.add_message(message) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/mailpot/mail.rb', line 24

def add_message(message)
 if !@initialized
  initialize
 end
 msg = Hash.new
 msg[:source] = message[:source]
 msg[:sender] = message[:sender]
 msg[:source_ip] = message[:ip]
 msg[:recipients] = message[:recipients]
 # worried about dedupe here and need to come up with a way at 1M messages 
 # a day this could be a lot of storage
 encoded_message = Base64.encode64(msg.to_json)
 deflate_encoded_message = gzdeflate(encoded_message)
 digest = Digest::MD5.hexdigest(deflate_encoded_message)
 store_message(digest, deflate_encoded_message)
end

.gzdeflate(s) ⇒ Object



50
51
52
# File 'lib/mailpot/mail.rb', line 50

def gzdeflate(s)
 Zlib::Deflate.new(nil, -Zlib::MAX_WBITS).deflate(s, Zlib::FINISH)
end

.initializeObject

setup connections etc



14
15
16
17
18
19
20
21
22
# File 'lib/mailpot/mail.rb', line 14

def initialize
 config = Mailpot.get_config
 yml = YAML.load_file config[:key_file]
 @bucket = yml['bucket']
 @queue = yml['queue']
 @s3 = AWS::S3.new(yml)
 @sqs = AWS::SQS.new(yml)
 @initialized = true
end

.store_message(key, value) ⇒ Object



41
42
43
44
45
46
47
48
# File 'lib/mailpot/mail.rb', line 41

def store_message(key, value)
 Thread.new {
  mail = @s3.buckets[@bucket].objects[key]
  mail.write(value)
  q = @sqs.queues[@queue]
  msg = q.send_message(key)
 }
end