zm-ruby-client 0.18.3 → 2.0.2

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 (250) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/Gemfile +2 -2
  4. data/README.md +7 -0
  5. data/lib/zm/client/account/account.rb +31 -319
  6. data/lib/zm/client/account/account_aliases_collection.rb +52 -0
  7. data/lib/zm/client/account/account_dls_membership_collection.rb +4 -1
  8. data/lib/zm/client/account/account_dls_owner_collection.rb +8 -1
  9. data/lib/zm/client/account/account_jsns_builder.rb +77 -0
  10. data/lib/zm/client/account/account_jsns_initializer.rb +9 -24
  11. data/lib/zm/client/account/accounts_builder.rb +0 -1
  12. data/lib/zm/client/account/accounts_collection.rb +32 -8
  13. data/lib/zm/client/account.rb +1 -0
  14. data/lib/zm/client/ace/ace.rb +6 -22
  15. data/lib/zm/client/ace/ace_jsns_builder.rb +15 -16
  16. data/lib/zm/client/ace/ace_jsns_initializer.rb +0 -1
  17. data/lib/zm/client/ace/aces_builder.rb +0 -1
  18. data/lib/zm/client/ace/aces_collection.rb +2 -18
  19. data/lib/zm/client/appointment/appointment.rb +38 -30
  20. data/lib/zm/client/appointment/appointment_jsns_builder.rb +22 -34
  21. data/lib/zm/client/appointment/appointment_jsns_initializer.rb +6 -3
  22. data/lib/zm/client/appointment/appointments_builder.rb +6 -18
  23. data/lib/zm/client/appointment/appointments_collection.rb +25 -4
  24. data/lib/zm/client/backup/backup.rb +4 -32
  25. data/lib/zm/client/backup/backup_jsns_initializer.rb +26 -0
  26. data/lib/zm/client/backup/backups_builder.rb +8 -13
  27. data/lib/zm/client/backup/backups_collection.rb +2 -1
  28. data/lib/zm/client/backup.rb +1 -0
  29. data/lib/zm/client/base/account_search_objects_collection.rb +34 -13
  30. data/lib/zm/client/base/admin_objects_collection.rb +82 -17
  31. data/lib/zm/client/base/base_account_jsns_builder.rb +98 -0
  32. data/lib/zm/client/base/base_jsns_builder.rb +47 -0
  33. data/lib/zm/client/base/base_jsns_initializer.rb +43 -12
  34. data/lib/zm/client/base/ldap_filter.rb +20 -5
  35. data/lib/zm/client/base/mailbox_infos_collection.rb +88 -0
  36. data/lib/zm/client/base/mailbox_object.rb +299 -0
  37. data/lib/zm/client/base/mailbox_prefs_collection.rb +75 -0
  38. data/lib/zm/client/base/object.rb +28 -62
  39. data/lib/zm/client/base/objects_builder.rb +4 -10
  40. data/lib/zm/client/base/objects_collection.rb +13 -10
  41. data/lib/zm/client/base/zimbra_attribute.rb +10 -8
  42. data/lib/zm/client/base/zimbra_attributes_collection.rb +154 -10
  43. data/lib/zm/client/base.rb +5 -5
  44. data/lib/zm/client/cluster/cluster.rb +43 -39
  45. data/lib/zm/client/cluster/cluster_config.rb +5 -5
  46. data/lib/zm/client/common/recipients.rb +3 -3
  47. data/lib/zm/client/common/token_metadata.rb +4 -1
  48. data/lib/zm/client/common/utils.rb +57 -0
  49. data/lib/zm/client/common.rb +2 -1
  50. data/lib/zm/client/connector/rest_account.rb +14 -4
  51. data/lib/zm/client/connector/soap_account.rb +38 -441
  52. data/lib/zm/client/connector/soap_admin.rb +16 -552
  53. data/lib/zm/client/connector/soap_base.rb +25 -5
  54. data/lib/zm/client/connector/soap_error.rb +1 -3
  55. data/lib/zm/client/constant.rb +21 -11
  56. data/lib/zm/client/contact/contact.rb +42 -83
  57. data/lib/zm/client/contact/contact_jsns_builder.rb +60 -0
  58. data/lib/zm/client/contact/contact_jsns_initializer.rb +78 -0
  59. data/lib/zm/client/contact/contact_member.rb +29 -28
  60. data/lib/zm/client/contact/contact_members_collection.rb +44 -0
  61. data/lib/zm/client/contact/contacts_builder.rb +8 -1
  62. data/lib/zm/client/contact/contacts_collection.rb +17 -1
  63. data/lib/zm/client/contact/group_contact_jsns_builder.rb +51 -0
  64. data/lib/zm/client/contact/mod_group_contact.rb +4 -67
  65. data/lib/zm/client/contact.rb +5 -1
  66. data/lib/zm/client/cos/cos.rb +35 -40
  67. data/lib/zm/client/cos/cos_accounts_collection.rb +19 -0
  68. data/lib/zm/client/cos/cos_domains_collection.rb +20 -0
  69. data/lib/zm/client/cos/cos_jsns_builder.rb +72 -0
  70. data/lib/zm/client/cos/cos_jsns_initializer.rb +29 -0
  71. data/lib/zm/client/cos/cos_servers_collection.rb +60 -0
  72. data/lib/zm/client/cos/coses_builder.rb +8 -1
  73. data/lib/zm/client/cos/coses_collection.rb +8 -5
  74. data/lib/zm/client/cos.rb +5 -0
  75. data/lib/zm/client/datasource/datasource.rb +69 -0
  76. data/lib/zm/client/datasource/datasource_jsns_builder.rb +32 -0
  77. data/lib/zm/client/datasource/datasource_jsns_initializer.rb +27 -0
  78. data/lib/zm/client/datasource/datasources_builder.rb +29 -0
  79. data/lib/zm/client/datasource/datasources_collection.rb +21 -0
  80. data/lib/zm/client/datasource.rb +7 -0
  81. data/lib/zm/client/distributionlist/distributionlist.rb +52 -118
  82. data/lib/zm/client/distributionlist/distributionlist_aces_collection.rb +31 -0
  83. data/lib/zm/client/distributionlist/distributionlist_aliases_collection.rb +53 -0
  84. data/lib/zm/client/distributionlist/distributionlist_jsns_builder.rb +82 -0
  85. data/lib/zm/client/distributionlist/distributionlist_jsns_initializer.rb +32 -0
  86. data/lib/zm/client/distributionlist/distributionlist_members_collection.rb +47 -0
  87. data/lib/zm/client/distributionlist/distributionlist_owners_collection.rb +52 -0
  88. data/lib/zm/client/distributionlist/distributionlists_builder.rb +8 -1
  89. data/lib/zm/client/distributionlist/distributionlists_collection.rb +8 -9
  90. data/lib/zm/client/distributionlist/dls_membership_collection.rb +4 -1
  91. data/lib/zm/client/distributionlist.rb +2 -0
  92. data/lib/zm/client/document/document.rb +27 -24
  93. data/lib/zm/client/document/document_jsns_builder.rb +18 -0
  94. data/lib/zm/client/document/document_jsns_initializer.rb +44 -0
  95. data/lib/zm/client/document/documents_builder.rb +6 -16
  96. data/lib/zm/client/document/documents_collection.rb +17 -67
  97. data/lib/zm/client/document.rb +2 -0
  98. data/lib/zm/client/domain/domain.rb +45 -68
  99. data/lib/zm/client/domain/domain_accounts_collection.rb +1 -1
  100. data/lib/zm/client/domain/domain_distributionlists_collection.rb +13 -0
  101. data/lib/zm/client/domain/domain_jsns_builder.rb +69 -0
  102. data/lib/zm/client/domain/domain_jsns_initializer.rb +25 -0
  103. data/lib/zm/client/domain/domain_resources_collection.rb +13 -0
  104. data/lib/zm/client/domain/domains_builder.rb +8 -1
  105. data/lib/zm/client/domain/domains_collection.rb +7 -7
  106. data/lib/zm/client/domain.rb +4 -0
  107. data/lib/zm/client/filter_rule.rb +7 -0
  108. data/lib/zm/client/filter_rules/filter_rule.rb +10 -0
  109. data/lib/zm/client/filter_rules/filter_rule_jsns_initializer.rb +24 -0
  110. data/lib/zm/client/filter_rules/filter_rules_builder.rb +21 -0
  111. data/lib/zm/client/filter_rules/filter_rules_collection.rb +21 -0
  112. data/lib/zm/client/filter_rules/outgoing_filter_rules_collection.rb +15 -0
  113. data/lib/zm/client/folder/folder.rb +77 -61
  114. data/lib/zm/client/folder/folder_grant.rb +34 -14
  115. data/lib/zm/client/folder/folder_grant_jsns_builder.rb +15 -4
  116. data/lib/zm/client/folder/folder_grants_collection.rb +36 -2
  117. data/lib/zm/client/folder/folder_jsns_builder.rb +22 -48
  118. data/lib/zm/client/folder/folder_jsns_initializer.rb +34 -17
  119. data/lib/zm/client/folder/folder_retention_policies_collection.rb +2 -3
  120. data/lib/zm/client/folder/folder_retention_policy.rb +0 -1
  121. data/lib/zm/client/folder/folders_builder.rb +7 -10
  122. data/lib/zm/client/folder/folders_collection.rb +5 -2
  123. data/lib/zm/client/folder/folders_jsns_builder.rb +3 -1
  124. data/lib/zm/client/folder/mod_document_folder.rb +10 -6
  125. data/lib/zm/client/folder.rb +1 -1
  126. data/lib/zm/client/identity/identities_builder.rb +8 -1
  127. data/lib/zm/client/identity/identities_collection.rb +2 -1
  128. data/lib/zm/client/identity/identity.rb +34 -42
  129. data/lib/zm/client/identity/identity_jsns_builder.rb +57 -0
  130. data/lib/zm/client/identity/identity_jsns_initializer.rb +29 -0
  131. data/lib/zm/client/identity.rb +3 -1
  132. data/lib/zm/client/license/license.rb +9 -22
  133. data/lib/zm/client/license/license_jsns_initializer.rb +20 -0
  134. data/lib/zm/client/license/licenses_collection.rb +3 -13
  135. data/lib/zm/client/license.rb +2 -1
  136. data/lib/zm/client/message/attachments_collection.rb +55 -0
  137. data/lib/zm/client/message/message.rb +36 -264
  138. data/lib/zm/client/message/message_flags.rb +107 -0
  139. data/lib/zm/client/message/message_jsns_builder.rb +85 -0
  140. data/lib/zm/client/message/message_jsns_initializer.rb +71 -0
  141. data/lib/zm/client/message/message_recipients.rb +59 -0
  142. data/lib/zm/client/message/messages_builder.rb +7 -18
  143. data/lib/zm/client/message/messages_collection.rb +17 -2
  144. data/lib/zm/client/message.rb +5 -0
  145. data/lib/zm/client/mountpoint/mountpoint.rb +43 -21
  146. data/lib/zm/client/mountpoint/mountpoint_jsns_builder.rb +8 -53
  147. data/lib/zm/client/mountpoint/mountpoint_jsns_initializer.rb +22 -13
  148. data/lib/zm/client/mountpoint/mountpoints_builder.rb +4 -5
  149. data/lib/zm/client/mountpoint/mountpoints_collection.rb +1 -2
  150. data/lib/zm/client/mta_queue/mta_queue.rb +13 -28
  151. data/lib/zm/client/mta_queue/mta_queue_jsns_builder.rb +41 -0
  152. data/lib/zm/client/mta_queue/mta_queue_jsns_initializer.rb +23 -0
  153. data/lib/zm/client/mta_queue/mta_queues_builder.rb +4 -8
  154. data/lib/zm/client/mta_queue/mta_queues_collection.rb +8 -27
  155. data/lib/zm/client/mta_queue.rb +2 -0
  156. data/lib/zm/client/mta_queue_item/mta_queue_item.rb +4 -31
  157. data/lib/zm/client/mta_queue_item/mta_queue_item_jsns_initializer.rb +33 -0
  158. data/lib/zm/client/mta_queue_item/mta_queue_items_builder.rb +4 -9
  159. data/lib/zm/client/mta_queue_item/mta_queue_items_collection.rb +7 -42
  160. data/lib/zm/client/mta_queue_item.rb +2 -1
  161. data/lib/zm/client/resource/resource.rb +24 -91
  162. data/lib/zm/client/resource/resource_jsns_builder.rb +79 -0
  163. data/lib/zm/client/resource/resource_jsns_initializer.rb +29 -0
  164. data/lib/zm/client/resource/resources_builder.rb +8 -1
  165. data/lib/zm/client/resource/resources_collection.rb +9 -7
  166. data/lib/zm/client/resource.rb +2 -0
  167. data/lib/zm/client/search_folder/search_folder.rb +38 -16
  168. data/lib/zm/client/search_folder/search_folder_jsns_builder.rb +38 -19
  169. data/lib/zm/client/search_folder/search_folder_jsns_initializer.rb +17 -13
  170. data/lib/zm/client/search_folder/search_folders_builder.rb +0 -1
  171. data/lib/zm/client/search_folder/search_folders_collection.rb +2 -1
  172. data/lib/zm/client/server/server.rb +16 -488
  173. data/lib/zm/client/server/server_jsns_initializer.rb +16 -0
  174. data/lib/zm/client/server/servers_builder.rb +8 -1
  175. data/lib/zm/client/server/servers_collection.rb +13 -5
  176. data/lib/zm/client/server.rb +1 -0
  177. data/lib/zm/client/share/share.rb +5 -43
  178. data/lib/zm/client/share/share_jsns_initializer.rb +32 -0
  179. data/lib/zm/client/share/share_mountpoints_collection.rb +38 -0
  180. data/lib/zm/client/share/shares_builder.rb +8 -1
  181. data/lib/zm/client/share/shares_collection.rb +11 -16
  182. data/lib/zm/client/share.rb +2 -0
  183. data/lib/zm/client/signature/signature.rb +25 -29
  184. data/lib/zm/client/signature/signature_jsns_builder.rb +31 -13
  185. data/lib/zm/client/signature/signature_jsns_initializer.rb +16 -12
  186. data/lib/zm/client/signature/signatures_builder.rb +1 -2
  187. data/lib/zm/client/signature/signatures_collection.rb +2 -1
  188. data/lib/zm/client/signature.rb +1 -1
  189. data/lib/zm/client/soap_request/account_soap_constants.rb +76 -0
  190. data/lib/zm/client/soap_request/admin_soap_constants.rb +214 -0
  191. data/lib/zm/client/soap_request/mail_soap_constants.rb +162 -0
  192. data/lib/zm/client/soap_request/soap_constants.rb +55 -0
  193. data/lib/zm/client/soap_request/soap_context.rb +38 -0
  194. data/lib/zm/client/soap_request/soap_element.rb +90 -0
  195. data/lib/zm/client/soap_request.rb +8 -0
  196. data/lib/zm/client/tag/account_object_tags_collection.rb +65 -0
  197. data/lib/zm/client/tag/tag.rb +34 -22
  198. data/lib/zm/client/tag/tag_jsns_builder.rb +14 -35
  199. data/lib/zm/client/tag/tag_jsns_initializer.rb +4 -6
  200. data/lib/zm/client/tag/tags_builder.rb +0 -1
  201. data/lib/zm/client/tag/tags_collection.rb +2 -1
  202. data/lib/zm/client/tag.rb +1 -0
  203. data/lib/zm/client/task/task.rb +18 -49
  204. data/lib/zm/client/task/task_jsns_initializer.rb +45 -0
  205. data/lib/zm/client/task/tasks_builder.rb +6 -16
  206. data/lib/zm/client/task/tasks_collection.rb +29 -0
  207. data/lib/zm/client/task.rb +1 -0
  208. data/lib/zm/client/upload/upload.rb +26 -30
  209. data/lib/zm/client/version.rb +3 -3
  210. data/lib/zm/client.rb +4 -1
  211. data/lib/zm/modules/base.rb +10 -0
  212. data/lib/zm/modules/belongs_to_folder.rb +37 -0
  213. data/lib/zm/modules/belongs_to_tag.rb +11 -0
  214. data/lib/zm/modules/common/zimbra-attrs.json +33 -1
  215. data/lib/zm/modules/has_soap_admin_connector.rb +12 -0
  216. data/lib/zm/modules/inspector.rb +24 -0
  217. data/lib/zm/modules/missing_method_static_collection.rb +13 -0
  218. data/lib/zm/modules/zm_logger.rb +3 -1
  219. data/lib/zm/modules/zm_model.rb +4 -2
  220. data/lib/zm/utils/thread_pool.rb +4 -2
  221. data/lib/zm-ruby-client.rb +2 -0
  222. data/zm-ruby-client.gemspec +12 -9
  223. metadata +93 -34
  224. data/lib/zm/client/base/account_object.rb +0 -51
  225. data/lib/zm/client/base/admin_object.rb +0 -51
  226. data/lib/zm/client/base/folder_object.rb +0 -41
  227. data/lib/zm/client/config.rb +0 -12
  228. data/lib/zm/client/data_source.rb +0 -5
  229. data/lib/zm/modules/common/account_common.rb +0 -71
  230. data/lib/zm/modules/common/cos_common.rb +0 -463
  231. data/lib/zm/modules/common/dl_common.rb +0 -38
  232. data/lib/zm/modules/common/identity_common.rb +0 -19
  233. data/lib/zm/modules/common/resource_common.rb +0 -59
  234. data/lib/zm/modules/common/signature_common.rb +0 -16
  235. data/lib/zm/modules/common/zimbra-attrs.json.bak +0 -1
  236. data/test/accounts.rb +0 -89
  237. data/test/ace.rb +0 -50
  238. data/test/cluster.rb +0 -41
  239. data/test/cluster_config.rb +0 -30
  240. data/test/cluster_zimbra_attributes.rb +0 -38
  241. data/test/coses.rb +0 -26
  242. data/test/domains.rb +0 -70
  243. data/test/folder.rb +0 -125
  244. data/test/folder_grant.rb +0 -51
  245. data/test/mountpoint.rb +0 -49
  246. data/test/retention_policies.rb +0 -40
  247. data/test/search_folder.rb +0 -67
  248. data/test/signature.rb +0 -53
  249. data/test/tag.rb +0 -65
  250. data/test/zimbra_attributes.rb +0 -35
