zm-ruby-client 0.14.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Gemfile +4 -5
  4. data/README.md +6 -0
  5. data/lib/zm/client/account/account.rb +29 -17
  6. data/lib/zm/client/account/account_jsns_initializer.rb +44 -0
  7. data/lib/zm/client/account/accounts_builder.rb +6 -3
  8. data/lib/zm/client/account/accounts_collection.rb +11 -20
  9. data/lib/zm/client/account.rb +1 -0
  10. data/lib/zm/client/ace/ace.rb +22 -9
  11. data/lib/zm/client/ace/ace_jsns_builder.rb +38 -0
  12. data/lib/zm/client/ace/ace_jsns_initializer.rb +26 -0
  13. data/lib/zm/client/ace/aces_builder.rb +6 -9
  14. data/lib/zm/client/ace/aces_collection.rb +23 -9
  15. data/lib/zm/client/ace.rb +2 -0
  16. data/lib/zm/client/appointment/appointment.rb +9 -6
  17. data/lib/zm/client/appointment/appointments_collection.rb +6 -90
  18. data/lib/zm/client/backup/backup.rb +8 -4
  19. data/lib/zm/client/base/account_object.rb +34 -0
  20. data/lib/zm/client/base/account_objects_collection.rb +14 -0
  21. data/lib/zm/client/base/account_search_objects_collection.rb +125 -0
  22. data/lib/zm/client/base/admin_object.rb +6 -0
  23. data/lib/zm/client/base/admin_objects_collection.rb +65 -0
  24. data/lib/zm/client/base/base_jsns_builder.rb +19 -0
  25. data/lib/zm/client/base/base_jsns_initializer.rb +29 -0
  26. data/lib/zm/client/base/folder_object.rb +41 -0
  27. data/lib/zm/client/base/ldap_filter.rb +33 -0
  28. data/lib/zm/client/base/object.rb +19 -0
  29. data/lib/zm/client/base/objects_builder.rb +4 -0
  30. data/lib/zm/client/base/objects_collection.rb +11 -32
  31. data/lib/zm/client/base/zimbra_attribute.rb +119 -0
  32. data/lib/zm/client/base/zimbra_attributes_collection.rb +38 -0
  33. data/lib/zm/client/base.rb +15 -0
  34. data/lib/zm/client/cluster/cluster.rb +43 -7
  35. data/lib/zm/client/cluster/cluster_config.rb +19 -17
  36. data/lib/zm/client/connector/rest_account.rb +0 -3
  37. data/lib/zm/client/connector/soap_account.rb +76 -177
  38. data/lib/zm/client/connector/soap_admin.rb +82 -51
  39. data/lib/zm/client/connector/soap_base.rb +12 -12
  40. data/lib/zm/client/contact/contact.rb +2 -1
  41. data/lib/zm/client/contact/contacts_builder.rb +3 -13
  42. data/lib/zm/client/contact/contacts_collection.rb +6 -12
  43. data/lib/zm/client/cos/cos.rb +11 -6
  44. data/lib/zm/client/cos/coses_builder.rb +1 -16
  45. data/lib/zm/client/cos/coses_collection.rb +6 -9
  46. data/lib/zm/client/distributionlist/distributionlist.rb +44 -6
  47. data/lib/zm/client/distributionlist/distributionlists_builder.rb +2 -17
  48. data/lib/zm/client/distributionlist/distributionlists_collection.rb +4 -11
  49. data/lib/zm/client/distributionlist/dls_membership_collection.rb +24 -0
  50. data/lib/zm/client/distributionlist.rb +1 -0
  51. data/lib/zm/client/document/document.rb +7 -9
  52. data/lib/zm/client/domain/domain.rb +11 -6
  53. data/lib/zm/client/domain/domain_accounts_collection.rb +13 -0
  54. data/lib/zm/client/domain/domains_builder.rb +1 -19
  55. data/lib/zm/client/domain/domains_collection.rb +7 -10
  56. data/lib/zm/client/domain.rb +1 -0
  57. data/lib/zm/client/folder/folder.rb +50 -124
  58. data/lib/zm/client/folder/folder_grant.rb +44 -22
  59. data/lib/zm/client/folder/folder_grant_jsns_builder.rb +43 -0
  60. data/lib/zm/client/folder/folder_grants_collection.rb +35 -0
  61. data/lib/zm/client/folder/folder_jsns_builder.rb +132 -0
  62. data/lib/zm/client/folder/folder_jsns_initializer.rb +49 -0
  63. data/lib/zm/client/folder/folder_retention_policies_collection.rb +40 -0
  64. data/lib/zm/client/folder/folder_retention_policy.rb +8 -30
  65. data/lib/zm/client/folder/folders_builder.rb +2 -2
  66. data/lib/zm/client/folder/folders_collection.rb +21 -19
  67. data/lib/zm/client/folder/folders_jsns_builder.rb +22 -0
  68. data/lib/zm/client/folder.rb +6 -0
  69. data/lib/zm/client/identity/identities_builder.rb +4 -15
  70. data/lib/zm/client/identity/identities_collection.rb +7 -13
  71. data/lib/zm/client/identity/identity.rb +19 -19
  72. data/lib/zm/client/message/message.rb +111 -21
  73. data/lib/zm/client/message/messages_builder.rb +1 -1
  74. data/lib/zm/client/message/messages_collection.rb +10 -92
  75. data/lib/zm/client/mountpoint/mountpoint.rb +15 -68
  76. data/lib/zm/client/mountpoint/mountpoint_jsns_builder.rb +100 -0
  77. data/lib/zm/client/mountpoint/mountpoint_jsns_initializer.rb +33 -0
  78. data/lib/zm/client/mountpoint/mountpoints_builder.rb +1 -1
  79. data/lib/zm/client/mountpoint/mountpoints_collection.rb +14 -23
  80. data/lib/zm/client/mountpoint.rb +2 -0
  81. data/lib/zm/client/resource/resource.rb +5 -5
  82. data/lib/zm/client/resource/resources_builder.rb +1 -16
  83. data/lib/zm/client/resource/resources_collection.rb +5 -13
  84. data/lib/zm/client/search_folder/search_folder.rb +19 -39
  85. data/lib/zm/client/search_folder/search_folder_jsns_builder.rb +86 -0
  86. data/lib/zm/client/search_folder/search_folder_jsns_initializer.rb +33 -0
  87. data/lib/zm/client/search_folder/search_folders_builder.rb +7 -11
  88. data/lib/zm/client/search_folder/search_folders_collection.rb +7 -15
  89. data/lib/zm/client/search_folder.rb +2 -0
  90. data/lib/zm/client/server/server.rb +7 -14
  91. data/lib/zm/client/server/server_accounts_collection.rb +19 -0
  92. data/lib/zm/client/server/servers_builder.rb +4 -16
  93. data/lib/zm/client/server/servers_collection.rb +5 -10
  94. data/lib/zm/client/server.rb +1 -0
  95. data/lib/zm/client/share/share.rb +2 -9
  96. data/lib/zm/client/share/shares_builder.rb +3 -12
  97. data/lib/zm/client/signature/signature.rb +17 -13
  98. data/lib/zm/client/signature/signature_jsns_builder.rb +5 -1
  99. data/lib/zm/client/signature/signature_jsns_initializer.rb +25 -0
  100. data/lib/zm/client/signature/signatures_builder.rb +7 -11
  101. data/lib/zm/client/signature/signatures_collection.rb +6 -14
  102. data/lib/zm/client/signature.rb +1 -0
  103. data/lib/zm/client/tag/tag.rb +27 -20
  104. data/lib/zm/client/tag/tag_jsns_builder.rb +55 -0
  105. data/lib/zm/client/tag/tag_jsns_initializer.rb +26 -0
  106. data/lib/zm/client/tag/tags_builder.rb +6 -9
  107. data/lib/zm/client/tag/tags_collection.rb +6 -12
  108. data/lib/zm/client/tag.rb +2 -0
  109. data/lib/zm/client/task/tasks_collection.rb +6 -90
  110. data/lib/zm/client/upload/upload.rb +1 -1
  111. data/lib/zm/client/version.rb +1 -1
  112. data/lib/zm/modules/common/dl_common.rb +3 -1
  113. data/lib/zm/modules/common/zimbra-attrs.json.bak +1 -0
  114. data/lib/zm/modules/zm_logger.rb +24 -0
  115. data/lib/zm/modules/zm_model.rb +41 -0
  116. data/test/accounts.rb +15 -1
  117. data/test/ace.rb +50 -0
  118. data/test/cluster.rb +41 -0
  119. data/test/cluster_zimbra_attributes.rb +38 -0
  120. data/test/folder.rb +125 -0
  121. data/test/folder_grant.rb +51 -0
  122. data/test/mountpoint.rb +49 -0
  123. data/test/retention_policies.rb +40 -0
  124. data/test/search_folder.rb +67 -0
  125. data/test/signature.rb +53 -0
  126. data/test/tag.rb +65 -0
  127. data/test/zimbra_attributes.rb +35 -0
  128. data/zm-ruby-client.gemspec +15 -10
  129. metadata +53 -26
  130. data/lib/zm/client/connector/soap_xml_builder.rb +0 -68
