class MessageQuickly::CallbackParser

Constants

WEBHOOK_LOOKUP

Public Class Methods

new(json) click to toggle source
# File lib/message_quickly/callback_parser.rb, line 42
def initialize(json)
  @json = json
end

Public Instance Methods

parse() { |event| ... } click to toggle source
# File lib/message_quickly/callback_parser.rb, line 55
def parse
  events = []
  process_entry_json(@json['entry']) do |params|
    WEBHOOK_LOOKUP.keys.each do |key|
      if params[:messaging][key]
        events << WEBHOOK_LOOKUP[key].new(params[:messaging])
        break
      end
    end
  end
  events.each { |event| yield event if block_given? }
  events
end

Private Instance Methods

callback_params(entry, sender, recipient, timestamp, event_json) click to toggle source
# File lib/message_quickly/callback_parser.rb, line 83
def callback_params(entry, sender, recipient, timestamp, event_json)
  {
    entry: entry,
    sender: sender,
    recipient: recipient,
    timestamp: timestamp,
    messaging: event_json.deep_symbolize_keys
  }
end
process_entry_json(json) { |callback_params(entry, sender, recipient, timestamp, event_json)| ... } click to toggle source
# File lib/message_quickly/callback_parser.rb, line 71
def process_entry_json(json)
  json.each do |entry_json|
    entry = Messaging::Entry.new(entry_json)
    entry_json['messaging'].each do |event_json|
      sender = Messaging::Sender.new(event_json['sender'])
      recipient = Messaging::Recipient.new(event_json['recipient'])
      timestamp = event_json['timestamp']
      yield callback_params(entry, sender, recipient, timestamp, event_json)
    end
  end
end