class Jobshop::Mailroom::Postmaster
Reponsible for processing incoming email and dispatching it to its handler.
Public Instance Methods
copy_to(prefix)
click to toggle source
# 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()
click to toggle source
# 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, *)
click to toggle source
# 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) message = Mail.new(File.read(tempfile)) handler = Mailman.handler_for(message) if handler.process copy_to(handler.archive_prefix) delete_original sqs_msg.delete end ensure @event = nil tempfile.close tempfile.unlink end
s3()
click to toggle source
# File lib/jobshop/mailroom/postmaster.rb, line 36 def s3 @s3 ||= Aws::S3::Client.new end