zm-ruby-client 2.2.7 → 3.0.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 (202) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +6 -0
  3. data/.ruby-version +1 -0
  4. data/CHANGELOG.md +10 -6
  5. data/Gemfile +1 -6
  6. data/README.md +10 -15
  7. data/VERSION +1 -1
  8. data/lib/zm/client/account/account.rb +35 -22
  9. data/lib/zm/client/account/account_aliases_collection.rb +14 -6
  10. data/lib/zm/client/account/account_dls_membership_collection.rb +10 -4
  11. data/lib/zm/client/account/account_dls_owner_collection.rb +8 -5
  12. data/lib/zm/client/account/account_jsns_builder.rb +31 -19
  13. data/lib/zm/client/account/account_jsns_initializer.rb +4 -14
  14. data/lib/zm/client/account/accounts_builder.rb +1 -1
  15. data/lib/zm/client/account/accounts_collection.rb +15 -8
  16. data/lib/zm/client/ace/ace.rb +5 -5
  17. data/lib/zm/client/ace/ace_jsns_builder.rb +8 -8
  18. data/lib/zm/client/ace/ace_jsns_initializer.rb +7 -7
  19. data/lib/zm/client/ace/aces_builder.rb +1 -1
  20. data/lib/zm/client/ace/aces_collection.rb +2 -2
  21. data/lib/zm/client/appointment/appointment.rb +27 -24
  22. data/lib/zm/client/appointment/appointment_jsns_builder.rb +29 -20
  23. data/lib/zm/client/appointment/appointment_jsns_initializer.rb +14 -13
  24. data/lib/zm/client/appointment/appointments_builder.rb +1 -1
  25. data/lib/zm/client/appointment/appointments_collection.rb +8 -7
  26. data/lib/zm/client/backup/backup.rb +6 -2
  27. data/lib/zm/client/backup/backup_jsns_initializer.rb +14 -12
  28. data/lib/zm/client/backup/backups_builder.rb +1 -1
  29. data/lib/zm/client/backup/backups_collection.rb +2 -1
  30. data/lib/zm/client/base/account_search_objects_collection.rb +46 -20
  31. data/lib/zm/client/base/admin_objects_collection.rb +22 -27
  32. data/lib/zm/client/base/base_account_jsns_builder.rb +1 -4
  33. data/lib/zm/client/base/base_jsns_initializer.rb +8 -8
  34. data/lib/zm/client/base/mailbox_infos_collection.rb +23 -15
  35. data/lib/zm/client/base/mailbox_object.rb +174 -69
  36. data/lib/zm/client/base/mailbox_prefs_collection.rb +4 -8
  37. data/lib/zm/client/base/object.rb +2 -2
  38. data/lib/zm/client/base/objects_builder.rb +7 -3
  39. data/lib/zm/client/base/objects_collection.rb +4 -13
  40. data/lib/zm/client/base/zimbra_attribute.rb +4 -17
  41. data/lib/zm/client/base/zimbra_attributes_collection.rb +16 -9
  42. data/lib/zm/client/base.rb +0 -1
  43. data/lib/zm/client/cluster/batch_request.rb +50 -0
  44. data/lib/zm/client/cluster/cluster.rb +49 -27
  45. data/lib/zm/client/cluster/cluster_config.rb +129 -40
  46. data/lib/zm/client/common/recipients.rb +2 -2
  47. data/lib/zm/client/common/utils.rb +1 -13
  48. data/lib/zm/client/common.rb +0 -1
  49. data/lib/zm/client/connector/{rest_account.rb → rest_connector.rb} +40 -50
  50. data/lib/zm/client/connector/soap_account.rb +19 -15
  51. data/lib/zm/client/connector/soap_admin.rb +9 -9
  52. data/lib/zm/client/connector/soap_base.rb +24 -17
  53. data/lib/zm/client/connector/soap_error.rb +3 -23
  54. data/lib/zm/client/constant.rb +18 -16
  55. data/lib/zm/client/contact/contact.rb +21 -40
  56. data/lib/zm/client/contact/contact_jsns_builder.rb +1 -1
  57. data/lib/zm/client/contact/contact_jsns_initializer.rb +4 -26
  58. data/lib/zm/client/contact/contacts_builder.rb +1 -1
  59. data/lib/zm/client/contact/contacts_collection.rb +4 -24
  60. data/lib/zm/client/contact/group_contact_jsns_builder.rb +18 -13
  61. data/lib/zm/client/contact/mod_group_contact.rb +6 -2
  62. data/lib/zm/client/cos/cos.rb +35 -11
  63. data/lib/zm/client/cos/cos_domains_collection.rb +1 -1
  64. data/lib/zm/client/cos/cos_jsns_builder.rb +22 -9
  65. data/lib/zm/client/cos/cos_jsns_initializer.rb +2 -6
  66. data/lib/zm/client/cos/cos_servers_collection.rb +5 -6
  67. data/lib/zm/client/cos/coses_builder.rb +1 -1
  68. data/lib/zm/client/cos/coses_collection.rb +6 -4
  69. data/lib/zm/client/datasource/datasource.rb +27 -34
  70. data/lib/zm/client/datasource/datasource_jsns_builder.rb +1 -1
  71. data/lib/zm/client/datasource/datasource_jsns_initializer.rb +5 -6
  72. data/lib/zm/client/datasource/datasources_builder.rb +6 -9
  73. data/lib/zm/client/datasource/datasources_collection.rb +6 -5
  74. data/lib/zm/client/distributionlist/distributionlist.rb +22 -42
  75. data/lib/zm/client/distributionlist/distributionlist_aliases_collection.rb +14 -6
  76. data/lib/zm/client/distributionlist/distributionlist_jsns_builder.rb +20 -16
  77. data/lib/zm/client/distributionlist/distributionlist_jsns_initializer.rb +2 -11
  78. data/lib/zm/client/distributionlist/distributionlist_members_collection.rb +20 -12
  79. data/lib/zm/client/distributionlist/distributionlist_owners_collection.rb +16 -5
  80. data/lib/zm/client/distributionlist/distributionlists_builder.rb +1 -1
  81. data/lib/zm/client/distributionlist/distributionlists_collection.rb +12 -6
  82. data/lib/zm/client/distributionlist/dls_membership_collection.rb +12 -6
  83. data/lib/zm/client/document/document.rb +16 -8
  84. data/lib/zm/client/document/document_jsns_builder.rb +1 -1
  85. data/lib/zm/client/document/document_jsns_initializer.rb +27 -26
  86. data/lib/zm/client/document/documents_builder.rb +1 -1
  87. data/lib/zm/client/document/documents_collection.rb +1 -1
  88. data/lib/zm/client/domain/domain.rb +18 -37
  89. data/lib/zm/client/domain/domain_accounts_collection.rb +1 -1
  90. data/lib/zm/client/domain/domain_distributionlists_collection.rb +1 -1
  91. data/lib/zm/client/domain/domain_jsns_builder.rb +18 -9
  92. data/lib/zm/client/domain/domain_jsns_initializer.rb +2 -6
  93. data/lib/zm/client/domain/domain_resources_collection.rb +1 -1
  94. data/lib/zm/client/domain/domains_builder.rb +1 -1
  95. data/lib/zm/client/domain/domains_collection.rb +12 -6
  96. data/lib/zm/client/filter_rules/filter_rule.rb +0 -9
  97. data/lib/zm/client/filter_rules/filter_rule_jsns_initializer.rb +7 -6
  98. data/lib/zm/client/filter_rules/filter_rules_builder.rb +1 -1
  99. data/lib/zm/client/filter_rules/filter_rules_collection.rb +5 -15
  100. data/lib/zm/client/filter_rules/outgoing_filter_rules_collection.rb +5 -2
  101. data/lib/zm/client/folder/folder.rb +73 -56
  102. data/lib/zm/client/folder/folder_grant.rb +7 -5
  103. data/lib/zm/client/folder/folder_grant_jsns_builder.rb +6 -3
  104. data/lib/zm/client/folder/folder_grants_collection.rb +2 -4
  105. data/lib/zm/client/folder/folder_jsns_builder.rb +14 -7
  106. data/lib/zm/client/folder/folder_jsns_initializer.rb +58 -40
  107. data/lib/zm/client/folder/folder_retention_policies_collection.rb +4 -2
  108. data/lib/zm/client/folder/folders_builder.rb +1 -1
  109. data/lib/zm/client/folder/folders_collection.rb +21 -18
  110. data/lib/zm/client/folder/folders_jsns_builder.rb +4 -2
  111. data/lib/zm/client/folder/mod_document_folder.rb +5 -4
  112. data/lib/zm/client/identity/identities_builder.rb +1 -1
  113. data/lib/zm/client/identity/identities_collection.rb +6 -5
  114. data/lib/zm/client/identity/identity.rb +9 -29
  115. data/lib/zm/client/identity/identity_jsns_builder.rb +8 -4
  116. data/lib/zm/client/identity/identity_jsns_initializer.rb +5 -4
  117. data/lib/zm/client/license/license.rb +7 -1
  118. data/lib/zm/client/license/license_jsns_initializer.rb +8 -5
  119. data/lib/zm/client/license/licenses_collection.rb +1 -1
  120. data/lib/zm/client/mailbox/mailbox_item_concern.rb +33 -0
  121. data/lib/zm/client/mailbox/mailbox_item_id.rb +7 -0
  122. data/lib/zm/client/message/attachments_collection.rb +2 -2
  123. data/lib/zm/client/message/message.rb +56 -52
  124. data/lib/zm/client/message/message_flags.rb +21 -13
  125. data/lib/zm/client/message/message_jsns_builder.rb +11 -6
  126. data/lib/zm/client/message/message_jsns_initializer.rb +24 -23
  127. data/lib/zm/client/message/messages_builder.rb +1 -1
  128. data/lib/zm/client/message/messages_collection.rb +1 -15
  129. data/lib/zm/client/mountpoint/mountpoint.rb +17 -25
  130. data/lib/zm/client/mountpoint/mountpoint_jsns_builder.rb +6 -3
  131. data/lib/zm/client/mountpoint/mountpoint_jsns_initializer.rb +25 -24
  132. data/lib/zm/client/mountpoint/mountpoints_builder.rb +1 -1
  133. data/lib/zm/client/mountpoint/mountpoints_collection.rb +13 -9
  134. data/lib/zm/client/mta_queue/mta_queue.rb +6 -2
  135. data/lib/zm/client/mta_queue/mta_queue_jsns_initializer.rb +3 -7
  136. data/lib/zm/client/mta_queue/mta_queues_builder.rb +3 -1
  137. data/lib/zm/client/mta_queue_item/mta_queue_item.rb +5 -3
  138. data/lib/zm/client/mta_queue_item/mta_queue_item_jsns_initializer.rb +1 -5
  139. data/lib/zm/client/mta_queue_item/mta_queue_items_builder.rb +3 -1
  140. data/lib/zm/client/mta_queue_item/mta_queue_items_collection.rb +3 -1
  141. data/lib/zm/client/resource/resource.rb +6 -18
  142. data/lib/zm/client/resource/resource_jsns_builder.rb +20 -13
  143. data/lib/zm/client/resource/resource_jsns_initializer.rb +4 -14
  144. data/lib/zm/client/resource/resources_builder.rb +1 -1
  145. data/lib/zm/client/resource/resources_collection.rb +12 -7
  146. data/lib/zm/client/search_folder/search_folder.rb +13 -29
  147. data/lib/zm/client/search_folder/search_folder_jsns_builder.rb +6 -6
  148. data/lib/zm/client/search_folder/search_folder_jsns_initializer.rb +19 -18
  149. data/lib/zm/client/search_folder/search_folders_builder.rb +1 -1
  150. data/lib/zm/client/search_folder/search_folders_collection.rb +6 -5
  151. data/lib/zm/client/server/server.rb +9 -3
  152. data/lib/zm/client/server/server_accounts_collection.rb +4 -2
  153. data/lib/zm/client/server/server_jsns_initializer.rb +1 -5
  154. data/lib/zm/client/server/servers_builder.rb +1 -1
  155. data/lib/zm/client/server/servers_collection.rb +17 -9
  156. data/lib/zm/client/share/share.rb +5 -3
  157. data/lib/zm/client/share/share_jsns_initializer.rb +15 -14
  158. data/lib/zm/client/share/share_mountpoints_collection.rb +3 -6
  159. data/lib/zm/client/share/shares_builder.rb +1 -1
  160. data/lib/zm/client/share/shares_collection.rb +6 -3
  161. data/lib/zm/client/signature/signature.rb +6 -21
  162. data/lib/zm/client/signature/signature_jsns_builder.rb +12 -7
  163. data/lib/zm/client/signature/signature_jsns_initializer.rb +5 -4
  164. data/lib/zm/client/signature/signatures_builder.rb +1 -1
  165. data/lib/zm/client/signature/signatures_collection.rb +6 -5
  166. data/lib/zm/client/soap_request/request_methods_admin.rb +56 -0
  167. data/lib/zm/client/soap_request/request_methods_mailbox.rb +60 -0
  168. data/lib/zm/client/soap_request/soap_constants.rb +7 -0
  169. data/lib/zm/client/soap_request/soap_context.rb +11 -2
  170. data/lib/zm/client/soap_request.rb +3 -0
  171. data/lib/zm/client/tag/account_object_tags_collection.rb +11 -9
  172. data/lib/zm/client/tag/tag.rb +8 -44
  173. data/lib/zm/client/tag/tag_jsns_builder.rb +4 -2
  174. data/lib/zm/client/tag/tag_jsns_initializer.rb +7 -6
  175. data/lib/zm/client/tag/tags_builder.rb +1 -1
  176. data/lib/zm/client/tag/tags_collection.rb +6 -5
  177. data/lib/zm/client/task/task.rb +6 -5
  178. data/lib/zm/client/task/task_jsns_initializer.rb +28 -27
  179. data/lib/zm/client/task/tasks_builder.rb +1 -1
  180. data/lib/zm/client/task/tasks_collection.rb +2 -2
  181. data/lib/zm/client/token.rb +52 -0
  182. data/lib/zm/client/upload/upload.rb +101 -95
  183. data/lib/zm/client/zm_logger.rb +83 -0
  184. data/lib/zm/client.rb +6 -1
  185. data/lib/zm/modules/base.rb +0 -1
  186. data/lib/zm/modules/belongs_to_folder.rb +6 -7
  187. data/lib/zm/modules/belongs_to_tag.rb +3 -1
  188. data/lib/zm/modules/common/zimbra-attrs.csv +3 -4
  189. data/lib/zm/modules/inspector.rb +2 -2
  190. data/lib/zm/modules/missing_method_static_collection.rb +2 -2
  191. data/lib/zm/support/cache/entry.rb +63 -0
  192. data/lib/zm/support/cache/file_store.rb +141 -0
  193. data/lib/zm/support/cache/null_store.rb +43 -0
  194. data/lib/zm/support/cache/request_strategy.rb +10 -0
  195. data/lib/zm/support/cache/store.rb +197 -0
  196. data/lib/zm/support/cache/strategy.rb +13 -0
  197. data/lib/zm/support/cache.rb +26 -0
  198. data/lib/zm-ruby-client.rb +2 -2
  199. data/zm-ruby-client.gemspec +10 -15
  200. metadata +37 -36
  201. data/lib/zm/client/common/token_metadata.rb +0 -44
  202. data/lib/zm/modules/zm_logger.rb +0 -26
