lib/fbgraph/base.rb in fbgraph-0.1.6.4.1 vs lib/fbgraph/base.rb in fbgraph-1.5.2

- old
+ new

@@ -1,25 +1,22 @@ module FBGraph class Base - - attr_reader :objects , :connection_type , :logger + attr_reader :objects , :connection_type , :logger, :fields, :last_result def initialize(client) @client = client + @fields = [] @params = {} end - - def find(objects) @objects = objects return self end - def connection(connection_type) @connection_type = connection_type return self end @@ -33,45 +30,58 @@ end def param(pm) @params.merge!(pm) return self - end + end - def info!(parsed = true) + def with_fields(*new_fields) + @fields.concat(new_fields) if !(new_fields.blank? rescue true) + @fields = sanitized_fields + self + end + alias :fields :with_fields + + def info!(parsed = true, &block) + self.instance_eval(&block) if block_given? + @params.merge!(:fields => sanitized_fields.join(',')) unless sanitized_fields.blank? @params.merge!(:access_token => @client.access_token) unless @client.access_token.nil? if @objects.is_a? Array @params.merge!({:ids => @objects.join(',')}) path = build_open_graph_path(nil,nil, params) elsif @objects.is_a? String path = build_open_graph_path(@objects , @connection_type, @params) end - puts "FBGRAPH [GET]: #{path}" - puts "ACCESS TOKEN: #{@client.access_token}" + + # puts "FBGRAPH [GET]: #{path}" + # puts "ACCESS TOKEN: #{@client.access_token}" result = @client.consumer[path].get - return parse_json(result, parsed) + @last_result = ::FBGraph::Result.new(result, @params) end - def publish!(data = {},parsed = true) + def publish!(data = {},parsed = true, &block) @params.merge!(data) + self.instance_eval(&block) if block_given? + @params.merge!(:fields => sanitized_fields.join(',')) unless sanitized_fields.blank? params = @params.merge(:access_token => @client.access_token) if (@client.access_token) path = build_open_graph_path(@objects , @connection_type) - puts "FBGRAPH [POST]: #{path}" - puts "PARAMS: #{params.to_a.map{|p| p.join('=')}.join('&')}" + # puts "FBGRAPH [POST]: #{path}" + # puts "PARAMS: #{params.to_a.map{|p| p.join('=')}.join('&')}" result = @client.consumer[path].post(params) - return parse_json(result, parsed) + @last_result = ::FBGraph::Result.new(result, @params) end - def delete!(parsed = true) + def delete!(parsed = true, &block) + self.instance_eval(&block) if block_given? path = build_open_graph_path(@objects , nil) params = @params.merge(:access_token => @client.access_token) if (@client.access_token) params.merge!(:method => :delete) - puts "FBGRAPH [DELETE]: #{path}" - puts "PARAMS: #{params.to_a.map{|p| p.join('=')}.join('&')}" + # puts "FBGRAPH [DELETE]: #{path}" + # puts "PARAMS: #{params.to_a.map{|p| p.join('=')}.join('&')}" result = @client.consumer[path].post(params) - return parse_json(result, parsed) + @last_result = ::FBGraph::Result.new(result, @params) end %w(limit offset until since).each do |paging| class_eval <<-PAGING def #{paging}(value) @@ -82,13 +92,13 @@ end private - def parse_json(result, parsed) - return parsed ? Hashie::Mash.new(JSON.parse(result.body)) : result.body - end - + def sanitized_fields + @fields.flatten.map(&:to_s).compact + end + def build_open_graph_path(objects, connection_type = nil , params = {}) request = [objects , connection_type].compact.join('/') request += "?"+params.to_a.map{|p| p.join('=')}.join('&') unless params.empty? URI.encode(request) end