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