@@ -5,64 +5,56 @@ module Zm
5
5
  # class for account mountpoint
6
6
  class MountPoint < Base::Object
7
7
  include BelongsToFolder
8
- # include Zm::Model::AttributeChangeObserver
8
+ include RequestMethodsMailbox
9
+ include MailboxItemConcern
9
10
 
10
11
  attr_accessor :owner, :rev, :reminder, :ms, :deletable, :rid, :uuid, :url, :f, :broken, :luuid, :ruuid,
11
- :activesyncdisabled, :absFolderPath, :view, :zid, :id, :webOfflineSyncDays,
12
- :name, :color, :rgb, :l
13
-
14
- # define_changed_attributes :name, :color, :rgb, :l
12
+ :activesyncdisabled, :absFolderPath, :view, :zid, :webOfflineSyncDays, :name, :color, :rgb
15
13
 
16
14
  def initialize(parent)
17
- @l = FolderDefault::ROOT[:id]
18
- super(parent)
15
+ @l = FolderDefault::ROOT.id
16
+ super
19
17
  end
20
18
 
21
19
  def create!
22
- rep = @parent.sacc.invoke(jsns_builder.to_jsns)
20
+ rep = @parent.soap_connector.invoke(build_create)
23
21
  json = rep[:CreateMountpointResponse][:link].first