@@ -8,8 +8,23 @@ module Zm
8
8
  super(parent)
9
9
  @child_class = Message
10
10
  @builder_class = MessagesBuilder
11
- @type = 'message'
12
- @sort_by = 'dateDesc'
11
+ @type = SoapConstants::MESSAGE
12
+ @sort_by = SoapConstants::DATE_DESC
13
+ end
14
+
15
+ def find_each
16
+ @all = []
17
+
18
+ @more = true
19
+ @offset = 0
20
+ @limit = 500
21
+
22
+ while @more
23
+ @all += build_response
24
+ @offset += @limit
25
+ end
26
+
27
+ @all
13
28
  end
14
29
 
15
30
  private
@@ -1,5 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'zm/client/message/message'
4
+ require 'zm/client/message/message_flags'
5
+ require 'zm/client/message/message_recipients'
6
+ require 'zm/client/message/attachments_collection'
7
+ require 'zm/client/message/message_jsns_builder'
8
+ require 'zm/client/message/message_jsns_initializer'
4
9
  require 'zm/client/message/messages_builder'
5
10
  require 'zm/client/message/messages_collection'
@@ -3,38 +3,60 @@
3
3
  module Zm
4
4
  module Client
5
5
  # class for account mountpoint
6
- class MountPoint < Base::FolderObject
7
- include Zm::Model::AttributeChangeObserver
6
+ class MountPoint < Base::Object
7
+ include BelongsToFolder
8
+ # include Zm::Model::AttributeChangeObserver
8
9
 
