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
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