@@ -0,0 +1,132 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ # class for account folder jsns builder
6
+ class FolderJsnsBuilder < Base::BaseJsnsBuilder
7
+
8
+ def to_find
9
+ { folder: { l: @item.id } }
10
+ end
11
+
12
+ def to_jsns
13
+ folder = {
14
+ f: @item.f,
15
+ name: @item.name,
16
+ l: @item.l,
17
+ color: @item.color,
18
+ rgb: @item.rgb,
19
+ url: @item.url,
20
+ fb: @item.fb,
21
+ view: @item.view
22
+ }.delete_if { |_, v| v.nil? }
23
+
24
+ { folder: folder }
25
+ end
26
+
27
+ alias to_create to_jsns
28
+
29
+ def to_update
30
+ action = {
31
+ op: :update,
32
+ id: @item.id,
33
+ f: @item.f,
34
+ name: @item.name,
35
+ l: @item.l,
36
+ color: @item.color,
37
+ rgb: @item.rgb,
38
+ url: @item.url,
39
+ fb: @item.fb,
40
+ view: @item.view
41
+ }.delete_if { |_, v| v.nil? }
42
+
43
+ if @item.is_immutable?
44
+ action.delete(:name)
45
+ action.delete(:l)
46
+ end
47
+
48
+ { action: action }
49
+ end
50
+
51
+ def to_patch(options)
52
+ action = {
53
+ op: :update,
54
+ id: @item.id
55
+ }.merge(options)
56
+
57
+ { action: action }
58
+ end
59
+
60
+ def to_rename
61
+ action = {
62
+ op: :rename,
63
+ id: @item.id,
64
+ name: @item.name
65
+ }
66
+
67
+ { action: action }
68
+ end
69
+
70
+ def to_move
71
+ action = {
72
+ op: :move,
73
+ id: @item.id,
74
+ l: @item.l
75
+ }
76
+
77
+ { action: action }
78
+ end
79
+
80
+ def to_color
81
+ action = {
82
+ op: :color,
83
+ id: @item.id
84
+ }
85
+
86
+ action[:rgb] = @item.rgb if @item.rgb_changed?
87
+ action[:color] = @item.color if @item.color_changed?
88
+
89
+ { action: action }
90
+ end
91
+
92
+ def to_empty
93
+ action = {
94
+ op: :empty,
95
+ id: @item.id,
96
+ recursive: false
97
+ }
98
+
99
+ { action: action }
100
+ end
101
+
102
+ def to_delete
103
+ { action: { op: :delete, id: @item.id } }
104
+ end
105
+
106
+ def to_retentionpolicy
107
+ retentionpolicy = @item.retention_policies.all.map { |rp| retentionpolicy_jsns(rp) }.reduce({}, :merge)
108
+
109
+ {
110
+ action: {
111
+ op: :retentionpolicy,
112
+ id: @item.id,
113
+ retentionPolicy: retentionpolicy
114
+ }
115
+ }
116
+ end
117
+
118
+ private
119
+
120
+ def retentionpolicy_jsns(rp)
121
+ {
122
+ rp.policy => {
123
+ policy: {
124
+ lifetime: rp.lifetime,
125
+ type: rp.type
126
+ }
127
+ }
128
+ }
129
+ end
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ # class for initialize account folder
6
+ class FolderJsnsInitializer
7
+ class << self
8
+ def create(parent, json)
9
+ item = Folder.new(parent)
10
+
11
+ item.instance_variable_set(:@id, json[:id])
12
+ item.instance_variable_set(:@name, json[:name])
13
+
14
+ update(item, json)
15
+ end
16
+
17
+ def update(item, json)
18
+ item.all_instance_variable_keys.reject { |key| json[key].nil? }.each do |key|
19
+ item.instance_variable_set(arrow_name(key), json[key])
20
+ end
21
+
22
+ if !json[:acl].nil? && json[:acl][:grant].is_a?(Array)
23
+ json[:acl][:grant].each do |json|
24
+ item.grants.create(json[:zid], json[:gt], json[:perm], json[:d])
25
+ end
26
+ end
27
+
28
+ if json[:retentionPolicy].is_a?(Array)
29
+ json[:retentionPolicy].first.map do |policy, v|
30
+ next if v.first[:policy].nil?
31
+
32
+ type = v.first[:policy].first[:type]
33
+ lifetime = v.first[:policy].first[:lifetime]
34
+ item.retention_policies.create(policy, lifetime, type)
35
+ end
36
+ end
37
+
38
+ item
39
+ end
40
+
41
+ def arrow_name(name)
42
+ return name if name.to_s.start_with?('@')
43
+
44
+ "@#{name}"
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ # class for folder retention policies collection
6
+ class FolderRetentionPoliciesCollection
7
+
8
+ attr_reader :all
9
+
10
+ def initialize(parent)
11
+ @parent = parent
12
+ @all = []
13
+ end
14
+
15
+ def new(policy, lifetime, type)
16
+ FolderRetentionPolicy.new(self, policy, lifetime, type)
17
+ end
18
+
19
+ def create(policy, lifetime, type)
20
+ frp = new(policy, lifetime, type)
21
+ add(frp)
22
+ end
23
+
24
+ def add(retention_policy)
25
+ @all << retention_policy
26
+ end
27
+
28
+ def save!
29
+ @parent.sacc.folder_action(@parent.parent.token, jsns_builder.to_retentionpolicy)
30
+ true
31
+ end
32
+
33
+ private
34
+
35
+ def jsns_builder
36
+ @jsns_builder ||= FolderJsnsBuilder.new(@parent)
37
+ end
38
+ end
39
+ end
40
+ end
@@ -3,18 +3,17 @@
3
3
  module Zm
