module MailRunner::QueueManagerBot

Public Class Methods

add_to_mail_queue(webhook,parcel) click to toggle source
# File lib/mail_runner/queue_manager_bot.rb, line 5
def self.add_to_mail_queue(webhook,parcel)
  que_packet = [webhook,parcel]
  $redis.lpush("mail_room", que_packet.to_json)
  $logger.info("QueueManagerBot") { "#add_to_mail_queue:: email added to queue for processing later."}
  return true
end
deliver_mail(webhook, json_packet) click to toggle source
# File lib/mail_runner/queue_manager_bot.rb, line 42
def self.deliver_mail(webhook, json_packet)
  begin
    BotHelpers::Runner.post_to_hook(webhook, json_packet)
  rescue 
    $logger.error("QueueManagerBot") { "#deliver_mail::ERROR: \nServer appears to be down. Make sure the server is running."}
    queued = self.add_to_mail_queue(webhook, json_packet)
    raise ArgumentError
  end
end
pop_packet_from_queue() click to toggle source
# File lib/mail_runner/queue_manager_bot.rb, line 28
def self.pop_packet_from_queue
  # Pop from Queue & organize
  key, que_packet = $redis.blpop("mail_room", :timeout => 5) 
        #timeout unnecessary in production because of while condition, but needed for MockRedis in Testing Env.
  $logger.info("QueueManagerBot") { "#item popped from Queue for processing"}
  data = JSON::parse(que_packet)
  
  webhook = data[0]
  json_packet = data[1]

  return webhook, json_packet
 end
process_queue() click to toggle source
# File lib/mail_runner/queue_manager_bot.rb, line 16
def self.process_queue
  $logger.info("QueueManagerBot") { "Queue Length:: #{queue_length}"}
  while queue_length > 0
    $logger.info("QueueManagerBot") { "#process_queue:: Processing queue item:#{queue_length}"}
    webhook, json_packet = pop_packet_from_queue
    
    deliver_mail(webhook, json_packet)
    
    #archive call
  end
end
queue_length() click to toggle source
# File lib/mail_runner/queue_manager_bot.rb, line 12
def self.queue_length
  return $redis.llen("mail_room")
end