24
22
 
25
23
  MountpointJsnsInitializer.update(self, json)
26
- @id
24
+ id
27
25
  end
28
26
 
29
27
  def modify!
30
28
  raise NotImplementedError
31
29
  end
32
30
 
31
+ def build_modify
32
+ raise NotImplementedError
33
+ end
34
+
33
35
  def update!(*args)
34
36
  raise NotImplementedError
35
37
  end
36
38
 
37
39
  def color!
38
- # @parent.sacc.invoke(jsns_builder.to_color) if color_changed? || rgb_changed?
39
- @parent.sacc.invoke(jsns_builder.to_color)
40
-
40
+ @parent.soap_connector.invoke(build_color)
41
41
  true
42
42
  end
43
43
 
44
- def rename!(new_name)
45
- return false if new_name == @name
46
-
47
- @parent.sacc.invoke(jsns_builder.to_rename(new_name))
48
- @name = new_name
44
+ def build_color
45
+ jsns_builder.to_color
49
46
  end
50
47
 
51
48
  def reload!
52
49
  raise NotImplementedError
53
50
  end
54
51
 
55
- def delete!
56
- return false if @id.nil?
57
-
58
- @parent.sacc.invoke(jsns_builder.to_delete)
59
- @id = nil
60
- end
61
-
62
52
  private
