class Facebook::Leads::ResponseClient

Attributes

responses[R]

Public Class Methods

new(access_token) click to toggle source
# File lib/facebook/leads.rb, line 10
def initialize(access_token)
  @responses    = []
  @access_token = access_token
end

Public Instance Methods

get_form_responses(form_id) click to toggle source
# File lib/facebook/leads.rb, line 15
def get_form_responses(form_id)
  response  = request(url(form_id))

  process_response(response)

  while @next_link
    response = request(@next_link)
    process_response(response)
  end

  return @responses
end

Private Instance Methods

process_response(response) click to toggle source
# File lib/facebook/leads.rb, line 29
def process_response(response)
  if response.is_a? Hash
    return response
  end

  body = JSON.parse(response.body)

  @responses.concat(body["data"])

  paging     = body["paging"]
  @next_link = paging["next"]
end
request(url) click to toggle source
# File lib/facebook/leads.rb, line 42
def request(url)
  begin

    RestClient.get(url)

  rescue RestClient::Exception, Errno::ECONNREFUSED => e
    begin
      body    = JSON.parse(e.http_body)
      error   = body["error"]
      reason  = error["message"]
      fb_code = error["code"]
    rescue => p
      reason  = e.http_body
      fb_code = "-1"
    end

    return {
      :success     => false,
      :status_code => e.http_code,
      :fb_code     => fb_code,
      :reason      => reason
    }
  end
end
url(form_id) click to toggle source
# File lib/facebook/leads.rb, line 67
def url(form_id)
  base_url = "https://graph.facebook.com/v2.6/"
  [base_url, form_id, "/leads?access_token=", @access_token].compact.join
end