9
- INSTANCE_VARIABLE_KEYS = %i[
10
- owner rev reminder ms deletable l rid uuid url f broken
11
- luuid ruuid activesyncdisabled absFolderPath view zid name id
12
- webOfflineSyncDays color rgb
13
- ].freeze
10
+ 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
14
13
 
15
- attr_reader :owner, :rev, :reminder, :ms, :deletable, :rid, :uuid, :url, :f, :broken, :luuid, :ruuid, :activesyncdisabled, :absFolderPath, :zid, :id, :webOfflineSyncDays
16
- attr_writer :view, :zid, :rid
14
+ # define_changed_attributes :name, :color, :rgb, :l
17
15
 
18
- define_changed_attributes :name, :color, :rgb, :l
19
-
20
- def all_instance_variable_keys
21
- INSTANCE_VARIABLE_KEYS
16
+ def initialize(parent)
17
+ @l = FolderDefault::ROOT[:id]
18
+ super(parent)
22
19
  end
23
20
 
24
- alias parent_id l
25
-
26
21
  def create!
27
- rep = @parent.sacc.create_mountpoint(@parent.token, jsns_builder.to_jsns)
28
- json = rep[:Body][:CreateMountpointResponse][:link].first
22
+ rep = @parent.sacc.invoke(jsns_builder.to_jsns)
23
+ json = rep[:CreateMountpointResponse][:link].first
24
+
29
25
  MountpointJsnsInitializer.update(self, json)
