zm-ruby-client 0.18.5 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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 -308
  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 +68 -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 +15 -28
  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 +30 -21
  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 +39 -55
  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 -20
  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 +1 -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,37 +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_accessor :owner, :rev, :reminder, :ms, :deletable, :rid, :uuid, :url, :f, :broken, :luuid, :ruuid, :activesyncdisabled, :absFolderPath, :zid, :id, :webOfflineSyncDays, :view, :zid, :rid
14
+ # define_changed_attributes :name, :color, :rgb, :l
16
15
 
17
- define_changed_attributes :name, :color, :rgb, :l
18
-
19
- def all_instance_variable_keys
20
- INSTANCE_VARIABLE_KEYS
16
+ def initialize(parent)
17
+ @l = FolderDefault::ROOT[:id]
18
+ super(parent)
21
19
  end
22
20
 
23
- alias parent_id l
24
-
25
21
  def create!
26
- rep = @parent.sacc.create_mountpoint(@parent.token, jsns_builder.to_jsns)
27
- json = rep[:Body][:CreateMountpointResponse][:link].first
22
+ rep = @parent.sacc.invoke(jsns_builder.to_jsns)
23
+ json = rep[:CreateMountpointResponse][:link].first
24
+
28
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
29
35
  end
30
36
 
31
- def update!(options)
32
- # 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
33
49
  end
34
50
 
35
- def fb
36
- 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
37
60
  end
38
61
 
39
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