class CoubApi::Client

Attributes

connection[R]
request_options[R]
response[R]
security_options[R]

Public Class Methods

new(access_token = nil, api_version: API_VERSION) click to toggle source
# File lib/coub_api.rb, line 35
def initialize(access_token = nil, api_version: API_VERSION)
  @access_token = access_token
  @api_version = api_version
end

Public Instance Methods

get(*methods, **hargs) click to toggle source
# File lib/coub_api.rb, line 66
def get(*methods, **hargs)
  make_request(methods.join('/'), __method__, **hargs)
end
make_request(method, http_method, request_params = {}) click to toggle source
# File lib/coub_api.rb, line 42
def make_request(method, http_method, request_params = {})
  api_version = request_params.delete(:api_version) || @api_version
  url = "#{CoubApi::API_URL}/v#{api_version}/#{method}.json"

  faraday_options = {request: {timeout: 150, open_timeout: 150}, url: url}
  connection = Faraday.new(faraday_options) do |faraday|
    faraday.headers['Content-Type'] = 'application/json'
    faraday.request :url_encoded
    faraday.response :logger
    faraday.adapter Faraday.default_adapter
  end

  request_params[:access_token] = @access_token if @access_token
  response = connection.send(http_method) do |request|
    request.params = request_params
  end

  json_data = MultiJson.load(response.body)
  if json_data.is_a? Hash
   raise Error, json_data if json_data['error']
  end
  json_data
end
method_missing(name, **hargs) click to toggle source
# File lib/coub_api.rb, line 74
def method_missing(name, **hargs)
  get(name, **hargs)
end
post(*methods, **hargs) click to toggle source
# File lib/coub_api.rb, line 70
def post(*methods, **hargs)
  make_request(methods.join('/'), __method__, **hargs)
end