63
53
 
64
54
  def jsns_builder
65
- @jsns_builder ||= MountpointJsnsBuilder.new(self)
55
+ return @jsns_builder if defined? @jsns_builder
56
+
57
+ @jsns_builder = MountpointJsnsBuilder.new(self)
66
58
  end
67
59
  end
68
60
  end
@@ -19,11 +19,13 @@ module Zm
19
19
  view: @item.view,
20
20
  zid: @item.zid,
21
21
  rid: @item.rid
22
- }.delete_if { |_, v| v.nil? }
22
+ }
23
+ link.compact!
23
24
 
24
25
  attrs = { link: link }
25
26
 
26
- SoapElement.mail(SoapMailConstants::CREATE_MOUNTPOINT_REQUEST).add_attributes(attrs)
27
+ SoapElement.mail(SoapMailConstants::CREATE_MOUNTPOINT_REQUEST)
28
+ .add_attributes(attrs)
27
29
  end
28
30
 
29
31
  alias to_create to_jsns
@@ -39,7 +41,8 @@ module Zm
39
41
  rgb: @item.rgb,
40
42
  url: @item.url,
41
43
  view: @item.view
42
- }.delete_if { |_, v| v.nil? }
44
+ }
45
+ attrs.compact!
43
46
 
44
47
  if @item.is_immutable?
45
48
  attrs.delete(:name)
@@ -6,33 +6,34 @@ module Zm
6
6
  class MountpointJsnsInitializer
7
7
  class << self
8
8
  def create(parent, json)
9
- item = MountPoint.new(parent)
10
- update(item, json)
9
+ MountPoint.new(parent).tap do |item|
10
+ update(item, json)
11
+ end
11
12
  end
12
13
 
13
14
  def update(item, json)
