class MMS::Resource

Attributes

client[RW]
data[RW]
id[RW]

Public Class Methods

find(client, *arguments) click to toggle source

@param [MMS::Client] client @param [Hash] arguments @return self

# File lib/mms/resource.rb, line 69
def self.find(client, *arguments)
  cache_key = self.cache_key(arguments.last)
  data = MMS::Cache.instance.get(cache_key)

  data = _find(client, *arguments) unless data

  resource = new
  resource.client(client)
  resource.data(data)
  resource
end
table_header() click to toggle source

@return [Array<String>]

# File lib/mms/resource.rb, line 44
def self.table_header
  raise("`#{__method__}` is not implemented for `#{self.class.name}`")
end

Private Class Methods

cache_key(id) click to toggle source
# File lib/mms/resource.rb, line 88
def cache_key(id)
  "Class::#{name}:#{id}"
end

Public Instance Methods

_from_hash(_data) click to toggle source

@param [Hash] _data

# File lib/mms/resource.rb, line 53
def _from_hash(_data)
  raise("`#{__method__}` is not implemented for `#{self.class.name}`")
end
_load(_id) click to toggle source
# File lib/mms/resource.rb, line 48
def _load(_id)
  raise("`#{__method__}` is not implemented for `#{self.class.name}`")
end
_to_hash() click to toggle source

@return [Hash]

# File lib/mms/resource.rb, line 58
def _to_hash
  raise("`#{__method__}` is not implemented for `#{self.class.name}`")
end
from_hash(data) click to toggle source

@param [Hash] data

# File lib/mms/resource.rb, line 22
def from_hash(data)
  unless data.nil?
    @id = data['id']
    _from_hash data
  end
end
invalidate_cache() click to toggle source
# File lib/mms/resource.rb, line 62
def invalidate_cache
  MMS::Cache.instance.delete(cache_key(@id))
end
table_row() click to toggle source

@return [Array<String>]

# File lib/mms/resource.rb, line 34
def table_row
  raise("`#{__method__}` is not implemented for `#{self.class.name}`")
end
table_section() click to toggle source

@return [Array]

# File lib/mms/resource.rb, line 39
def table_section
  raise("`#{__method__}` is not implemented for `#{self.class.name}`")
end
to_hash() click to toggle source
# File lib/mms/resource.rb, line 29
def to_hash
  _to_hash
end

Private Instance Methods

cache_key(id) click to toggle source
# File lib/mms/resource.rb, line 83
def cache_key(id)
  "Class::#{self.class.name}:#{id}"
end