Sha256: 43a0ba9b6bc88819a1c3df84c88eb001a22afbab8cb2f92d0153cbe1c73a958f

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true

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

1 entries across 1 versions & 1 rubygems

Version Path
pwush-0.4.0 lib/pwush/client.rb