Sha256: 194aebffd2606f1fe27cb39afadc09e92627423da0dcf3ad70c1c175e62734df

Contents?: true

Size: 1.16 KB

Versions: 3

Compression:

Stored size: 1.16 KB

Contents

require 'pushbullet_ruby/push'

module PushbulletRuby
  class Pushable
    class MissingParameter < StandardError; end

    attr_reader :client, :receiver, :identifier, :params

    def self.push(client, receiver, identifier, params)
      Push.new(new(client, receiver, identifier, params).push.body)
    end

    def initialize(client, receiver, identifier, params)
      @client = client
      @receiver = receiver
      @identifier = identifier
      @params = params
    end

    def push
      raise MissingParameter unless params.keys.sort == required_parameters.sort

      payload = params.merge(type: type)
      payload = specify_receiver(payload)
      client.post('/v2/pushes', payload)
    end

    def specify_receiver(payload)
      if receiver && identifier
        payload.merge(receiver_type => identifier)
      else
        payload
      end
    end

    def receiver_type
      case receiver
        when :device then :device_iden
        when :email then receiver
        when :channel then :channel_tag
        when :client then :client_iden
        else
          raise NotImplementedError
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pushbullet_ruby-1.0.2.1 lib/pushbullet_ruby/pushable.rb
pushbullet_ruby-1.0.2 lib/pushbullet_ruby/pushable.rb
pushbullet_ruby-1.0.1 lib/pushbullet_ruby/pushable.rb