14
- item.id = json[:id].to_i
15
- item.name = json[:name]
16
- item.owner = json[:owner]
17
- item.rev = json[:rev]
18
- item.reminder = json[:reminder]
19
- item.ms = json[:ms]
20
- item.deletable = json[:deletable]
21
- item.rid = json[:rid].to_i
22
- item.uuid = json[:uuid]
23
- item.url = json[:url]
24
- item.f = json[:f]
25
- item.broken = json[:broken]
26
- item.luuid = json[:luuid]
27
- item.ruuid = json[:ruuid]
28
- item.activesyncdisabled = json[:activesyncdisabled]
29
- item.absFolderPath = json[:absFolderPath]
30
- item.view = json[:view]
31
- item.zid = json[:zid]
32
- item.webOfflineSyncDays = json[:webOfflineSyncDays]
33
- item.l = json[:l].to_i
34
- item.color = json[:color].to_i
35
- item.rgb = json[:rgb].to_i
15
+ item.id = json.delete(:id)
16
+ item.name = json.delete(:name)
17
+ item.owner = json.delete(:owner)
18
+ item.rev = json.delete(:rev)
19
+ item.reminder = json.delete(:reminder)
20
+ item.ms = json.delete(:ms)
21
+ item.deletable = json.delete(:deletable)
22
+ item.rid = json.delete(:rid)
23
+ item.uuid = json.delete(:uuid)
24
+ item.url = json.delete(:url)
25
+ item.f = json.delete(:f)
26
+ item.broken = json.delete(:broken)
27
+ item.luuid = json.delete(:luuid)
28
+ item.ruuid = json.delete(:ruuid)
29
+ item.activesyncdisabled = json.delete(:activesyncdisabled)
30
+ item.absFolderPath = json.delete(:absFolderPath)
31
+ item.view = json.delete(:view)
32
+ item.zid = json.delete(:zid)
33
+ item.webOfflineSyncDays = json.delete(:webOfflineSyncDays)
34
+ item.l = json.delete(:l)
35
+ item.color = json.delete(:color)
36
+ item.rgb = json.delete(:rgb)
36
37
 
37
38
  item
38
39
  end
@@ -5,7 +5,7 @@ module Zm
5
5
  # class factory [mountpoints]
6
6
  class MountPointsBuilder < Base::ObjectsBuilder
7
7
  def initialize(parent, json)
8
- super(parent, json)
8
+ super
9
9
  @key_link = :link
10
10
  @key_folder = :folder
11
11
  @list = []
@@ -11,7 +11,7 @@ module Zm
11
11
  def initialize(parent)
12
12
  @child_class = MountPoint
13
13
  @builder_class = MountPointsBuilder
14
- super(parent)
14
+ super
15
15
  @root = nil
16
16
  reset_query_params
17
17
  end
@@ -19,22 +19,30 @@ module Zm
19
19
  def where(view: nil, tr: nil)
20
20
  @view = view
21
21
  @tr = tr
22
- @all = nil
23
22
  self
24
23
  end
25
24
 
26
25
  def clear
27
- @all = nil
28
26
  @root = nil
29
27
  reset_query_params
30
28
  end
31
29
 
32
- private
30
+ def jsns_builder
31
+ return @jsns_builder if defined? @jsns_builder
32
+
33
+ @jsns_builder = FoldersJsnsBuilder.new(self)
34
+ end
33
35
 
34
36
  def make_query
35
- @parent.sacc.invoke(jsns_builder.to_jsns)
37
+ @parent.soap_connector.invoke(build_query)
38
+ end
39
+
40
+ def build_query
41
+ jsns_builder.to_jsns
36
42
  end
37
43
 
44
+ private
45
+
38
46
  def reset_query_params
39
47
  @view = nil
40
48
  @tr = nil
@@ -42,10 +50,6 @@ module Zm
42
50
  @needGranteeName = nil
43
51
  @depth = nil
44
52
  end
45
-
46
- def jsns_builder
47
- @jsns_builder ||= FoldersJsnsBuilder.new(self)
48
- end
49
53
  end
50
54
  end
51
55
  end
@@ -16,7 +16,9 @@ module Zm
16
16
  end
17
17
 
18
18
  def items
19
- @items ||= MtaQueueItemsCollection.new self
19
+ return @items if defined? @items
20
+
21
+ @items = MtaQueueItemsCollection.new self
20
22
  end
21
23
 
22
24
  def hold!(ids)
@@ -38,7 +40,9 @@ module Zm
38
40
  private
39
41
 
40
42
  def jsns_builder
41
- @jsns_builder ||= MtaQueueJsnsBuilder.new(self)
43
+ return @jsns_builder if defined? @jsns_builder
44
+
45
+ @jsns_builder = MtaQueueJsnsBuilder.new(self)
42
46
  end
43
47
  end
44
48
  end
@@ -5,15 +5,11 @@ module Zm
5
5
  # class for initialize account
6
6
  class MtaQueueJsnsInitializer < Base::BaseJsnsInitializer
7
7
  class << self
8
- def create(parent, json)
9
- item = MtaQueue.new(parent)
10
-
11
- update(item, json)
12
- end
8
+ def klass = MtaQueue
13
9
 
14
10
  def update(item, json)
15
- item.n = json[:n]
16
- item.name = json[:name]
11
+ item.n = json.delete(:n)
12
+ item.name = json.delete(:name)
17
13
 
18
14
  item
19
15
  end
