class Ocs::Resources::Base

Constants

BOOLEAN

Attributes

client[R]
error[R]

Public Class Methods

all(client) click to toggle source
# File lib/ocs/resources/base.rb, line 12
def all(client)
  list(client)
end
downcased_name() click to toggle source
# File lib/ocs/resources/base.rb, line 16
def downcased_name
  name.downcase
end
find(client, conditions = {}, parameters = {}) click to toggle source
# File lib/ocs/resources/base.rb, line 20
def find(client, conditions = {}, parameters = {})
  where(client, conditions, parameters).first
end
inherited(sub_class) click to toggle source
# File lib/ocs/resources/base.rb, line 24
def inherited(sub_class)
  sub_class.delegations = {}
end
list(client, parameters = {}) click to toggle source
# File lib/ocs/resources/base.rb, line 40
def list(client, parameters = {})
  response = client.call("list#{pluralized_name}", parameters)
  if response.empty?
    []
  else
    response[downcased_name].map do |attributes|
      new(client, attributes)
    end
  end
end
name() click to toggle source
# File lib/ocs/resources/base.rb, line 28
def name
  to_s.split(/::/).last
end
new(client, raw_hash = {}) click to toggle source
# File lib/ocs/resources/base.rb, line 72
def initialize(client, raw_hash = {})
  @client   = client
  @raw_hash = raw_hash
  update_attributes!(raw_hash)
end
pluralized_name() click to toggle source
# File lib/ocs/resources/base.rb, line 32
def pluralized_name
  name.pluralize
end
underscored_name() click to toggle source
# File lib/ocs/resources/base.rb, line 36
def underscored_name
  name.underscore
end
where(client, conditions = {}, parameters = {}) click to toggle source
# File lib/ocs/resources/base.rb, line 51
def where(client, conditions = {}, parameters = {})
  list(client, parameters).select do |instance|
    conditions.all? do |attribute, condition|
      value = instance.public_send(attribute)
      case condition
      when Regexp
        condition =~ value
      when Range
        condition.include?(value)
      else
        condition == value
      end
    end
  end
end

Public Instance Methods

reload!() click to toggle source
# File lib/ocs/resources/base.rb, line 78
def reload!
  response = client.call("list#{self.class.pluralized_name}", id: id)[self.class.downcased_name]
  if response && !response.empty?
    update_attributes!(response.first)
  end
  self
end

Private Instance Methods

resource_class(class_name) click to toggle source
# File lib/ocs/resources/base.rb, line 88
def resource_class(class_name)
  "ocs/resources/#{class_name}".camelize.constantize
end
send_and_update(api, parameters) click to toggle source
# File lib/ocs/resources/base.rb, line 92
def send_and_update(api, parameters)
  response = client.send(api, parameters)
  if response.success?
    @error = nil
    update_attributes!(response.content)
    self
  else
    @error = ApiError.new(api, parameters, response)
    false
  end
end
update_attributes!(hash) click to toggle source
# File lib/ocs/resources/base.rb, line 104
def update_attributes!(hash)
  hash.each do |key, value|
    if delegations.has_key?(key.to_sym)
      public_send(delegations[key.to_sym], value)
    else
      public_send(:"#{key}=", value)
    end
  end
end