class Userlist::Push::Client

Attributes

config[R]

Public Class Methods

new(config = {}) click to toggle source
# File lib/userlist/push/client.rb, line 11
def initialize(config = {})
  @config = Userlist.config.merge(config)

  raise Userlist::ConfigurationError, :push_key unless @config.push_key
  raise Userlist::ConfigurationError, :push_endpoint unless @config.push_endpoint
end

Public Instance Methods

delete(endpoint) click to toggle source
# File lib/userlist/push/client.rb, line 30
def delete(endpoint)
  request(Net::HTTP::Delete, endpoint)
end
get(endpoint) click to toggle source
# File lib/userlist/push/client.rb, line 18
def get(endpoint)
  request(Net::HTTP::Get, endpoint)
end
post(endpoint, payload = nil) click to toggle source
# File lib/userlist/push/client.rb, line 22
def post(endpoint, payload = nil)
  request(Net::HTTP::Post, endpoint, payload)
end
put(endpoint, payload = nil) click to toggle source
# File lib/userlist/push/client.rb, line 26
def put(endpoint, payload = nil)
  request(Net::HTTP::Put, endpoint, payload)
end

Private Instance Methods

endpoint() click to toggle source
# File lib/userlist/push/client.rb, line 63
def endpoint
  @endpoint ||= URI(config.push_endpoint)
end
http() click to toggle source
# File lib/userlist/push/client.rb, line 38
def http
  @http ||= begin
    http = Net::HTTP.new(endpoint.host, endpoint.port)

    if endpoint.scheme == 'https'
      http.use_ssl = true
      http.verify_mode = OpenSSL::SSL::VERIFY_PEER
    end

    http
  end
end
request(method, path, payload = nil) click to toggle source
# File lib/userlist/push/client.rb, line 51
def request(method, path, payload = nil)
  request = method.new(path)
  request['Accept'] = 'application/json'
  request['Authorization'] = "Push #{token}"
  request['Content-Type'] = 'application/json; charset=UTF-8'
  request.body = JSON.generate(payload) if payload

  logger.debug "Sending #{request.method} to #{URI.join(endpoint, request.path)} with body #{request.body}"

  http.request(request)
end
token() click to toggle source
# File lib/userlist/push/client.rb, line 67
def token
  config.push_key
end