4
4
  module Client
5
5
  # class for account folder retention policy
6
- class FolderRetentionPolicy < Base::AccountObject
7
-
8
- class << self
9
- def create_by_json(parent, policy, json)
10
- frp = self.new(parent)
11
- frp.init_from_json(policy, json)
12
- frp
13
- end
14
- end
6
+ class FolderRetentionPolicy
15
7
 
16
8
  attr_accessor :type, :policy, :lifetime
17
9
 
10
+ def initialize(parent, policy, lifetime, type)
11
+ @parent = parent
12
+ @policy = policy
13
+ @lifetime = lifetime
14
+ @type = type
15
+ end
16
+
18
17
  def keep?
19
18
  @policy == :keep
20
19
  end
@@ -22,27 +21,6 @@ module Zm
22
21
  def purge?
23
22
  @policy == :purge
24
23
  end
25
-
26
- def init_from_json(policy, json)
27
- return if json.empty? || json[:policy].nil?
28
-
29
- @policy = policy
30
- @type = json[:policy].first[:type]
31
- @lifetime = json[:policy].first[:lifetime]
32
- end
33
-
34
- def to_h
35
- # :purge=>[{:policy=>[{:lifetime=>"366d", :type=>"user"}]}]
36
- {
37
- @policy => {
38
- policy: {
39
- lifetime: @lifetime,
40
- type: @type
41
- }
42
- }
43
- }
44
- end
45
-
46
24
  end