@@ -15,7 +15,9 @@ module Zm
15
15
  private
16
16
 
17
17
  def json_items
18
- @json_items ||= @json[:GetMailQueueInfoResponse][:server].first[:queue]
18
+ return @json_items if defined? @json_items
19
+
20
+ @json_items = @json[:GetMailQueueInfoResponse][:server].first[:queue]
19
21
  end
20
22
  end
21
23
  end
@@ -3,8 +3,8 @@
3
3
  module Zm
4
4
  module Client
5
5
  class MtaQueueItem < Base::Object
6
- attr_accessor :name, :n, :size, :fromdomain, :id, :reason, :time, :to, :addr, :filter, :host, :from, :todomain,
7
- :received
6
+ attr_accessor :name, :n, :size, :fromdomain, :id, :reason, :time, :to, :addr,
7
+ :filter, :host, :from, :todomain, :received
8
8
 
9
9
  def mta_queue
10
10
  parent
@@ -15,7 +15,9 @@ module Zm
15
15
  end
16
16
 
17
17
  def sent_at
18
- @sent_at ||= Time.at(@time / 1000)
18
+ return @sent_at if defined? @sent_at
19
+
20
+ @sent_at = Time.at(@time / 1000)
19
21
  rescue StandardError
20
22
  nil
21
23
  end
@@ -5,11 +5,7 @@ module Zm
5
5
  # class for initialize account
6
6
  class MtaQueueItemJsnsInitializer < Base::BaseJsnsInitializer
7
7
  class << self
8
- def create(parent, json)
9
- item = MtaQueueItem.new(parent)
10
-
11
- update(item, json)
12
- end
8
+ def klass = MtaQueueItem
13
9
 
14
10
  def update(item, json)
15
11
  item.size = json[:size]
@@ -15,7 +15,9 @@ module Zm
15
15
  private
16
16
 
17
17
  def json_items
18
- @json_items ||= @json[:GetMailQueueResponse][:server].first[:queue].first[:qi]
18
+ return @json_items if defined? @json_items
19
+
20
+ @json_items = @json[:GetMailQueueResponse][:server].first[:queue].first[:qi]
19
21
  end
20
22
  end
21
23
  end
@@ -57,7 +57,9 @@ module Zm
57
57
  end
58
58
 
59
59
  def jsns_builder
60
- @jsns_builder ||= MtaQueueJsnsBuilder.new(self)
60
+ return @jsns_builder if defined? @jsns_builder
61
+
62
+ @jsns_builder = MtaQueueJsnsBuilder.new(self)
61
63
  end
62
64
  end
63
65
  end
@@ -4,22 +4,14 @@ module Zm
4
4
  module Client
5
5
  # objectClass: zimbraCalendarResource
6
6
  class Resource < Base::MailboxObject
7
+ include RequestMethodsAdmin
8
+
7
9
  LOCATION = 'Location'
8
10
  EQUIPMENT = 'Equipment'
9
11
  TYPES = [LOCATION, EQUIPMENT].freeze
10
12
 
11
- def delete!
12
- sac.invoke(jsns_builder.to_delete)
13
- @id = nil
14
- end
15
-
16
- def modify!
17
- sac.invoke(jsns_builder.to_update)
18
- true
19
- end
20
-
21
13
  def create!
22
- resp = sac.invoke(jsns_builder.to_create)
14
+ resp = sac.invoke(build_create)
23
15
  @id = resp[:CreateCalendarResourceResponse][:calresource].first[:id]
24
16
  end
25
17
 
@@ -35,14 +27,10 @@ module Zm
35
27
  zimbraCalResType == EQUIPMENT
36
28
  end
37
29
 
38
- private
39
-
40
- def do_update!(hash)
41
- sac.invoke(jsns_builder.to_patch(hash))
42
- end
43
-
44
30
  def jsns_builder
45
- @jsns_builder ||= ResourceJsnsBuilder.new(self)
31
+ return @jsns_builder if defined? @jsns_builder
32
+
33
+ @jsns_builder = ResourceJsnsBuilder.new(self)
46
34
  end
47
35
  end
48
36
  end
@@ -12,13 +12,17 @@ module Zm
12
12
  req = {
13
13
  name: @item.name,
14
14
  password: @item.password
15
- }.reject { |_, v| v.nil? }
15
+ }
16
+ req.compact!
16
17
 
17
- soap_request = SoapElement.admin(SoapAdminConstants::CREATE_CALENDAR_RESOURCE_REQUEST).add_attributes(req)
18
+ soap_request = SoapElement.admin(SoapAdminConstants::CREATE_CALENDAR_RESOURCE_REQUEST)
19
+ .add_attributes(req)
18
20
 
19
21
  attrs_only_set_h.each do |key, values|
20
22
  values.each do |value|
21
- node_attr = SoapElement.create(SoapConstants::A).add_attribute(SoapConstants::N, key).add_content(value)
23
+ node_attr = SoapElement.create(SoapConstants::A)
24
+ .add_attribute(SoapConstants::N, key)
25
+ .add_content(value)
22
26
  soap_request.add_node(node_attr)
23
27
  end
24
28
  end
