Sha256: fc0b03945dc618098360f7972f547a4bd6e05d647ad6b010bae7716691e67fc1

Contents?: true

Size: 1.41 KB

Versions: 1

Compression:

Stored size: 1.41 KB

Contents

module FBGraph
  
  class Base
    
    attr_reader :objects , :connection_type
    
    def initialize(client)
      @client = client
    end


    
    def find(objects)
      @objects = objects
      return self
    end
   
  
    def connection(connection_type)
      @connection_type = connection_type
      return self
    end
    
    def params(params)
      @params = params
      return self
    end  
      

    def info(parsed = true)
      if @objects.is_a? Array
        @params.merge!({:ids => ids.join(',')})
        uri = build_open_graph_uri(nil , nil , @params)
      elsif @objects.is_a? String
        uri = build_open_graph_uri(@objects , @connection_type , @params)
      end
      result = @client.consumer.get(uri)
      return parsed  ? JSON.parse(result) : result
    end
  
  
    def publish(parsed = true)
      consume!(:post , parsed)
    end
  
    def delete(parsed = true)
      @params = {:method => 'delete'}
      consume!(:post, parsed)
    end
  
    private
    
    def build_open_graph_uri(id,connection_type = nil, params = {})
      request = "/" + [id , connection_type].compact.join('/')
      request += "?"+params.to_a.map{|p| p.join('=')}.join('&') 
      request
    end
    
    def consume!(verb, parse)
      uri = build_open_graph_uri(@objects , @connection_type , @params)
      result = @client.consumer.send(verb,uri)
      return parsed  ? JSON.parse(result) : result
    end
  end  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fbgraph-0.0.2 lib/fbgraph/base.rb