47
25
  end
48
26
  end
@@ -28,7 +28,7 @@ module Zm
28
28
  def make
29
29
  root = @json[:Body][:GetFolderResponse][@key]
30
30
 
31
- @root_folder = Folder.new(@account, root.first)
31
+ @root_folder = FolderJsnsInitializer.create(@account, root.first)
32
32
 
33
33
  if !root.first[@key].nil? && root.first[@key].any?
34
34
  construct_tree(@root_folder, root.first[@key])
@@ -39,7 +39,7 @@ module Zm
39
39
 
40
40
  def construct_tree(parent_folder, json_folders)
41
41
  json_folders.each do |json_folder|
42
- folder = Folder.new(@account, json_folder)
42
+ folder = FolderJsnsInitializer.create(@account, json_folder)
43
43
  parent_folder.folders << folder
44
44
 
45
45
  construct_tree(folder, json_folder[@key]) if !json_folder[@key].nil? && json_folder[@key].any?
@@ -3,20 +3,25 @@
3
3
  module Zm
4
4
  module Client
5
5
  # collection of folders
6
- class FoldersCollection < Base::ObjectsCollection
7
- METHODS_MISSING_LIST = %i[select each map length].to_set.freeze
6
+ class FoldersCollection < Base::AccountObjectsCollection
8
7
 
