class Mavenlink::APIResource
Public Class Methods
list(params = {}, options = {})
click to toggle source
# File lib/mavenlink/api_resource.rb, line 26 def self.list(params = {}, options = {}) response = get(resource_url, params) List.new(self, response, options) end
new(data)
click to toggle source
# File lib/mavenlink/api_resource.rb, line 37 def initialize(data) @values = data update_attributes(@values) end
plural_name()
click to toggle source
# File lib/mavenlink/api_resource.rb, line 17 def self.plural_name "#{self::OBJECT_NAME.downcase}s" end
resource_url()
click to toggle source
# File lib/mavenlink/api_resource.rb, line 7 def self.resource_url if self == APIResource raise NotImplementedError, "APIResource is an abstract class, you should before actions "\ "on its subclasses (Workspace, Invoice, etc.)" end "/#{plural_name}" end
retrieve(id)
click to toggle source
# File lib/mavenlink/api_resource.rb, line 21 def self.retrieve(id) instance = new(id: id) instance.refresh end
Public Instance Methods
refresh()
click to toggle source
# File lib/mavenlink/api_resource.rb, line 31 def refresh response = get(resource_url) data = Util.results(response).first self.class.new(data) end
resource_url()
click to toggle source
# File lib/mavenlink/api_resource.rb, line 43 def resource_url unless (id = self.id) raise InvalidRequestError.new( "Could not determine which URL to request: #{self.class} instance " \ "has invalid ID: #{id.inspect}", "id" ) end "#{self.class.resource_url}/#{CGI.escape(id)}" end
Protected Instance Methods
add_accessor(key, value)
click to toggle source
# File lib/mavenlink/api_resource.rb, line 64 def add_accessor(key, value) metaclass.instance_eval do define_method(key) { value } end end
metaclass()
click to toggle source
# File lib/mavenlink/api_resource.rb, line 54 def metaclass class << self; self; end end
update_attributes(values)
click to toggle source
# File lib/mavenlink/api_resource.rb, line 58 def update_attributes(values) values.each do |k, v| add_accessor(k, v) unless metaclass.method_defined? k.to_sym end end