Repository URL to install this package:
| 
      
        
        
        Version: 
        
         
          
          0.9.15  ▾
        
         | 
require 'httparty'
module ActionSprout::Facebook
  class Graph
    BASE_URL = 'https://graph.facebook.com'
    # Legacy default api version. In the future FACEBOOK_API_VERSION will be
    # required.
    API_VERSION = 'v2.9'
    attr_reader :access_token, :api_version, :http_service
    def self.default_instance
      new env_access_token
    end
    def self.env_access_token
      ENV.fetch('FACEBOOK_APP_ACCESS_TOKEN')
    end
    def self.env_api_version
      ENV.fetch('FACEBOOK_API_VERSION', API_VERSION)
    end
    def initialize(access_token, api_version: self.class.env_api_version, http_service: HTTPService.new)
      @access_token = access_token
      @api_version = api_version
      @http_service = http_service
    end
    def get(path, options = {})
      http_service.get url(path), merged_options(options), self
    end
    def post(path, options = {})
      http_service.post url(path), merged_options(options), self
    end
    private
    def url(path)
      path.starts_with?('http') ? path : build_url(path)
    end
    def build_url(path)
      [BASE_URL, api_version, path].join('/')
    end
    def merged_options(options)
      # options will override base_options
      base_options.deep_merge options
    end
    def base_options
      { query: { access_token: access_token, format: 'json' } }
    end
  end
end