class NotifieeAPI::Client

Attributes

api_key[RW]
base_url[RW]
debug_mode[RW]
version[RW]

Public Class Methods

delete(endpoint) click to toggle source
# File lib/notifiee_api/client.rb, line 36
def delete(endpoint)
  request "DELETE", endpoint
end
get(endpoint, **payload) click to toggle source
# File lib/notifiee_api/client.rb, line 16
def get(endpoint, **payload)
  endpoint += "?" + URI.encode_www_form(payload) unless payload.empty?
  request "GET", endpoint
end
patch(endpoint, **payload) click to toggle source
# File lib/notifiee_api/client.rb, line 31
def patch(endpoint, **payload)
  body = JSON.generate(payload)
  request "PATCH", endpoint, body
end
post(endpoint, **payload) click to toggle source
# File lib/notifiee_api/client.rb, line 21
def post(endpoint, **payload)
  body = JSON.generate(payload)
  request "POST", endpoint, body
end
put(endpoint, **payload) click to toggle source
# File lib/notifiee_api/client.rb, line 26
def put(endpoint, **payload)
  body = JSON.generate(payload)
  request "PUT", endpoint, body
end

Private Class Methods

add_headers(request) click to toggle source
# File lib/notifiee_api/client.rb, line 56
def add_headers(request)
  request['authorization'] = "Token #{@api_key}"
  request['Content-Type'] = 'application/json'
  request
end
connection() click to toggle source
# File lib/notifiee_api/client.rb, line 49
def connection
  connection = Net::HTTP.new(@base_url, 443)
  connection.use_ssl = true
  connection.set_debug_output $stderr if @debug_mode
  connection
end
handle(response) click to toggle source
# File lib/notifiee_api/client.rb, line 62
def handle response
  case response
  when Net::HTTPSuccess
    response.body
  when Net::HTTPUnprocessableEntity
    response.body
  when Net::HTTPUnauthorized
    raise NotifieeAPI::Unauthorized.new response.body
  else
    response.body
  end
end
request(method, endpoint, payload=nil) click to toggle source
# File lib/notifiee_api/client.rb, line 42
def request method, endpoint, payload=nil
  req = Net::HTTP.const_get(method.capitalize).new("/#{@version}/#{endpoint}")
  req = add_headers(req)
  req.body = payload
  handle connection.start{ |http| http.request(req) }
end