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|
|
||||
[
|
||||
'.',
|
||||
'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…
Reference in a new issue