class Clubhouse::BaseResource
Attributes
endpoint[R]
client[W]
Public Class Methods
all()
click to toggle source
# File lib/clubhouse/base_resource.rb, line 27 def all payload = client.get(self.endpoint) payload.collect{|h| self.new.update_object_from_payload(h) } end
attributes(*keys, **opts)
click to toggle source
# File lib/clubhouse/base_resource.rb, line 43 def self.attributes(*keys, **opts) readonly = Array(opts[:readonly]) class_eval do define_method(:attribute_keys) { (keys + readonly) } (keys + readonly).each do |key| define_method(:"#{key}") { instance_variable_get("@#{key}") } if !readonly.include?(key) define_method(:"#{key}=") {|v| instance_variable_set("@#{key}", v) } end end end end
attributes_for_create(*keys)
click to toggle source
# File lib/clubhouse/base_resource.rb, line 69 def self.attributes_for_create(*keys) class_eval do define_method :create_attributes do keys.reduce({}) do |h, k| h.merge(k => instance_variable_get("@#{k}")) end.reject{|k,v| v.nil?} end end end
attributes_for_update(*keys)
click to toggle source
# File lib/clubhouse/base_resource.rb, line 59 def self.attributes_for_update(*keys) class_eval do define_method :update_attributes do keys.reduce({}) do |h, k| h.merge(k => instance_variable_get("@#{k}")) end.reject{|k,v| v.nil?} end end end
client()
click to toggle source
# File lib/clubhouse/base_resource.rb, line 15 def client Clubhouse.default_client end
delete(id)
click to toggle source
# File lib/clubhouse/base_resource.rb, line 23 def delete(id) client.delete("#{self.endpoint}/#{id}") end
find(id)
click to toggle source
# File lib/clubhouse/base_resource.rb, line 19 def find(id) client.find(self, self.endpoint, id) end
new(attr = {})
click to toggle source
# File lib/clubhouse/base_resource.rb, line 33 def initialize(attr = {}) attr.each do |key, value| begin send("#{key}=", value) rescue NoMethodError raise InvalidKeyAssignment, "You can't assign value to #{key}" end end end
resource(name)
click to toggle source
# File lib/clubhouse/base_resource.rb, line 11 def resource(name) @endpoint = name end
Public Instance Methods
client()
click to toggle source
# File lib/clubhouse/base_resource.rb, line 79 def client @client ||= Clubhouse.default_client end
reload()
click to toggle source
# File lib/clubhouse/base_resource.rb, line 91 def reload payload = client.get("#{self.class.endpoint}/#{id}") update_object_from_payload(payload) end
save()
click to toggle source
# File lib/clubhouse/base_resource.rb, line 96 def save raise ClientNotSetup, "A default client or instance client is not setup" unless client payload = if id client.put("#{self.class.endpoint}/#{id}", update_attributes) else client.post(self.class.endpoint, create_attributes) end update_object_from_payload(payload) end
update_object_from_payload(payload)
click to toggle source
# File lib/clubhouse/base_resource.rb, line 83 def update_object_from_payload(payload) attribute_keys.each do |k| self.instance_variable_set("@#{k}", payload[k.to_s]) end self end