26
+ @id
27
+ end
28
+
29
+ def modify!
30
+ raise NotImplementedError
31
+ end
32
+
33
+ def update!(*args)
34
+ raise NotImplementedError
30
35
  end
31
36
 
32
- def update!(options)
33
- # todo
37
+ def color!
38
+ # @parent.sacc.invoke(jsns_builder.to_color) if color_changed? || rgb_changed?
39
+ @parent.sacc.invoke(jsns_builder.to_color)
40
+
41
+ true
42
+ end
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
34
49
  end
35
50
 
36
- def fb
37
- nil
51
+ def reload!
52
+ raise NotImplementedError
53
+ end
54
+
55
+ def delete!
56
+ return false if @id.nil?
57
+
58
+ @parent.sacc.invoke(jsns_builder.to_delete)
59
+ @id = nil
38
60
  end
39
61
 
40
62
  private
@@ -3,8 +3,7 @@
3
3
  module Zm
4
4
  module Client
5
5
  # class for account folder
6
- class MountpointJsnsBuilder < Base::BaseJsnsBuilder
7
-
6
+ class MountpointJsnsBuilder < BaseAccountJsnsBuilder
8
7
  def to_find
9
8
  { link: { l: @item.id } }
10
9
  end
@@ -22,13 +21,15 @@ module Zm
22
21
  rid: @item.rid
