module BotHelpers::Runner
Public Class Methods
get_contents_from_mailbox(mailbox)
click to toggle source
# File lib/mail_runner/bot_helpers/runner.rb, line 4 def self.get_contents_from_mailbox(mailbox) unless File.zero?(mailbox) file = File.open(mailbox, 'r+') file.flock(File::LOCK_EX) #lock file so no other process uses it while open. NOTE: lock before read, so other locks can finish executing. raw_contents = file.read # read contents to var so we can release lock and process later file.truncate(0) #clear mbox file once read file.close #close file to release lock prior to processing contents. #porcess Mail content into array of individual messages raw_mail = raw_contents.split(BotHelpers::Helpers::REGEX_POSTFIX_MESSAGE_DELIMITER) unless raw_mail.size <= 1 raw_mail.shift #remove empty from split end $logger.info("Runner") { "#get_contents_from_mailbox:: #{raw_mail.size} Mail messagess retrieved"} return raw_mail end end
post_to_hook(webhook, parcel)
click to toggle source
# File lib/mail_runner/bot_helpers/runner.rb, line 24 def self.post_to_hook(webhook, parcel) begin response = RestClient.post webhook, :mail_runner_envelope => parcel, :content_type => :json, :accept => :json $mad_statter.incr_stat("mail delivered") $logger.info("Runner") { "#post_to_hook::response code:#{response.code}\n" + "\tEmail from: #{JSON.parse(parcel)[0]['msg']['from_email']} to: #{JSON.parse(parcel)[0]['msg']['email']}\n" + "\tPosted to: #{webhook}" } $logger.debug("Runner") { "#post_to_hook::response header:#{response.headers}"} MailRunner.manager_bot.update_webhook_status("live") rescue $logger.error("Runner") { "#post_to_hook::ABORT: Server appears to be down. Make sure the server is running."} MailRunner.manager_bot.update_webhook_status("down") raise ArgumentError end unless response.code == 200 $logger.error("Runner") { "#post_to_hook::ABORT: Invalid Webhook. Response not 200. NOTE, Must respond to http HEAD method."} raise end return response end