mirror of
				https://github.com/nov/fb_graph2
				synced 2023-03-27 23:22:15 -04:00 
			
		
		
		
	stop retry when 401, and support future v2.x
This commit is contained in:
		
							parent
							
								
									f6aee7496e
								
							
						
					
					
						commit
						0383c1ef66
					
				
					 6 changed files with 31 additions and 21 deletions
				
			
		| 
						 | 
				
			
			@ -2,14 +2,18 @@ require 'active_support/all'
 | 
			
		|||
require 'rack/oauth2'
 | 
			
		||||
 | 
			
		||||
module FbGraph2
 | 
			
		||||
  VERSION = File.read(File.join(__dir__, '../VERSION')).delete("\n\r")
 | 
			
		||||
  ROOT_URL = 'https://graph.facebook.com/v2.0'
 | 
			
		||||
  cattr_accessor :api_version, :gem_version, :logger, :debugging, :_http_config_
 | 
			
		||||
 | 
			
		||||
  cattr_accessor :logger, :debugging, :_http_config_
 | 
			
		||||
  self.api_version = 'v2.0'
 | 
			
		||||
  self.gem_version = File.read(File.join(__dir__, '../VERSION')).delete("\n\r")
 | 
			
		||||
  self.logger = Logger.new(STDOUT)
 | 
			
		||||
  self.logger.progname = 'FbGraph2'
 | 
			
		||||
 | 
			
		||||
  class << self
 | 
			
		||||
    def root_url
 | 
			
		||||
      File.join('https://graph.facebook.com', api_version)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def debugging?
 | 
			
		||||
      !!self.debugging
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			@ -20,10 +24,13 @@ module FbGraph2
 | 
			
		|||
 | 
			
		||||
    def http_client(access_token = nil)
 | 
			
		||||
      _http_client_ = HTTPClient.new(
 | 
			
		||||
        agent_name: "FbGraph2 (#{VERSION})"
 | 
			
		||||
        agent_name: "FbGraph2 (#{gem_version})"
 | 
			
		||||
      )
 | 
			
		||||
      _http_client_.request_filter << RequestFilters::Authenticator.new(access_token) if access_token.present?
 | 
			
		||||
      _http_client_.request_filter << RequestFilters::Debugger.new if self.debugging?
 | 
			
		||||
      _http_client_.request_filter.delete_if do |filter|
 | 
			
		||||
        filter.is_a? HTTPClient::WWWAuth
 | 
			
		||||
      end
 | 
			
		||||
      _http_client_.request_filter << RequestFilter::Authenticator.new(access_token) if access_token.present?
 | 
			
		||||
      _http_client_.request_filter << RequestFilter::Debugger.new if self.debugging?
 | 
			
		||||
      _http_config_.try(:call, _http_client_)
 | 
			
		||||
      _http_client_
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			@ -35,6 +42,11 @@ module FbGraph2
 | 
			
		|||
end
 | 
			
		||||
 | 
			
		||||
require 'fb_graph2/node'
 | 
			
		||||
Dir[File.dirname(__FILE__) + '/fb_graph2/*.rb'].each do |file|
 | 
			
		||||
  require file
 | 
			
		||||
end
 | 
			
		||||
[
 | 
			
		||||
  '.',
 | 
			
		||||
  'request_filter'
 | 
			
		||||
].each do |dir|
 | 
			
		||||
  Dir[File.join(__dir__, 'fb_graph2', dir, '*.rb')].each do |file|
 | 
			
		||||
    require file
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,7 +22,7 @@ module FbGraph2
 | 
			
		|||
    protected
 | 
			
		||||
 | 
			
		||||
    def http_client
 | 
			
		||||
      FbGraph2.http_client access_token
 | 
			
		||||
      FbGraph2.http_client(access_token)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def get(params = {}, options = {})
 | 
			
		||||
| 
						 | 
				
			
			@ -34,11 +34,11 @@ module FbGraph2
 | 
			
		|||
    private
 | 
			
		||||
 | 
			
		||||
    def build_endpoint(options = {})
 | 
			
		||||
      File.join([
 | 
			
		||||
        File.join(ROOT_URL, id.to_s),
 | 
			
		||||
      File.join [
 | 
			
		||||
        File.join(FbGraph2.root_url, id.to_s),
 | 
			
		||||
        options[:connection],
 | 
			
		||||
        options[:connection_scope]
 | 
			
		||||
      ].compact.collect(&:to_s))
 | 
			
		||||
      ].compact.collect(&:to_s)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def build_params(params = {})
 | 
			
		||||
| 
						 | 
				
			
			@ -48,10 +48,11 @@ module FbGraph2
 | 
			
		|||
    def handle_response
 | 
			
		||||
      response = yield
 | 
			
		||||
      _response_ = MultiJson.load(response.body).with_indifferent_access
 | 
			
		||||
      if (200...300).include?(response.status)
 | 
			
		||||
      case response.status
 | 
			
		||||
      when 200...300
 | 
			
		||||
        _response_
 | 
			
		||||
      else
 | 
			
		||||
        Exception.handle_structured_response(response.status, _response_, response.headers)
 | 
			
		||||
        raise response.body
 | 
			
		||||
      end
 | 
			
		||||
    rescue MultiJson::DecodeError
 | 
			
		||||
      raise Exception.new(response.status, "Unparsable Response: #{response.body}")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
module FbGraph2
 | 
			
		||||
  module RequestFilters
 | 
			
		||||
  module RequestFilter
 | 
			
		||||
    class Authenticator < Rack::OAuth2::AccessToken::Authenticator
 | 
			
		||||
      def initialize(access_token)
 | 
			
		||||
        _access_token_ = case access_token
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
module FbGraph2
 | 
			
		||||
  module RequestFilters
 | 
			
		||||
  module RequestFilter
 | 
			
		||||
    class Debugger
 | 
			
		||||
      def filter_request(request)
 | 
			
		||||
        started = "======= [FbGraph2] API REQUEST STARTED ======="
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +0,0 @@
 | 
			
		|||
Dir[File.dirname(__FILE__) + '/request_filters/*.rb'].each do |file|
 | 
			
		||||
  require file
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -5,7 +5,7 @@ describe FbGraph2::Node do
 | 
			
		|||
    it 'should support access_token option' do
 | 
			
		||||
      FbGraph2::Node.new(
 | 
			
		||||
        'matake', :access_token => 'access_token'
 | 
			
		||||
      ).access_token.should be_a Rack::OAuth2::AccessToken
 | 
			
		||||
      ).access_token.should == 'access_token'
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it 'should store raw attributes' do
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue