class MessageQuickly::Api::Client

Attributes

app_id[RW]
page_access_token[RW]
page_id[RW]

Public Class Methods

new(options = {}) { |self| ... } click to toggle source
# File lib/message_quickly/api/client.rb, line 9
def initialize(options = {})
  options.each { |key, value| instance_variable_set("@#{key}", value) }
  yield self if block_given?
end

Public Instance Methods

delete(request_string, params = {}) click to toggle source
# File lib/message_quickly/api/client.rb, line 34
def delete(request_string, params = {})
  params[:access_token] = page_access_token
  response = connection.delete(request_string) do |request|
    request.headers['Content-Type'] = 'application/json'
    request.body = JSON.generate(params)
  end
  parse_json(response)
end
get(request_string, params = {}) click to toggle source
# File lib/message_quickly/api/client.rb, line 14
def get(request_string, params = {})
  params[:access_token] = page_access_token
  response = connection.get(request_string, params)
  parse_json(response)
end
post(request_string, params = {}) click to toggle source
# File lib/message_quickly/api/client.rb, line 20
def post(request_string, params = {})
  params[:access_token] = page_access_token
  response = connection.post(request_string) do |request|
    if params[:filedata].present?
      request.headers['Content-Type'] = 'multipart/form-data'
      request.body = params
    else
      request.headers['Content-Type'] = 'application/json'
      request.body = JSON.generate(params)
    end
  end
  parse_json(response)
end

Private Instance Methods

connection(params = {}) click to toggle source
# File lib/message_quickly/api/client.rb, line 60
def connection(params = {})
  @connection ||= Faraday.new(:url => "https://graph.facebook.com/#{MessageQuickly::FB_MESSENGER_VERSION}") do |faraday|
    faraday.request :multipart # if params[:multipart]
    faraday.request  :url_encoded # form-encode POST params
    faraday.response :logger unless Rails.env.test? # log requests to STDOUT
    faraday.adapter Faraday.default_adapter  # make requests with Net::HTTP
  end
end
parse_json(response) click to toggle source
# File lib/message_quickly/api/client.rb, line 45
def parse_json(response)
  json = JSON.parse(response.body)
  if json['error']
    case json['error']['type']
    when 'OAuthException'
      raise OauthException.new(json['error'])
    when 'GraphMethodException'
      raise GraphMethodException.new(json['error'])
    else
      raise FacebookApiException.new(json['error'])
    end
  end
  json
end