Sha256: 2dfe64ebbc2761fa9f0d1b12a15b2c59ee798844182ab899a039763550516b99
Contents?: true
Size: 1.72 KB
Versions: 2
Compression:
Stored size: 1.72 KB
Contents
module FbGraph class Node include FbGraph::Comparison attr_accessor :identifier, :endpoint, :access_token def initialize(identifier, options = {}) @identifier = identifier @endpoint = File.join(FbGraph::ROOT_URL, identifier.to_s) @access_token = options[:access_token] end def fetch(options = {}) options[:access_token] ||= self.access_token if self.access_token self.class.fetch(self.identifier, options) end def self.fetch(identifier, options = {}) _fetched_ = new(identifier).send(:get, options) new(_fetched_.delete(:id), _fetched_) end protected def get(options = {}) _endpoint_ = build_endpoint(options) handle_response RestClient.get(_endpoint_) end private def build_endpoint(options = {}) _endpoint_ = if options[:connection] File.join(self.endpoint, options.delete(:connection)) else self.endpoint end options[:access_token] ||= self.access_token _options_ = options.reject do |k, v| v.blank? end _endpoint_ << "?#{_options_.to_query}" unless _options_.blank? _endpoint_ end def handle_response(response) _response_ = JSON.parse(response.to_s).with_indifferent_access if _response_[:error] case _response_[:error][:type] when 'OAuthAccessTokenException' raise FbGraph::Unauthorized.new(_response_[:error][:message]) when 'QueryParseException' raise FbGraph::NotFound.new(_response_[:error][:message]) else raise FbGraph::Exception.new("#{_response_[:error][:type]} :: #{_response_[:error][:message]}") end else _response_ end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
fb_graph-0.0.5 | lib/fb_graph/node.rb |
fb_graph-0.0.4 | lib/fb_graph/node.rb |