class Gmail::GmailObject

Public Class Methods

new(hash={}) click to toggle source
# File lib/gmail/gmail_object.rb, line 12
def initialize(hash={})
  @values = Hashie::Mash.new hash
  run_hook :after_initialize
end

Public Instance Methods

[](k) click to toggle source
# File lib/gmail/gmail_object.rb, line 26
def [](k)
  @values[k.to_sym]
end
[]=(k, v) click to toggle source
# File lib/gmail/gmail_object.rb, line 30
def []=(k, v)
  @values.send("#{k}=", v)
end
as_json(*a) click to toggle source
# File lib/gmail/gmail_object.rb, line 38
def as_json(*a)
  @values.as_json(*a)
end
detailed() click to toggle source
# File lib/gmail/gmail_object.rb, line 42
def detailed
  if self.class == GmailObject
    raise "Can't detail a generic GmailObject. It needs to be a Thread, Message, Draft or Label"
  end

  self.class.get(id)
end
detailed!()
Alias for: refresh
inspect() click to toggle source
# File lib/gmail/gmail_object.rb, line 22
def inspect
 "#<#{self.class}:0x#{self.object_id.to_s(16)}>  " + to_s
end
refresh() click to toggle source
# File lib/gmail/gmail_object.rb, line 50
def refresh
  if self.class == GmailObject
    raise "Can't refresh a generic GmailObject. It needs to be a Thread, Message, Draft or Label"
  end
  @values = self.class.get(id).values
  self
end
Also aliased as: detailed!
to_hash() click to toggle source
# File lib/gmail/gmail_object.rb, line 60
def to_hash
  Util.symbolize_names(@values.to_hash)
end
to_json(*a) click to toggle source
# File lib/gmail/gmail_object.rb, line 34
def to_json(*a)
  JSON.generate(@values)
end
to_s(*args) click to toggle source
# File lib/gmail/gmail_object.rb, line 18
def to_s(*args)
  JSON.pretty_generate(@values.to_hash)
end
values() click to toggle source
# File lib/gmail/gmail_object.rb, line 64
def values
  @values
end

Protected Instance Methods

metaclass() click to toggle source

def each(&blk)

@values.each(&blk)

end

def _dump(level)

Marshal.dump([@values, @api_key])

end

def self._load(args)

values, api_key = Marshal.load(args)
construct_from(values)

end

if RUBY_VERSION < '1.9.2'

def respond_to?(symbol)
  @values.has_key?(symbol) || super
end

end

# File lib/gmail/gmail_object.rb, line 89
def metaclass
  class << self; self; end
end
method_missing(name, *args) click to toggle source

def remove_accessors(keys)

metaclass.instance_eval do
  keys.each do |k|
    next if @@permanent_attributes.include?(k)
    k_eq = :"#{k}="
    remove_method(k) if method_defined?(k)
    remove_method(k_eq) if method_defined?(k_eq)
  end
end

end

def add_accessors(keys)

metaclass.instance_eval do
  keys.each do |k|
    next if @@permanent_attributes.include?(k)
    k_eq = :"#{k}="
    define_method(k) { @values[k] }
    define_method(k_eq) do |v|
      if v == ""
        raise ArgumentError.new(
                  "You cannot set #{k} to an empty string." +
                      "We interpret empty strings as nil in requests." +
                      "You may set #{self}.#{k} = nil to delete the property.")
      end
      @values[k] = v
      @unsaved_values.add(k)
    end
  end
end

end

Calls superclass method
# File lib/gmail/gmail_object.rb, line 124
def method_missing(name, *args)

  if @values.send(name.to_s + "?")
    @values.send(name)
  else
    begin
      @values.send(name.to_s, args[0])
    rescue
      begin
        super.send(name)
      rescue
       nil
      end
    end
  end
end