class PebbleTimeline::API

Public Class Methods

call(url, http_method, params={}) click to toggle source
# File lib/pebble_timeline/api.rb, line 10
def self.call(url, http_method, params={})
  @api ||= self.new
  response = @api.send(http_method, url, params)
  response.body
end
new() click to toggle source
# File lib/pebble_timeline/api.rb, line 3
def initialize
  raise ConfigMissingAPIKeyError, 'You must provide an API Key' unless PebbleTimeline.config.api_key

  @api_key = PebbleTimeline.config.api_key
  @base_url = PebbleTimeline.config.base_url
end

Private Instance Methods

connection() click to toggle source
# File lib/pebble_timeline/api.rb, line 18
def connection
  @connection ||= Faraday.new(url: @api_url) do |faraday|
    faraday.headers['Content-Type'] = 'application/json'
    faraday.headers['X-API-Key'] = @api_key
    faraday.adapter Faraday.default_adapter
    faraday.use PebbleTimeline::Middleware::ErrorDetector
  end
end
delete(path, params) click to toggle source
# File lib/pebble_timeline/api.rb, line 52
def delete(path, params)
  connection.delete do |req|
    req.url resource_url(path)
    req.headers['X-User-Token'] = params.delete(:user_token) if params.has_key? :user_token
  end
end
get(path, params) click to toggle source
# File lib/pebble_timeline/api.rb, line 45
def get(path, params)
  connection.get do |req|
    req.url resource_url(path)
    req.headers['X-User-Token'] = params.delete(:user_token) if params.has_key? :user_token
  end
end
post(path, params) click to toggle source
# File lib/pebble_timeline/api.rb, line 27
def post(path, params)
  connection.post do |req|
    req.url resource_url(path)
    req.headers['X-User-Token'] = params.delete(:user_token) if params.has_key? :user_token
    req.headers['X-Pin-Topics'] = params.delete(:topics) if params.has_key? :topics
    req.body = params.to_json
  end
end
put(path, params) click to toggle source
# File lib/pebble_timeline/api.rb, line 36
def put(path, params)
  connection.put do |req|
    req.url resource_url(path)
    req.headers['X-User-Token'] = params.delete(:user_token) if params.has_key? :user_token
    req.headers['X-Pin-Topics'] = params.delete(:topics) if params.has_key? :topics
    req.body = params.to_json
  end
end
resource_url(path) click to toggle source
# File lib/pebble_timeline/api.rb, line 59
def resource_url(path)
  "#{@base_url}#{path}"
end