9
8
  attr_reader :root
10
9
 
10
+ attr_accessor :view, :tr, :visible, :needGranteeName, :depth
11
+
11
12
  def initialize(parent)
12
- @parent = parent
13
+ @child_class = Folder
14
+ @builder_class = FoldersBuilder
15
+ super(parent)
13
16
  @root = nil
14
17
  reset_query_params
15
18
  end
16
19
 
17
- def new
18
- folder = Folder.new(@parent)
19
- yield(folder) if block_given?
20
+ def find(id)
21
+ folder = @child_class.new(@parent) do |f|
22
+ f.id = id
23
+ end
24
+ folder.reload!
20
25
  folder
21
26
  end
22
27
 
@@ -28,16 +33,7 @@ module Zm
28
33
  end
29
34
 
30
35
  def ids
31
- fb = FoldersBuilder.new @parent, make_query
32
- fb.ids
33
- end
34
-
35
- def all
36
- @all || all!
37
- end
38
-
39
- def all!
40
- build_response
36
+ @builder_class.new(@parent, make_query).ids
41
37
  end
42
38
 
43
39
  def clear
@@ -74,8 +70,7 @@ module Zm
74
70
  private
75
71
 
76
72
  def build_response
77
- rep = make_query
78
- fb = FoldersBuilder.new @parent, rep
73
+ fb = @builder_class.new(@parent, make_query)
79
74
  @root = fb.make
80
75
  @all = fb.flatten
81
76
  @all.select! { |folder| folder.view == @view } unless @view.nil?
@@ -83,12 +78,19 @@ module Zm
83
78
  end
84
79
 
85
80
  def make_query
86
- @parent.sacc.get_all_folders(@parent.token, @view, @tr)
81
+ @parent.sacc.get_folder(@parent.token, jsns_builder.to_jsns)
87
82
  end
88
83
 
89
84
  def reset_query_params
90
85
  @view = nil
91
86
  @tr = nil
87
+ @visible = nil
88
+ @needGranteeName = nil
89
+ @depth = nil
90
+ end
91
+
92
+ def jsns_builder
93
+ @jsns_builder ||= FoldersJsnsBuilder.new(self)
92
94
  end