23
22
  }.delete_if { |_, v| v.nil? }
24
23
 
25
- { link: link }
24
+ attrs = { link: link }
25
+
26
+ SoapElement.mail(SoapMailConstants::CREATE_MOUNTPOINT_REQUEST).add_attributes(attrs)
26
27
  end
27
28
 
28
29
  alias to_create to_jsns
29
30
 
30
31
  def to_update
31
- action = {
32
+ attrs = {
32
33
  op: :update,
33
34
  id: @item.id,
34
35
  f: @item.f,
@@ -41,57 +42,11 @@ module Zm
41
42
  }.delete_if { |_, v| v.nil? }
42
43
 
43
44
  if @item.is_immutable?
44
- action.delete(:name)
45
- action.delete(:l)
45
+ attrs.delete(:name)
46
+ attrs.delete(:l)
46
47
  end
47
48
 
48
- { action: action }
49
- end
50
-
51
- def to_rename
52
- action = {
53
- op: :rename,
54
- id: @item.id,
55
- name: @item.name
56
- }
57
-
58
- { action: action }
59
- end
60
-
61
- def to_move
62
- action = {
63
- op: :move,
64
- id: @item.id,
65
- l: @item.l
66
- }
67
-
68
- { action: action }
69
- end
70
-
71
- def to_color
72
- action = {
73
- op: :color,
74
- id: @item.id
75
- }
76
-
77
- action[:rgb] = @item.rgb if @item.rgb_changed?
78
- action[:color] = @item.color if @item.color_changed?
79
-
80
- { action: action }
81
- end
82
-
83
- def to_empty
84
- action = {
85
- op: :empty,
86
- id: @item.id,
87
- recursive: false
88
- }
89
-
90
- { action: action }
91
- end
92
-
93
- def to_delete
94
- { action: { op: :delete, id: @item.id } }
49
+ build(attrs)
95
50
  end
96
51
  end
97
52
  end
@@ -7,26 +7,35 @@ module Zm
7
7
  class << self
8
8
  def create(parent, json)
9
9
  item = MountPoint.new(parent)
10
-
11
- item.instance_variable_set(:@id, json[:id])
12
- item.instance_variable_set(:@name, json[:name])
13
-
14
10
  update(item, json)
15
11
  end
16
12
 
17
13
  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
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
21
36
 
22
37
  item
23
38
  end
24
-
25
- def arrow_name(name)
26
- return name if name.to_s.start_with?('@')
27
-
28
- "@#{name}"
29
- end
30
39
  end
31
40
  end
32
41
  end
@@ -4,16 +4,15 @@ module Zm
4
4
  module Client
5
5
  # class factory [mountpoints]
6
6
  class MountPointsBuilder < Base::ObjectsBuilder
7
- def initialize(account, json)
8
- @account = account
9
- @json = json
7
+ def initialize(parent, json)
8
+ super(parent, json)
10
9
  @key_link = :link
11
10
  @key_folder = :folder
12
11
  @list = []
13
12
  end
14
13
 
15
14
  def make
16
- root = @json[:Body][:GetFolderResponse][@key_folder]
15
+ root = @json[:GetFolderResponse][@key_folder]
17
16
 
18
17
  construct_tree(root)
19
18
 
@@ -24,7 +23,7 @@ module Zm
24
23
  json_folders.each do |json_folder|
25
24
  if json_folder[@key_link].is_a?(Array)
26
25
  @list += json_folder[@key_link].map do |json_link|
27
- MountpointJsnsInitializer.create(@account, json_link)
26
+ MountpointJsnsInitializer.create(@parent, json_link)
28
27
  end
29
28
  end
30
29
 
@@ -4,7 +4,6 @@ module Zm
4
4
  module Client
5
5
  # collection of mountpoints
6
6
  class MountPointsCollection < Base::AccountObjectsCollection
7
-
8
7
  attr_reader :root
9
8
 
10
9
  attr_accessor :view, :tr, :visible, :needGranteeName, :depth
@@ -33,7 +32,7 @@ module Zm
33
32
  private
34
33
 
35
34
  def make_query
36
- @parent.sacc.get_folder(@parent.token, jsns_builder.to_jsns)
35
+ @parent.sacc.invoke(jsns_builder.to_jsns)
37
36
  end
38
37
 
39
38
  def reset_query_params
@@ -4,56 +4,41 @@ require 'zm/client/mta_queue_item'
4
4
 
5
5
  module Zm
6
6
  module Client
7
- class MtaQueue < Base::AdminObject
8
- attr_reader :name, :n
7
+ class MtaQueue < Base::Object
8
+ include HasSoapAdminConnector
9
+
10
+ attr_accessor :name, :n
9
11
 
10
12
  alias nb_items n
11
13
 
12
14
  def server
13
- parent
14
- end
15
-
16
- def to_h
17
- hashmap = Hash[all_instance_variable_keys.map { |key| [key, instance_variable_get(arrow_name(key))] }]
18
- hashmap.delete_if { |_, v| v.nil? }
19
- hashmap
20
- end
21
-
22
- def to_s
23
- to_h.to_s
24
- end
25
-
26
- def all_instance_variable_keys
27
- %w[name n]
15
+ @parent
28
16
  end
29
17
 
30
18
  def items
31
19
  @items ||= MtaQueueItemsCollection.new self
32
20
  end
33
21
 
34
- def do_action(action_name, ids)
35
- sac.mail_queue_action(parent.name, name, action_name, ids)
36
- end
37
-
38
22
  def hold!(ids)
39
- do_action(Zm::Client::MtaQueueAction::HOLD, ids)
23
+ sac.invoke(jsns_builder.to_jsns(Zm::Client::MtaQueueAction::HOLD, ids))
40
24
  end
41
25
 
42
26
  def release!(ids)
43
- do_action(Zm::Client::MtaQueueAction::RELEASE, ids)
27
+ sac.invoke(jsns_builder.to_jsns(Zm::Client::MtaQueueAction::RELEASE, ids))
44
28
  end
45
29
 
46
30
  def delete!(ids)
47
- do_action(Zm::Client::MtaQueueAction::DELETE, ids)
31
+ sac.invoke(jsns_builder.to_jsns(Zm::Client::MtaQueueAction::DELETE, ids))
48
32
  end
49
33
 
50
34
  def requeue!(ids)
51
- do_action(Zm::Client::MtaQueueAction::REQUEUE, ids)
35
+ sac.invoke(jsns_builder.to_jsns(Zm::Client::MtaQueueAction::REQUEUE, ids))
52
36
  end
53
37
 
54
- def init_from_json(json)
55
- @name = json[:name]
56
- @n = json[:n].to_i
38
+ private
39
+
40
+ def jsns_builder
41
+ @jsns_builder ||= MtaQueueJsnsBuilder.new(self)
57
42
  end
58
43
  end
59
44
  end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ # class for Mta Queue jsns builder
6
+ class MtaQueueJsnsBuilder
7
+ def initialize(item)
8
+ @item = item
9
+ end
10
+
11
+ def to_jsns(op, ids)
12
+ soap_request = SoapElement.admin(SoapAdminConstants::MAIL_QUEUE_ACTION_REQUEST)
13
+ node_server = SoapElement.create('server').add_attribute(SoapConstants::NAME, @item.server.name)
14
+ soap_request.add_node(node_server)
15
+ node_queue = SoapElement.create('queue')
16
+ node_server.add_node(node_queue)
17
+ node_action = SoapElement.create('action').add_attributes({ op: op, by: :id }).add_content(ids.join(','))
18
+ node_queue.add_node(node_action)
19
+
20
+ soap_request
21
+ end
22
+
23
+ def to_list
24
+ query = {
25
+ offset: @item.offset,
26
+ limit: @item.limit
27
+ }
28
+ query[:field] = @item.fields.map { |k, v| { name: k, match: { value: v } } } unless @item.fields.empty?
29
+ query.reject! { |_, v| v.nil? || v.empty? }
30
+
31
+ soap_request = SoapElement.admin(SoapAdminConstants::GET_MAIL_QUEUE_REQUEST)
32
+ node_server = SoapElement.create('server').add_attribute(SoapConstants::NAME, @item.server.name)
33
+ soap_request.add_node(node_server)
34
+ node_queue = SoapElement.create('queue').add_attributes({ name: @item.mta_queue.name, scan: 1, query: query })
35
+ node_server.add_node(node_queue)
36
+
37
+ soap_request
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ # class for initialize account
6
+ class MtaQueueJsnsInitializer < Base::BaseJsnsInitializer
7
+ class << self
8
+ def create(parent, json)
9
+ item = MtaQueue.new(parent)
10
+
11
+ update(item, json)
12
+ end
13
+
14
+ def update(item, json)
15
+ item.n = json[:n]
16
+ item.name = json[:name]
17
+
18
+ item
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -5,21 +5,17 @@ module Zm
5
5
  # class factory [MtaQueue]
6
6
  class MtaQueuesBuilder < Base::ObjectsBuilder
7
7
  def make
8
- records = []
9
- return records if json_items.nil?
8
+ return [] if json_items.nil?
10
9
 
11
- json_items.each do |entry|
12
- mta_queue = MtaQueue.new(@parent)
13
- mta_queue.init_from_json(entry)
14
- records << mta_queue
10
+ json_items.map do |entry|
11
+ MtaQueueJsnsInitializer.create(@parent, entry)
15
12
  end
16
- records
17
13
  end
18
14
 
19
15
  private
20
16
 
21
17
  def json_items
22
- @json_items ||= @json[:Body][json_key][:server].first[:queue]
18
+ @json_items ||= @json[:GetMailQueueInfoResponse][:server].first[:queue]
23
19
  end
24
20
  end
25
21
  end
@@ -4,60 +4,40 @@ module Zm
4
4
  module Client
5
5
  # Collection MtaQueues
6
6
  class MtaQueuesCollection < Base::ObjectsCollection
7
- METHODS_MISSING_LIST = %i[select each map length].to_set.freeze
8
-
9
7
  def initialize(parent)
10
8
  @parent = parent
11
9
  reset_query_params
12
10
  end
13
11
 
14
- def all
15
- @all ||= all!
16
- end
17
-
18
- def all!
19
- build_response
20
- end
21
-
22
12
  def defaults
23
13
  @all || defaults!
24
14
  end
25
15
 
26
16
  def defaults!
27
- # queues = []
28
17
  Zm::Client::MtaQueueName::ALL.each do |queue_name|
29
18
  queue = MtaQueue.new(@parent)
30
19
  queue.name = queue_name
31
20
  set_dynamic_queue_method(queue)
32
21
  @queues_h[queue_name] = queue
33
- # queues << queue
34
22
  end
35
- # @all = queues
23
+
36
24
  @all = @queues_h.values
37
25
  end
38
26
 
39
27
  def find(queue_name)
40
28
  raise ZmError, 'Unknown queue name' unless Zm::Client::MtaQueueName::ALL.include?(queue_name)
29
+
41
30
  all! if @queues_h.empty?
42
31
  @queues_h[queue_name]
43
32
  end
44
33
 
45
- def method_missing(method, *args, &block)
46
- if METHODS_MISSING_LIST.include?(method)
47
- build_response.send(method, *args, &block)
48
- else
49
- super
50
- end
51
- end
52
-
53
- def respond_to_missing?(method, *)
54
- METHODS_MISSING_LIST.include?(method) || super
55
- end
56
-
57
34
  private
58
35
 
59
36
  def make_query
60
- sac.get_mail_queue_info(@parent.name)
37
+ soap_request = SoapElement.admin(SoapAdminConstants::GET_MAIL_QUEUE_INFO_REQUEST)
38
+ node_server = SoapElement.create('server').add_attribute(SoapConstants::NAME, @parent.name)
39
+ soap_request.add_node(node_server)
40
+ sac.invoke(soap_request)
61
41
  end
62
42
 
63
43
  def build_response
@@ -72,7 +52,8 @@ module Zm
72
52
  end
73
53
 
74
54
  def set_dynamic_queue_method(queue)
75
- s_name = "@#{queue.name}"
55
+ s_name = Utils.arrow_name(queue.name)
56
+
76
57
  instance_variable_set(s_name, queue)
77
58
  self.class.attr_reader queue.name
78
59
  @dynamic_methods << s_name
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'zm/client/mta_queue/mta_queue'
4
+ require 'zm/client/mta_queue/mta_queue_jsns_initializer'
5
+ require 'zm/client/mta_queue/mta_queue_jsns_builder'
4
6
  require 'zm/client/mta_queue/mta_queues_builder'
5
7
  require 'zm/client/mta_queue/mta_queues_collection'
@@ -2,11 +2,9 @@
2
2
 
3
3
  module Zm
4
4
  module Client
5
- class MtaQueueItem < Base::AdminObject
6
- attr_reader :name, :n
7
-
8
- INSTANCE_VARIABLE_KEYS = %i[size fromdomain id reason time to addr filter host from todomain received]
9
- attr_reader *INSTANCE_VARIABLE_KEYS
5
+ class MtaQueueItem < Base::Object
6
+ attr_accessor :name, :n, :size, :fromdomain, :id, :reason, :time, :to, :addr, :filter, :host, :from, :todomain,
7
+ :received
10
8
 
11
9
  def mta_queue
12
10
  parent
@@ -16,36 +14,11 @@ module Zm
16
14
  mta_queue.parent
17
15
  end
18
16
 
19
- def to_h
20
- hashmap = Hash[INSTANCE_VARIABLE_KEYS.map { |key| [key, instance_variable_get(arrow_name(key))] }]
21
- hashmap.delete_if { |_, v| v.nil? }
22
- hashmap
23
- end
24
-
25
17
  def sent_at
26
18
  @sent_at ||= Time.at(@time / 1000)
27
- rescue StandardError => e
19
+ rescue StandardError
28
20
  nil
29
21
  end
30
-
31
- def hold!
32
- sac.mail_queue_action(server.name, mta_queue.name, Zm::Client::MtaQueueAction::HOLD, @id)
33
- end
34
-
35
- def init_from_json(json)
36
- @size = json[:size]
37
- @fromdomain = json[:fromdomain]
38
- @id = json[:id]
39
- @reason = json[:reason]
40
- @time = json[:time].to_i
41
- @to = json[:to] ? json[:to].split(',') : []
42
- @addr = json[:addr]
43
- @filter = json[:filter]
44
- @host = json[:host]
45
- @from = json[:from]
46
- @todomain = json[:todomain] ? json[:todomain].split(',') : []
47
- @received = json[:received]
48
- end
49
22
  end
50
23
  end
51
24
  end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ # class for initialize account
6
+ class MtaQueueItemJsnsInitializer < Base::BaseJsnsInitializer
7
+ class << self
8
+ def create(parent, json)
9
+ item = MtaQueueItem.new(parent)
10
+
11
+ update(item, json)
12
+ end
13
+
14
+ def update(item, json)
15
+ item.size = json[:size]
16
+ item.fromdomain = json[:fromdomain]
17
+ item.id = json[:id]
18
+ item.reason = json[:reason]
19
+ item.time = json[:time].to_i
20
+ item.to = json[:to] ? json[:to].split(',') : []
21
+ item.addr = json[:addr]
22
+ item.filter = json[:filter]
23
+ item.host = json[:host]
24
+ item.from = json[:from]
25
+ item.todomain = json[:todomain] ? json[:todomain].split(',') : []
26
+ item.received = json[:received]
27
+
28
+ item
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -5,22 +5,17 @@ module Zm
5
5
  # class factory [MtaQueueItem]
6
6
  class MtaQueueItemsBuilder < Base::ObjectsBuilder
7
7
  def make
8
- records = []
9
- return records if json_items.nil?
8
+ return [] if json_items.nil?
10
9
 
11
- json_items.each do |entry|
12
- mta_queue = MtaQueueItem.new(@parent)
13
- mta_queue.init_from_json(entry)
14
- records << mta_queue
10
+ json_items.map do |entry|
11
+ MtaQueueItemJsnsInitializer.create(@parent, entry)
15
12
  end
16
- records
17
13
  end
18
14
 
19
15
  private
20
16
 
21
17
  def json_items
22
- # puts @json
23
- @json_items ||= @json[:Body][json_key][:server].first[:queue].first[:qi]
18
+ @json_items ||= @json[:GetMailQueueResponse][:server].first[:queue].first[:qi]
24
19
  end
25
20
  end
26
21
  end