Sha256: f3cd9920a7c0ad0ff5c3854f6518f1120fd624fc7e761671529209c4f49b10c6

Contents?: true

Size: 1.56 KB

Versions: 3

Compression:

Stored size: 1.56 KB

Contents

require "facebook/leads/version"
require "rest_client"

module Facebook
  module Leads
    class ResponseClient

      attr_reader :responses

      def initialize(access_token)
        @responses    = []
        @access_token = access_token
      end

      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
      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

      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

      def url(form_id)
        base_url = "https://graph.facebook.com/v2.6/"
        [base_url, form_id, "/leads?access_token=", @access_token].compact.join
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
facebook-leads-0.3.0 lib/facebook/leads.rb
facebook-leads-0.2.0 lib/facebook/leads.rb
facebook-leads-0.1.0 lib/facebook/leads.rb