93
95
  end
94
96
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ # class for account collection folders jsns builder
6
+ class FoldersJsnsBuilder
7
+ def initialize(item)
8
+ @item = item
9
+ end
10
+
11
+ def to_jsns
12
+ {
13
+ visible: @item.visible,
14
+ needGranteeName: @item.needGranteeName,
15
+ view: @item.view,
16
+ depth: @item.depth,
17
+ tr: @item.tr
18
+ }.delete_if { |_, v| v.nil? }
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,8 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'zm/client/folder/folder'
4
+ require 'zm/client/folder/folder_jsns_builder'
5
+ require 'zm/client/folder/folder_jsns_initializer'
6
+ require 'zm/client/folder/folders_jsns_builder'
4
7
  require 'zm/client/folder/folder_grant'
8
+ require 'zm/client/folder/folder_grants_collection'
9
+ require 'zm/client/folder/folder_grant_jsns_builder'
5
10
  require 'zm/client/folder/folder_retention_policy'
11
+ require 'zm/client/folder/folder_retention_policies_collection'
6
12
  require 'zm/client/folder/folders_builder'
7
13
  require 'zm/client/folder/folders_collection'
8
14
  require 'zm/client/folder/mod_document_folder'
@@ -2,23 +2,12 @@
2
2
 
3
3
  module Zm
4
4
  module Client
5
- # class factory [identitys]
5
+ # class factory [identities]
6
6
  class IdentitiesBuilder < Base::ObjectsBuilder
7
7
  def initialize(parent, json)
8
- @parent = parent
9
- @json = json
10
- end
11
-
12
- def make
13
- root = @json[:Body][:GetIdentitiesResponse][:identity]
14
- return [] if root.nil?
15
-
16
- root = [root] unless root.is_a?(Array)
17
- root.map do |s|
18
- identity = Identity.new(@parent)
19
- identity.init_from_json(s)
20
- identity
21
- end
8
+ super(parent, json)
9
+ @child_class = Identity
10
+ @json_item_key = :identity
22
11
  end
23
12
  end
24
13
  end
@@ -2,24 +2,18 @@
2
2
 
3
3
  module Zm
4
4
  module Client
5
- # collection account identitys
6
- class IdentitiesCollection < Base::ObjectsCollection
5
+ # collection account identities
6
+ class IdentitiesCollection < Base::AccountObjectsCollection
7
7
  def initialize(parent)
8
- @parent = parent
9
- end
10
-
11
- def new
12
- identity = Identity.new(@parent)
13
- yield(identity) if block_given?
14
- identity
8
+ @child_class = Identity
9
+ @builder_class = IdentitiesBuilder
10
+ super(parent)
15
11
  end
16
12
 
17
13
  private
18
14
 
19
- def build_response
20
- rep = @parent.sacc.get_all_identities(@parent.token)
21
- ib = IdentitiesBuilder.new @parent, rep
22
- ib.make
15
+ def make_query
16
+ @parent.sacc.get_all_identities(@parent.token)
23
17
  end
24
18
  end
25
19
  end
@@ -4,26 +4,26 @@ module Zm
4
4
  module Client
5
5
  # class account identity
6
6
  class Identity < Base::AccountObject
7
-
8
7
  INSTANCE_VARIABLE_KEYS = %i[id name zimbraPrefIdentityName zimbraPrefFromDisplay zimbraPrefFromAddress
9
- zimbraPrefFromAddressType zimbraPrefReplyToEnabled zimbraPrefReplyToDisplay zimbraPrefReplyToAddress
10
- zimbraPrefDefaultSignatureId zimbraPrefForwardReplySignatureId zimbraPrefWhenSentToEnabled
11
- zimbraPrefWhenInFoldersEnabled zimbraPrefWhenSentToAddresses]
8
+ zimbraPrefFromAddressType zimbraPrefReplyToEnabled zimbraPrefReplyToDisplay zimbraPrefReplyToAddress
9
+ zimbraPrefDefaultSignatureId zimbraPrefForwardReplySignatureId zimbraPrefWhenSentToEnabled
10
+ zimbraPrefWhenInFoldersEnabled zimbraPrefWhenSentToAddresses].freeze
12
11
 