@@ -27,13 +31,14 @@ module Zm
27
31
  end
28
32
 
29
33
  def to_update
30
- soap_request = SoapElement.admin(SoapAdminConstants::MODIFY_CALENDAR_RESOURCE_REQUEST).add_attribute(
31
- SoapConstants::ID, @item.id
32
- )
34
+ soap_request = SoapElement.admin(SoapAdminConstants::MODIFY_CALENDAR_RESOURCE_REQUEST)
35
+ .add_attribute(SoapConstants::ID, @item.id)
33
36
 
34
37
  attrs_only_set_h.each do |key, values|
35
38
  values.each do |value|
36
- node_attr = SoapElement.create(SoapConstants::A).add_attribute(SoapConstants::N, key).add_content(value)
39
+ node_attr = SoapElement.create(SoapConstants::A)
40
+ .add_attribute(SoapConstants::N, key)
41
+ .add_content(value)
37
42
  soap_request.add_node(node_attr)
38
43
  end
39
44
  end
@@ -42,14 +47,15 @@ module Zm
42
47
  end
43
48
 
44
49
  def to_patch(hash)
45
- soap_request = SoapElement.admin(SoapAdminConstants::MODIFY_CALENDAR_RESOURCE_REQUEST).add_attribute(
46
- SoapConstants::ID, @item.id
47
- )
50
+ soap_request = SoapElement.admin(SoapAdminConstants::MODIFY_CALENDAR_RESOURCE_REQUEST)
51
+ .add_attribute(SoapConstants::ID, @item.id)
48
52
 
49
53
  hash.each do |key, values|
50
54
  values = [values] unless values.is_a?(Array)
51
55
  values.each do |value|
52
- node_attr = SoapElement.create(SoapConstants::A).add_attribute(SoapConstants::N, key).add_content(value)
56
+ node_attr = SoapElement.create(SoapConstants::A)
57
+ .add_attribute(SoapConstants::N, key)
58
+ .add_content(value)
53
59
  soap_request.add_node(node_attr)
54
60
  end
55
61
  end
@@ -58,7 +64,8 @@ module Zm
58
64
  end
59
65
 
60
66
  def to_delete
61
- SoapElement.admin(SoapAdminConstants::DELETE_CALENDAR_RESOURCE_REQUEST).add_attribute('id', @item.id)
67
+ SoapElement.admin(SoapAdminConstants::DELETE_CALENDAR_RESOURCE_REQUEST)
68
+ .add_attribute(SoapConstants::ID, @item.id)
62
69
  end
63
70
 
64
71
  def attrs_only_set_h
@@ -72,7 +79,7 @@ module Zm
72
79
  [n, values]
73
80
  end
74
81
 
75
- Hash[arr]
82
+ arr.to_h
76
83
  end
77
84
  end
78
85
  end
@@ -5,23 +5,13 @@ module Zm
5
5
  # class for initialize resource
6
6
  class ResourceJsnsInitializer < Base::BaseJsnsInitializer
7
7
  class << self
8
- def create(parent, json)
9
- item = Resource.new(parent)
10
-
11
- update(item, json)
12
- end
8
+ def klass = Resource
13
9
 
14
10
  def update(item, json)
15
- item.id = json[:id]
16
- item.name = json[:name]
17
- item.used = json[:used] unless json[:used].nil?
18
- item.zimbraMailQuota = json[:limit] unless json[:limit].nil?
19
-
20
- formatted_json(json).each do |k, v|
21
- valorise(item, k, v)
22
- end
11
+ item.used = json.delete(:used) unless json[:used].nil?
12
+ item.zimbraMailQuota = json.delete(:limit) unless json[:limit].nil?
23
13
 
24
- item
14
+ super
25
15
  end
26
16
  end
27
17
  end
@@ -5,7 +5,7 @@ module Zm
5
5
  # class factory [resources]
6
6
  class ResourcesBuilder < Base::ObjectsBuilder
7
7
  def initialize(parent, json)
8
- super(parent, json)
8
+ super
9
9
  @json_item_key = :calresource
10
10
  end
11
11
 
@@ -8,20 +8,25 @@ module Zm
8
8
  @child_class = Resource
9
9
  @builder_class = ResourcesBuilder
10
10
  @search_type = SearchType::RESOURCE
11
- super(parent)
11
+ super
12
12
  end
13
13
 
14
14
  def find_by!(hash)
15
+ entry = sac.invoke(build_find_by(hash))[:GetCalendarResourceResponse][:calresource].first
16
+
17
+ reset_query_params
18
+ ResourceJsnsInitializer.create(@parent, entry)
19
+ end
20
+
21
+ def build_find_by(hash)
15
22
  soap_request = SoapElement.admin(SoapAdminConstants::GET_CALENDAR_RESOURCE_REQUEST)
16
- node_res = SoapElement.create(SoapConstants::CAL_RESOURCE).add_attribute(SoapConstants::BY,
17
- hash.keys.first).add_content(hash.values.first)
23
+ node_res = SoapElement.create(SoapConstants::CAL_RESOURCE)
24
+ .add_attribute(SoapConstants::BY, hash.keys.first)
25
+ .add_content(hash.values.first)
18
26
  soap_request.add_node(node_res)
