Sha256: 42479713f99c1eb3871114934eedf4a5cafc32f36eecd3bd19c7dc94968facbb

Contents?: true

Size: 1014 Bytes

Versions: 21

Compression:

Stored size: 1014 Bytes

Contents

require 'bobot/events/common'
require 'bobot/events/message'
require 'bobot/events/message_echo'
require 'bobot/events/delivery'
require 'bobot/events/postback'
require 'bobot/events/optin'
require 'bobot/events/read'
require 'bobot/events/account_linking'
require 'bobot/events/referral'

module Bobot
  module Event
    EVENTS = {
      'message' => Message,
      'delivery' => Delivery,
      'postback' => Postback,
      'optin' => Optin,
      'read' => Read,
      'account_linking' => AccountLinking,
      'referral' => Referral,
      'message_echo' => MessageEcho,
    }.freeze

    def self.parse(payload)
      return MessageEcho.new(payload) if payload_is_echo?(payload)

      EVENTS.each do |event, klass|
        return klass.new(payload) if payload.key?(event)
      end

      raise UnknownPayload.new(payload)
    end

    def self.payload_is_echo?(payload)
      payload.key?('message') && payload['message']['is_echo'] == true
    end

    class UnknownPayload < Bobot::Error; end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
bobot-3.7.3 lib/bobot/event.rb
bobot-3.7.2 lib/bobot/event.rb
bobot-3.6.3 lib/bobot/event.rb
bobot-3.6.0 lib/bobot/event.rb
bobot-3.5.2 lib/bobot/event.rb
bobot-3.5.1 lib/bobot/event.rb
bobot-3.5.0 lib/bobot/event.rb
bobot-3.0.7 lib/bobot/event.rb
bobot-3.0.6 lib/bobot/event.rb
bobot-3.0.5 lib/bobot/event.rb
bobot-3.0.3 lib/bobot/event.rb
bobot-3.0.2 lib/bobot/event.rb
bobot-3.0.1 lib/bobot/event.rb
bobot-2.6.2 lib/bobot/event.rb
bobot-2.6.1 lib/bobot/event.rb
bobot-2.6.0 lib/bobot/event.rb
bobot-2.5.0 lib/bobot/event.rb
bobot-2.3.0 lib/bobot/event.rb
bobot-2.1.0 lib/bobot/event.rb
bobot-1.0.53 lib/bobot/event.rb