13
12
  ATTRS_WRITE = %i[zimbraPrefIdentityName zimbraPrefFromDisplay zimbraPrefFromAddress
14
- zimbraPrefFromAddressType zimbraPrefReplyToEnabled zimbraPrefReplyToDisplay zimbraPrefReplyToAddress
15
- zimbraPrefDefaultSignatureId zimbraPrefForwardReplySignatureId zimbraPrefWhenSentToEnabled
16
- zimbraPrefWhenInFoldersEnabled zimbraPrefWhenSentToAddresses]
13
+ zimbraPrefFromAddressType zimbraPrefReplyToEnabled zimbraPrefReplyToDisplay zimbraPrefReplyToAddress
14
+ zimbraPrefDefaultSignatureId zimbraPrefForwardReplySignatureId zimbraPrefWhenSentToEnabled
15
+ zimbraPrefWhenInFoldersEnabled zimbraPrefWhenSentToAddresses].freeze
17
16
 
18
- attr_accessor *INSTANCE_VARIABLE_KEYS
17
+ attr_accessor(*INSTANCE_VARIABLE_KEYS)
19
18
 
20
- def concat
21
- INSTANCE_VARIABLE_KEYS.map { |key| instance_variable_get(arrow_name(key)) }
19
+ def all_instance_variable_keys
20
+ INSTANCE_VARIABLE_KEYS
22
21
  end
23
22
 
24
23
  def init_from_json(json)
25
- super(json)
26
- INSTANCE_VARIABLE_KEYS.each do |key|
24
+ @id = json[:id]
25
+ @name = json[:name]
26
+ all_instance_variable_keys.each do |key|
27
27
  value = json[:_attrs][key]
28
28
  next if value.nil?
29
29
 
@@ -32,7 +32,7 @@ module Zm
32
32
  end
33
33
 
34
34
  def create!
35
- rep = @parent.sacc.create_identity(@parent.token, name, instance_variables_array(ATTRS_WRITE))
35
+ rep = @parent.sacc.create_identity(@parent.token, name, Hash[instance_variables_array(ATTRS_WRITE)])
36
36
  init_from_json(rep[:Body][:CreateIdentityResponse][:identity].first)
37
37
  end
38
38
 
@@ -43,9 +43,9 @@ module Zm
43
43
  arrow_attr_sym = "@#{k}".to_sym
44
44
 
45
45
  if v.respond_to?(:empty?) && v.empty?
46
- self.remove_instance_variable(arrow_attr_sym) if self.instance_variable_get(arrow_attr_sym)
46
+ remove_instance_variable(arrow_attr_sym) if instance_variable_get(arrow_attr_sym)
47
47
  else
48
- self.instance_variable_set(arrow_attr_sym, v)
48
+ instance_variable_set(arrow_attr_sym, v)
49
49
  end
50
50
  end
51
51
  end
@@ -55,15 +55,15 @@ module Zm
55
55
  end
56
56
 
57
57
  def delete!
58
- @parent.sacc.delete_identity(@parent.token, id)
58
+ @parent.sacc.delete_identity(@parent.token, @id)
59
+ super
59
60
  end
60
61
 
61
- def rename!(new_name)
62
- end
62
+ def rename!(new_name); end
63
63
 
64
64
  def clone
65
65
  new_identity = super do |obj|
66
- [:@zimbraPrefDefaultSignatureId, :@zimbraPrefForwardReplySignatureId].each do |arrow_key|
66
+ %i[@zimbraPrefDefaultSignatureId @zimbraPrefForwardReplySignatureId].each do |arrow_key|
67
67
  obj.remove_instance_variable(arrow_key) if obj.instance_variable_get(arrow_key)
68
68
  end
69
69
  end