Module: MailRunner::QueueManagerBot

Defined in:
lib/mail_runner/queue_manager_bot.rb

Class Method Summary collapse

Class Method Details

.add_to_mail_queue(webhook, parcel) ⇒ Object



5
6
7
8
9
10
# 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) ⇒ Object



42
43
44
45
46
47
48
49
50
# 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_queueObject



28
29
30
31
32
33
34
35
36
37
38
39
# 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_queueObject



16
17
18
19
20
21
22
23
24
25
26
# 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_lengthObject



12
13
14
# File 'lib/mail_runner/queue_manager_bot.rb', line 12

def self.queue_length
  return $redis.llen("mail_room")
end