Class: Zm::Client::Base::BaseJsnsInitializer

Inherits:
Object
  • Object
show all
Defined in:
lib/zm/client/base/base_jsns_initializer.rb

Overview

class for account object jsns initializer

Class Method Summary collapse

Class Method Details

.convert_json_string_value(value) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/zm/client/base/base_jsns_initializer.rb', line 49

def convert_json_string_value(value)
  return value unless value.is_a?(String)
  return 0 if value == '0'

  c = value.to_i
  c.to_s == value ? c : value
end

.create(parent, json) ⇒ Object



9
10
11
12
13
# File 'lib/zm/client/base/base_jsns_initializer.rb', line 9

def create(parent, json)
  klass.new(parent).tap do |item|
    update(item, json)
  end
end

.formatted_json(json) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/zm/client/base/base_jsns_initializer.rb', line 26

def formatted_json(json)
  return [] if json[:a].nil?

  json[:a].reject! { |n| n[:n].nil? }
  json_map = json[:a].map { |n| [n[:n], n[:_content]] }.freeze

  hash_multivalued = json_map.each_with_object({}) do |(k, v), h|
    h[k] ||= []
    h[k].push(v)
  end

  hash_multivalued.transform_values do |v|
    v.length == 1 ? v.first : v
  end
end

.update(item, json) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'lib/zm/client/base/base_jsns_initializer.rb', line 15

def update(item, json)
  item.id = json.delete(:id)
  item.name = json.delete(:name)

  formatted_json(json).each do |k, v|
    valorise(item, k, v)
  end

  item
end

.valorise(item, k, v) ⇒ Object



42
43
44
45
46
47
# File 'lib/zm/client/base/base_jsns_initializer.rb', line 42

def valorise(item, k, v)
  setter_method_name = "#{k}="
  return unless item.respond_to?(setter_method_name)

  item.send(setter_method_name, convert_json_string_value(v))
end