19
27
  soap_request.add_attribute(SoapConstants::ATTRS, attrs_comma)
20
28
  soap_request.add_attribute(SoapConstants::APPLY_COS, @apply_cos)
21
- entry = sac.invoke(soap_request)[:GetCalendarResourceResponse][:calresource].first
22
-
23
- reset_query_params
24
- ResourceJsnsInitializer.create(@parent, entry)
29
+ soap_request
25
30
  end
26
31
 
27
32
  private
@@ -4,61 +4,45 @@ module Zm
4
4
  module Client
5
5
  # class account SearchFolder
6
6
  class SearchFolder < Base::Object
7
- # include Zm::Model::AttributeChangeObserver
7
+ include RequestMethodsMailbox
8
+ include MailboxItemConcern
8
9
 
9
- attr_accessor :id, :uuid, :deletable, :name, :absFolderPath, :l, :luuid, :color, :rgb, :rev, :ms,
10
+ attr_accessor :uuid, :deletable, :name, :absFolderPath, :luuid, :color, :rgb, :rev, :ms,
10
11
  :webOfflineSyncDays, :activesyncdisabled, :query, :sortBy, :types,
11
- :name, :color, :rgb, :l, :query, :sortBy
12
-
13
- # define_changed_attributes :name, :color, :rgb, :l, :query, :sortBy
12
+ :name, :color, :rgb, :query, :sortBy
14
13
 
15
14
  def initialize(parent)
16
- @l = FolderDefault::ROOT[:id]
15
+ @l = FolderDefault::ROOT.id
17
16
  @types = 'messages'
18
- super(parent)
17
+ super
19
18
  end
20
19
 
21
20
  def create!
22
- rep = @parent.sacc.invoke(jsns_builder.to_jsns)
21
+ rep = @parent.soap_connector.invoke(build_create)
23
22
  json = rep[:CreateSearchFolderResponse][:search].first
24
23
  SearchFolderJsnsInitializer.update(self, json)
25
24
  @id
26
25
  end
27
26
 
28
- def modify!
29
- @parent.sacc.invoke(jsns_builder.to_modify)
30
- true
31
- end
32
-
33
27
  def update!(*args)
34
28
  raise NotImplementedError
35
29
  end
36
30
 
37
- def rename!(new_name)
38
- return false if new_name == @name
39
-
40
- @parent.sacc.invoke(jsns_builder.to_rename(new_name))
41
- @name = new_name
42
- end
43
-
44
31
  def color!
45
- # @parent.sacc.invoke(jsns_builder.to_color) if color_changed? || rgb_changed?
46
- @parent.sacc.invoke(jsns_builder.to_color)
47
-
32
+ @parent.soap_connector.invoke(build_color)
48
33
  true
49
34
  end
50
35
 
51
- def delete!
52
- return false if @id.nil?
53
-
54
- @parent.sacc.invoke(jsns_builder.to_delete)
55
- @id = nil
36
+ def build_color
37
+ jsns_builder.to_color
56
38
  end
57
39
 
58
40
  private
59
41
 
60
42
  def jsns_builder
61
- @jsns_builder ||= SearchFolderJsnsBuilder.new(self)
43
+ return @jsns_builder if defined? @jsns_builder
44
+
45
+ @jsns_builder = SearchFolderJsnsBuilder.new(self)
62
46
  end
63
47
  end
64
48
  end
@@ -16,7 +16,8 @@ module Zm
16
16
  l: @item.l,
17
17
  color: @item.color,
18
18
  sortBy: @item.sortBy
19
- }.delete_if { |_, v| v.nil? }
19
+ }
20
+ attrs.compact!
20
21
 
21
22
  soap_request = SoapElement.mail(SoapMailConstants::CREATE_SEARCH_FOLDER_REQUEST)
22
23
  node_search = SoapElement.create(SoapConstants::SEARCH).add_attributes(attrs)
@@ -31,7 +32,8 @@ module Zm
31
32
  id: @item.id,
32
33
  query: @item.query,
33
34
  types: @item.types
34
- }.reject { |_, v| v.nil? }
35
+ }
36
+ attrs.compact!
35
37
 
36
38
  soap_request = SoapElement.mail(SoapMailConstants::MODIFY_SEARCH_FOLDER_REQUEST)
37
39
  node_search = SoapElement.create(SoapConstants::SEARCH).add_attributes(attrs)
@@ -46,7 +48,8 @@ module Zm
46
48
  name: @item.name,
47
49
  color: @item.color,
48
50
  rgb: @item.rgb
49
- }.reject { |_, v| v.nil? }
51
+ }
52
+ attrs.compact!
50
53
 
51
54
  build(attrs)
52
55
  end
@@ -79,9 +82,6 @@ module Zm
79
82
  color: @item.color
80
83
  }
81
84
 
82
- # attrs[:rgb] = @item.rgb if @item.rgb_changed?
83
- # attrs[:color] = @item.color if @item.color_changed?
84
-
85
85
  build(attrs)
86
86
  end
87
87