Class: Zm::Client::FolderJsnsInitializer

Inherits:
Object
  • Object
show all
Defined in:
lib/zm/client/folder/folder_jsns_initializer.rb

Overview

class for initialize account folder

Class Method Summary collapse

Class Method Details

.arrow_name(name) ⇒ Object



41
42
43
44
45
# File 'lib/zm/client/folder/folder_jsns_initializer.rb', line 41

def arrow_name(name)
  return name if name.to_s.start_with?('@')

  "@#{name}"
end

.create(parent, json) ⇒ Object



8
9
10
11
12
13
14
15
# File 'lib/zm/client/folder/folder_jsns_initializer.rb', line 8

def create(parent, json)
  item = Folder.new(parent)

  item.instance_variable_set(:@id, json[:id])
  item.instance_variable_set(:@name, json[:name])

  update(item, json)
end

.update(item, json) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/zm/client/folder/folder_jsns_initializer.rb', line 17

def update(item, json)
  item.all_instance_variable_keys.reject { |key| json[key].nil? }.each do |key|
    item.instance_variable_set(arrow_name(key), json[key])
  end
  
  if !json[:acl].nil? && json[:acl][:grant].is_a?(Array)
    json[:acl][:grant].each do |json|
      item.grants.create(json[:zid], json[:gt], json[:perm], json[:d])
    end
  end
  
  if json[:retentionPolicy].is_a?(Array)
    json[:retentionPolicy].first.map do |policy, v|
      next if v.first[:policy].nil?

      type = v.first[:policy].first[:type]
      lifetime = v.first[:policy].first[:lifetime]
      item.retention_policies.create(policy, lifetime, type)
    end
  end
  
  item
end