Class: Xolo::Core::BaseClasses::ServerObject
- Inherits:
-
Object
- Object
- Xolo::Core::BaseClasses::ServerObject
- Extended by:
- JSONWrappers
- Includes:
- JSONWrappers
- Defined in:
- lib/xolo/core/base_classes/server_object.rb
Overview
The base class for dealing with Titles and Versions/Patches in the Xolo Server, Admin, and Client modules.
The base class for “xolo objects stored on the xolo server”, i.e. Titles and Versions/Patches - whether they are being used on the server, in xadm, or in the client.
This class holds stuff common to all no matter where or how they are used.
Instance Method Summary collapse
-
#initialize(data_hash) ⇒ ServerObject
constructor
Constructor.
-
#to_h ⇒ String
Convert to a Hash for sending between xadm and the Xolo Server, or installing on clients.
-
#to_json(*_args) ⇒ String
Convert to a JSON object for sending between xadm and the Xolo Server or storage on the server.
Methods included from JSONWrappers
extended, included, parse_json
Constructor Details
#initialize(data_hash) ⇒ ServerObject
Constructor
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/xolo/core/base_classes/server_object.rb', line 49 def initialize(data_hash) # log_debug "Instantiating a #{self.class}..." self.class::ATTRIBUTES.each do |attr, deets| val = data_hash[attr] # log_debug "Initializing, setting ATTR '#{attr}' => '#{val}' (#{val.class})" # anything not nil, esp empty arrays, needs to be set next if val.nil? # convert timestamps to Time objects if needed, # All the other values shouldn't need converting # when taking in JSON or xadm opts. val = Time.parse(val.to_s) if deets[:type] == :time && !val.is_a?(Time) # call the setter send "#{attr}=", val end end |
Instance Method Details
#to_h ⇒ String
Convert to a Hash for sending between xadm and the Xolo Server, or installing on clients.
Only the values defined in ATTRIBUTES are sent, because all other other attributes are meant only for the local context, i.e. on the server, via xadm, or via ‘xolo’.
83 84 85 86 87 88 89 90 91 92 |
# File 'lib/xolo/core/base_classes/server_object.rb', line 83 def to_h hash = {} self.class::ATTRIBUTES.each do |attr, deets| hash[attr] = send attr # ensure multi values are arrays, even if they are empty hash[attr] = [hash[attr]].compact if deets[:multi] && !hash[attr].is_a?(Array) end hash end |
#to_json(*_args) ⇒ String
Convert to a JSON object for sending between xadm and the Xolo Server or storage on the server.
Always make it ‘pretty’, i.e. human readable, since it often gets stored in files that humans will look at
102 103 104 |
# File 'lib/xolo/core/base_classes/server_object.rb', line 102 def to_json(*_args) JSON.pretty_generate to_h end |