Class: Ocs::Resources::Base

Inherits:
Object
  • Object
show all
Includes:
DynamicDefiners
Defined in:
lib/ocs/resources/base.rb

Constant Summary collapse

BOOLEAN =
[TrueClass, FalseClass].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client, raw_hash = {}) ⇒ Base

Returns a new instance of Base.



72
73
74
75
76
# File 'lib/ocs/resources/base.rb', line 72

def initialize(client, raw_hash = {})
  @client   = client
  @raw_hash = raw_hash
  update_attributes!(raw_hash)
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



68
69
70
# File 'lib/ocs/resources/base.rb', line 68

def client
  @client
end

#errorObject (readonly)

Returns the value of attribute error.



68
69
70
# File 'lib/ocs/resources/base.rb', line 68

def error
  @error
end

Class Method Details

.all(client) ⇒ Object



12
13
14
# File 'lib/ocs/resources/base.rb', line 12

def all(client)
  list(client)
end

.downcased_nameObject



16
17
18
# File 'lib/ocs/resources/base.rb', line 16

def downcased_name
  name.downcase
end

.find(client, conditions = {}, parameters = {}) ⇒ Object



20
21
22
# File 'lib/ocs/resources/base.rb', line 20

def find(client, conditions = {}, parameters = {})
  where(client, conditions, parameters).first
end

.inherited(sub_class) ⇒ Object



24
25
26
# File 'lib/ocs/resources/base.rb', line 24

def inherited(sub_class)
  sub_class.delegations = {}
end

.list(client, parameters = {}) ⇒ Object



40
41
42
43
44
45
46
47
48
49
# 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

.nameObject



28
29
30
# File 'lib/ocs/resources/base.rb', line 28

def name
  to_s.split(/::/).last
end

.pluralized_nameObject



32
33
34
# File 'lib/ocs/resources/base.rb', line 32

def pluralized_name
  name.pluralize
end

.underscored_nameObject



36
37
38
# File 'lib/ocs/resources/base.rb', line 36

def underscored_name
  name.underscore
end

.where(client, conditions = {}, parameters = {}) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# 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

Instance Method Details

#reload!Object



78
79
80
81
82
83
84
# 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