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
@@ -4,7 +4,6 @@ module Zm
4
4
  module Client
5
5
  # collection of folders
6
6
  class FoldersCollection < Base::AccountObjectsCollection
7
-
8
7
  attr_reader :root
9
8
 
10
9
  attr_accessor :view, :tr, :visible, :needGranteeName, :depth
@@ -25,6 +24,10 @@ module Zm
25
24
  folder
26
25
  end
27
26
 
27
+ def root
28
+ find(1)
29
+ end
30
+
28
31
  def where(view: nil, tr: nil)
29
32
  @view = view
30
33
  @tr = tr
@@ -78,7 +81,7 @@ module Zm
78
81
  end
79
82
 
80
83
  def make_query
81
- @parent.sacc.get_folder(@parent.token, jsns_builder.to_jsns)
84
+ @parent.sacc.invoke(jsns_builder.to_jsns)
82
85
  end
83
86
 
84
87
  def reset_query_params
@@ -9,13 +9,15 @@ module Zm
9
9
  end
10
10
 
11
11
  def to_jsns
12
- {
12
+ attrs = {
13
13
  visible: @item.visible,
14
14
  needGranteeName: @item.needGranteeName,
15
15
  view: @item.view,
16
16
  depth: @item.depth,
17
17
  tr: @item.tr
18
18
  }.delete_if { |_, v| v.nil? }
19
+
20
+ SoapElement.mail(SoapMailConstants::GET_FOLDER_REQUEST).add_attributes(attrs)
19
21
  end
20
22
  end
21
23
  end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DocumentFolder
2
- UUID_REGEX = %r{[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}:[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}}
4
+ UUID_REGEX = /[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}/.freeze
3
5
 
4
6
  def upload(file_path)
5
7
  uploader = Zm::Client::Upload.new(@parent, Zm::Client::RestAccountConnector.new)
@@ -7,11 +9,13 @@ module DocumentFolder
7
9
 
8
10
  uuid = str.scan(UUID_REGEX).first
9
11
 
10
- raise Zm::Client::RestError, "failed to extract uuid" if uuid.nil?
12
+ raise Zm::Client::RestError, 'failed to extract uuid' if uuid.nil?
13
+
14
+ jsns = { doc: { l: l, pload: { id: uuid } } }
11
15
 
12
- upload_options = { upload: { id: uuid } }
13
- rep = @parent.sacc.save_document(@parent.token, id, upload_options)
16
+ soap_request = SoapElement.mail(SoapMailConstants::SAVE_DOCUMENT_REQUEST).add_attributes(jsns)
17
+ rep = @parent.sacc.invoke(soap_request)
14
18
 
15
- Zm::Client::Document.new(@parent, rep[:Body][:SaveDocumentResponse][:doc].first)
19
+ DocumentJsnsInitializer.create(@parent, rep[:SaveDocumentResponse][:doc].first)
16
20
  end
17
- end
21
+ end
@@ -11,4 +11,4 @@ require 'zm/client/folder/folder_retention_policy'
11
11
  require 'zm/client/folder/folder_retention_policies_collection'
12
12
  require 'zm/client/folder/folders_builder'
13
13
  require 'zm/client/folder/folders_collection'
14
- require 'zm/client/folder/mod_document_folder'
14
+ require 'zm/client/folder/mod_document_folder'
@@ -6,9 +6,16 @@ module Zm
6
6
  class IdentitiesBuilder < Base::ObjectsBuilder
7
7
  def initialize(parent, json)
8
8
  super(parent, json)
9
- @child_class = Identity
10
9
  @json_item_key = :identity
11
10
  end
11
+
12
+ def make
13
+ return [] if json_items.nil?
14
+
15
+ json_items.map do |entry|
16
+ IdentityJsnsInitializer.create(@parent, entry)
17
+ end
18
+ end
12
19
  end
13
20
  end
14
21
  end
@@ -13,7 +13,8 @@ module Zm
13
13
  private
14
14
 
15
15
  def make_query
16
- @parent.sacc.get_all_identities(@parent.token)
16
+ soap_request = SoapElement.account(SoapAccountConstants::GET_IDENTITIES_REQUEST)
17
+ @parent.sacc.invoke(soap_request)
17
18
  end
18
19
  end
19
20
  end
@@ -3,63 +3,45 @@
3
3
  module Zm
4
4
  module Client
5
5
  # class account identity
6
- class Identity < Base::AccountObject
7
- INSTANCE_VARIABLE_KEYS = %i[id name zimbraPrefIdentityName zimbraPrefFromDisplay zimbraPrefFromAddress
8
- zimbraPrefFromAddressType zimbraPrefReplyToEnabled zimbraPrefReplyToDisplay zimbraPrefReplyToAddress
9
- zimbraPrefDefaultSignatureId zimbraPrefForwardReplySignatureId zimbraPrefWhenSentToEnabled
10
- zimbraPrefWhenInFoldersEnabled zimbraPrefWhenSentToAddresses].freeze
6
+ class Identity < Base::Object
7
+ attr_accessor :id, :name, :zimbraPrefIdentityName, :zimbraPrefFromDisplay, :zimbraPrefFromAddress,
8
+ :zimbraPrefFromAddressType, :zimbraPrefReplyToEnabled, :zimbraPrefReplyToDisplay,
9
+ :zimbraPrefReplyToAddress, :zimbraPrefDefaultSignatureId, :zimbraPrefForwardReplySignatureId,
10
+ :zimbraPrefWhenSentToEnabled, :zimbraPrefWhenInFoldersEnabled, :zimbraPrefWhenSentToAddresses
11
11
 
12
- ATTRS_WRITE = %i[zimbraPrefIdentityName zimbraPrefFromDisplay zimbraPrefFromAddress
13
- zimbraPrefFromAddressType zimbraPrefReplyToEnabled zimbraPrefReplyToDisplay zimbraPrefReplyToAddress
14
- zimbraPrefDefaultSignatureId zimbraPrefForwardReplySignatureId zimbraPrefWhenSentToEnabled
15
- zimbraPrefWhenInFoldersEnabled zimbraPrefWhenSentToAddresses].freeze
16
-
17
- attr_accessor(*INSTANCE_VARIABLE_KEYS)
18
-
19
- def all_instance_variable_keys
20
- INSTANCE_VARIABLE_KEYS
21
- end
22
-
23
- def init_from_json(json)
24
- @id = json[:id]
25
- @name = json[:name]
26
- all_instance_variable_keys.each do |key|
27
- value = json[:_attrs][key]
28
- next if value.nil?
29
-
30
- instance_variable_set(arrow_name(key), value)
31
- end
12
+ def create!
13
+ rep = @parent.sacc.invoke(jsns_builder.to_jsns)
14
+ IdentityJsnsInitializer.update(self, rep[:CreateIdentityResponse][:identity].first)
15
+ @id
32
16
  end
33
17
 
34
- def create!
35
- rep = @parent.sacc.create_identity(@parent.token, name, Hash[instance_variables_array(ATTRS_WRITE)])
36
- init_from_json(rep[:Body][:CreateIdentityResponse][:identity].first)
18
+ def modify!
19
+ @parent.sacc.invoke(jsns_builder.to_update)
20
+ true
37
21
  end
38
22
 
39
23
  def update!(hash)
40
- @parent.sacc.modify_identity(@parent.token, id, hash)
24
+ return false if hash.delete_if { |k, v| v.nil? || !respond_to?(k) }.empty?
41
25
 
42
- hash.each do |k, v|
43
- arrow_attr_sym = "@#{k}".to_sym
26
+ do_update!(hash)
44
27
 
45
- if v.respond_to?(:empty?) && v.empty?
46
- remove_instance_variable(arrow_attr_sym) if instance_variable_get(arrow_attr_sym)
47
- else
48
- instance_variable_set(arrow_attr_sym, v)
49
- end
28
+ hash.each do |key, value|
29
+ update_attribute(key, value)
50
30
  end
31
+
32
+ true
51
33
  end
52
34
 
53
- def modify!
54
- @parent.sacc.modify_identity(@parent.token, id, Hash[instance_variables_array(ATTRS_WRITE)])
35
+ def rename!(new_name)
36
+ raise NotImplementedError
55
37
  end
56
38
 
57
39
  def delete!
58
- @parent.sacc.delete_identity(@parent.token, @id)
59
- super
60
- end
40
+ return if @id.nil?
61
41
 
62
- def rename!(new_name); end
42
+ @parent.sacc.invoke(jsns_builder.to_delete)
43
+ @id = nil
44
+ end
63
45
 
64
46
  def clone
65
47
  new_identity = super do |obj|
@@ -70,6 +52,16 @@ module Zm
70
52
  yield(new_identity) if block_given?
71
53
  new_identity
72
54
  end
55
+
56
+ private
57
+
58
+ def do_update!(hash)
59
+ @parent.sacc.invoke(jsns_builder.to_patch(hash))
60
+ end
61
+
62
+ def jsns_builder
63
+ @jsns_builder ||= IdentityJsnsBuilder.new(self)
64
+ end
73
65
  end
74
66
  end
75
67
  end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ # class for account identity jsns builder
6
+ class IdentityJsnsBuilder
7
+ def initialize(item)
8
+ @item = item
9
+ end
10
+
11
+ def to_jsns
12
+ soap_request = SoapElement.account(SoapAccountConstants::CREATE_IDENTITY_REQUEST)
13
+ node_identity = SoapElement.create(SoapConstants::IDENTITY).add_attributes({ name: @item.name, _attrs: attrs })
14
+ soap_request.add_node(node_identity)
15
+ soap_request
16
+ end
17
+
18
+ def to_update
19
+ soap_request = SoapElement.account(SoapAccountConstants::MODIFY_IDENTITY_REQUEST)
20
+ node_identity = SoapElement.create(SoapConstants::IDENTITY).add_attributes({ id: @item.id, _attrs: attrs })
21
+ soap_request.add_node(node_identity)
22
+ soap_request
23
+ end
24
+
25
+ def to_patch(hash)
26
+ soap_request = SoapElement.account(SoapAccountConstants::MODIFY_IDENTITY_REQUEST)
27
+ node_identity = SoapElement.create(SoapConstants::IDENTITY).add_attributes({ id: @item.id, _attrs: hash })
28
+ soap_request.add_node(node_identity)
29
+ soap_request
30
+ end
31
+
32
+ def to_delete
33
+ soap_request = SoapElement.account(SoapAccountConstants::DELETE_IDENTITY_REQUEST)
34
+ node_identity = SoapElement.create(SoapConstants::IDENTITY).add_attributes({ id: @item.id })
35
+ soap_request.add_node(node_identity)
36
+ soap_request
37
+ end
38
+
39
+ def attrs
40
+ {
41
+ zimbraPrefIdentityName: @item.zimbraPrefIdentityName,
42
+ zimbraPrefFromDisplay: @item.zimbraPrefFromDisplay,
43
+ zimbraPrefFromAddress: @item.zimbraPrefFromAddress,
44
+ zimbraPrefFromAddressType: @item.zimbraPrefFromAddressType,
45
+ zimbraPrefReplyToEnabled: @item.zimbraPrefReplyToEnabled,
46
+ zimbraPrefReplyToDisplay: @item.zimbraPrefReplyToDisplay,
47
+ zimbraPrefReplyToAddress: @item.zimbraPrefReplyToAddress,
48
+ zimbraPrefDefaultSignatureId: @item.zimbraPrefDefaultSignatureId,
49
+ zimbraPrefForwardReplySignatureId: @item.zimbraPrefForwardReplySignatureId,
50
+ zimbraPrefWhenSentToEnabled: @item.zimbraPrefWhenSentToEnabled,
51
+ zimbraPrefWhenInFoldersEnabled: @item.zimbraPrefWhenInFoldersEnabled,
52
+ zimbraPrefWhenSentToAddresses: @item.zimbraPrefWhenSentToAddresses
53
+ }
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ # class for initialize account identity
6
+ class IdentityJsnsInitializer
7
+ class << self
8
+ def create(parent, json)
9
+ item = Identity.new(parent)
10
+ update(item, json)
11
+ end
12
+
13
+ def update(item, json)
14
+ item.id = json[:id]
15
+ item.name = json[:name]
16
+
17
+ return item if json[:_attrs].nil? || json[:_attrs].empty?
18
+
19
+ json[:_attrs].each do |k, v|
20
+ m = Utils.equals_name(k)
21
+ item.send(m, v) if item.respond_to?(m)
22
+ end
23
+
24
+ item
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'zm/client/identity/identity'
4
+ require 'zm/client/identity/identity_jsns_builder'
5
+ require 'zm/client/identity/identity_jsns_initializer'
4
6
  require 'zm/client/identity/identities_builder'
5
- require 'zm/client/identity/identities_collection'
7
+ require 'zm/client/identity/identities_collection'
@@ -2,28 +2,15 @@
2
2
 
3
3
  module Zm
4
4
  module Client
5
- # objectClass: zimbraDomain
6
- class License < Base::AdminObject
7
-
8
- INSTANCE_VARIABLE_KEYS = %i[
9
- AccountsLimit ArchivingAccountsLimit AttachmentConversionEnabled AttachmentIndexingAccountsLimit BackupEnabled
10
- CrossMailboxSearchEnabled EwsAccountsLimit HierarchicalStorageManagementEnabled ISyncAccountsLimit InstallType
11
- IssuedOn IssuedToEmail IssuedToName LicenseId MAPIConnectorAccountsLimit MobileSyncAccountsLimit
12
- MobileSyncEnabled ResellerName SMIMEAccountsLimit TouchClientsAccountsLimit TwoFactorAuthAccountsLimit
13
- ValidFrom ValidUntil VoiceAccountsLimit ZSSAccountsLimit ZTalkAccountsLimit
14
- ]
15
-
16
- attr_accessor *INSTANCE_VARIABLE_KEYS
17
-
18
- def init_from_json(json)
19
- json[:attr].each do |a|
20
- instance_variable_set(arrow_name(a[:name]), a[:_content])
21
- end
22
- end
23
-
24
- def to_s
25
- INSTANCE_VARIABLE_KEYS.map { |v| [v, instance_variable_get(arrow_name(v))].join(' : ') }.join("\n")
26
- end
5
+ # objectClass: License
6
+ class License < Base::Object
7
+ attr_accessor :AccountsLimit, :ArchivingAccountsLimit, :AttachmentConversionEnabled,
8
+ :AttachmentIndexingAccountsLimit, :BackupEnabled, :CrossMailboxSearchEnabled, :EwsAccountsLimit,
9
+ :HierarchicalStorageManagementEnabled, :ISyncAccountsLimit, :InstallType, :IssuedOn,
10
+ :IssuedToEmail, :IssuedToName, :LicenseId, :MAPIConnectorAccountsLimit, :MobileSyncAccountsLimit,
11
+ :MobileSyncEnabled, :ResellerName, :SMIMEAccountsLimit, :TouchClientsAccountsLimit,
12
+ :TwoFactorAuthAccountsLimit, :ValidFrom, :ValidUntil, :VoiceAccountsLimit, :ZSSAccountsLimit,
13
+ :ZTalkAccountsLimit
27
14
  end
28
15
  end
29
16
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ # class for initialize license
6
+ class LicenseJsnsInitializer
7
+ class << self
8
+ def create(parent, json)
9
+ item = License.new(parent)
10
+
11
+ json[:attr].each do |a|
12
+ item.instance_variable_set(Utils.arrow_name(a[:name]), a[:_content])
13
+ end
14
+
15
+ item
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -9,20 +9,10 @@ module Zm
9
9
  end
10
10
 
11
11
  def find
12
- req = sac.get_license
13
- entry = req[:Body][:GetLicenseResponse][:license].first
14
- license = License.new(@parent)
15
- license.init_from_json(entry)
16
- license
12
+ soap_request = SoapElement.admin(SoapAdminConstants::GET_LICENSE_REQUEST)
13
+ entry = sac.invoke(soap_request)[:GetLicenseResponse][:license].first
14
+ LicenseJsnsInitializer.create(@parent, entry)
17
15
  end
18
-
19
- private
20
-
21
- def soap_admin_connector
22
- @parent.soap_admin_connector
23
- end
24
-
25
- alias sac soap_admin_connector
26
16
  end
27
17
  end
28
18
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'zm/client/license/license'
4
- require 'zm/client/license/licenses_collection'
4
+ require 'zm/client/license/license_jsns_initializer'
5
+ require 'zm/client/license/licenses_collection'
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ class Message
6
+ # collection attachments
7
+ class AttachmentsCollection
8
+ include MissingMethodStaticCollection
9
+
10
+ attr_reader :all
11
+
12
+ def initialize
13
+ @all = []
14
+ end
15
+
16
+ def add(attachment)
17
+ return unless attachment.is_a?(Attachment)
18
+
19
+ @all.push(attachment)
20
+ end
21
+ end
22
+
23
+ # class attachment for email
24
+ class Attachment
25
+ attr_accessor :aid, :part, :mid, :ct, :s, :filename, :ci, :cd
26
+
27
+ def initialize(parent)
28
+ @parent = parent
29
+ yield(self) if block_given?
30
+ end
31
+
32
+ def download(dest_file_path)
33
+ h = {
34
+ id: @parent.id,
35
+ part: part,
36
+ auth: 'qp',
37
+ zauthtoken: account.token,
38
+ disp: 'a'
39
+ }
40
+
41
+ url = account.home_url
42
+
43
+ url << '?' << Utils.format_url_params(h)
44
+
45
+ uploader = Upload.new(@parent, RestAccountConnector.new)
46
+ uploader.download_file_with_url(url, dest_file_path)
47
+ end
48
+
49
+ def account
50
+ @parent.parent
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end