Class: Jobshop::Mailroom::Postmaster
- Inherits:
-
Object
- Object
- Jobshop::Mailroom::Postmaster
- Includes:
- Shoryuken::Worker
- Defined in:
- lib/jobshop/mailroom/postmaster.rb
Overview
Jobshop::Mailroom::Postmaster
Reponsible for processing incoming email and dispatching it to its handler.
Defined Under Namespace
Classes: S3EventMessage
Instance Method Summary collapse
Instance Method Details
#copy_to(prefix) ⇒ Object
40 41 42 43 44 45 46 47 48 |
# File 'lib/jobshop/mailroom/postmaster.rb', line 40 def copy_to(prefix) key = prefix + "/" + @event.key.split("/").last s3.copy_object({ copy_source: @event.bucket + "/" + @event.key, bucket: Jobshop.configuration.aws.s3_bucket, key: key }) || raise("Could not copy incoming rfq to processed folder") end |
#delete_original ⇒ Object
50 51 52 53 54 |
# File 'lib/jobshop/mailroom/postmaster.rb', line 50 def delete_original s3.delete_object({ bucket: @event.bucket, key: @event.key }) || raise("Could not delete original email") end |
#perform(sqs_msg) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/jobshop/mailroom/postmaster.rb', line 17 def perform(sqs_msg, *) @event = S3EventMessage.new(sqs_msg.body) || return tempfile = Tempfile.new s3.get_object({ bucket: @event.bucket, key: @event.key }, target: tempfile) = Mail.new(File.read(tempfile)) handler = Mailman.handler_for() if handler.process copy_to(handler.archive_prefix) delete_original sqs_msg.delete end ensure @event = nil tempfile.close tempfile.unlink end |
#s3 ⇒ Object
36 37 38 |
# File 'lib/jobshop/mailroom/postmaster.rb', line 36 def s3 @s3 ||= Aws::S3::Client.new end |