Sha256: f1ebbd6b74398215c8aaab51be3e06b3b88bc2b65b23de31e28d6417a995ff79

Contents?: true

Size: 1.07 KB

Versions: 3

Compression:

Stored size: 1.07 KB

Contents

require 'http'

require 'pwush/api/messages'
require 'pwush/api/devices'
require 'pwush/api/applications'

module Pwush
  class Client
    include Api::Messages
    include Api::Devices
    include Api::Applications

    def initialize(options)
      @config = Config.new(options)
    end

    private

    def get(action, payload = nil)
      perform_request(:get, action, payload)
    end

    def post(action, payload = nil)
      perform_request(:post, action, payload)
    end

    def perform_request(verb, action, payload)
      Response.wrap { raw_request(verb, action, payload) }
    end

    def raw_request(verb, action, payload)
      request = build_request(payload)
      url     = url(action)

      @config.logger.info(
        "Pushwoosh #{verb.upcase} #{url} BODY #{request.body.to_json}"
      )

      HTTP.timeout(@config.timeout).request(verb, url, json: request.body)
    end

    def build_request(payload = nil)
      Request.new(auth: @config.auth, app: @config.app, payload: payload)
    end

    def url(action)
      [@config.url, action].join('/')
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
njiuko-pwush-0.3.3 lib/pwush/client.rb
njiuko-pwush-0.3.2 lib/pwush/client.rb
njiuko-pwush-0.3.1 lib/pwush/client.rb