Class: MiniFB::GraphObject

Inherits:
Object
  • Object
show all
Defined in:
lib/mini_fb.rb

Overview

Wraps a graph object for easily accessing its connections

Instance Method Summary collapse

Constructor Details

#initialize(session_or_token, id) ⇒ GraphObject

Creates a GraphObject using an OAuthSession or access_token



437
438
439
440
441
442
443
444
445
446
# File 'lib/mini_fb.rb', line 437

def initialize(session_or_token, id)
    @oauth_session = if session_or_token.is_a?(MiniFB::OAuthSession)
        session_or_token
                     else
                         MiniFB::OAuthSession.new(session_or_token)
                     end
    @id = id
    @object = @oauth_session.get(id, :metadata => true)
    @connections_cache = {}
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object



476
477
478
479
480
481
482
483
484
485
486
487
# File 'lib/mini_fb.rb', line 476

def method_missing(method, *args, &block)
    key = method.to_s
    if @object.keys.include?(key)
        @object[key]
    elsif @connections_cache.has_key?(key)
        @connections_cache[key]
    elsif connections.include?(key)
        @connections_cache[key] = @oauth_session.get(@id, :type => key)
    else
        super
    end
end

Instance Method Details

#[](key) ⇒ Object



472
473
474
# File 'lib/mini_fb.rb', line 472

def [](key)
    @object[key]
end

#connectionsObject



452
453
454
# File 'lib/mini_fb.rb', line 452

def connections
    @object..connections.keys
end

#inspectObject



448
449
450
# File 'lib/mini_fb.rb', line 448

def inspect
    "<##{self.class.name} #{@object.inspect}>"
end

#keysObject



468
469
470
# File 'lib/mini_fb.rb', line 468

def keys
    @object.keys
end

#methodsObject



460
461
462
# File 'lib/mini_fb.rb', line 460

def methods
    super + @object.keys.include?(key) + connections.include?(key)
end

#respond_to?(method) ⇒ Boolean

Returns:

  • (Boolean)


464
465
466
# File 'lib/mini_fb.rb', line 464

def respond_to?(method)
    @object.keys.include?(key) || connections.include?(key) || super
end