zm-ruby-client 3.0.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +96 -0
  3. data/README.md +128 -27
  4. data/VERSION +1 -1
  5. data/lib/zm/client/account/account.rb +12 -19
  6. data/lib/zm/client/account/account_aliases_collection.rb +6 -4
  7. data/lib/zm/client/account/account_dls_membership_collection.rb +4 -3
  8. data/lib/zm/client/account/account_dls_owner_collection.rb +3 -2
  9. data/lib/zm/client/account/account_jsns_builder.rb +10 -10
  10. data/lib/zm/client/account/accounts_collection.rb +27 -16
  11. data/lib/zm/client/ace/ace.rb +3 -6
  12. data/lib/zm/client/ace/ace_jsns_builder.rb +6 -6
  13. data/lib/zm/client/appointment/appointment.rb +32 -14
  14. data/lib/zm/client/appointment/appointment_jsns_builder.rb +5 -5
  15. data/lib/zm/client/appointment/appointment_jsns_initializer.rb +6 -1
  16. data/lib/zm/client/appointment/appointments_collection.rb +12 -9
  17. data/lib/zm/client/backup/backup.rb +5 -2
  18. data/lib/zm/client/backup/backups_collection.rb +3 -2
  19. data/lib/zm/client/base/account_objects_collection.rb +1 -0
  20. data/lib/zm/client/base/account_search_objects_collection.rb +6 -6
  21. data/lib/zm/client/base/admin_objects_collection.rb +60 -7
  22. data/lib/zm/client/base/base_account_jsns_builder.rb +89 -87
  23. data/lib/zm/client/base/base_jsns_builder.rb +3 -3
  24. data/lib/zm/client/base/base_jsns_initializer.rb +20 -15
  25. data/lib/zm/client/base/mailbox_infos_collection.rb +92 -90
  26. data/lib/zm/client/base/mailbox_object.rb +49 -160
  27. data/lib/zm/client/base/mailbox_prefs_collection.rb +54 -52
  28. data/lib/zm/client/base/object.rb +19 -2
  29. data/lib/zm/client/base/objects_collection.rb +10 -10
  30. data/lib/zm/client/base/zimbra_attribute.rb +28 -42
  31. data/lib/zm/client/base/zimbra_attributes_collection.rb +38 -24
  32. data/lib/zm/client/{cluster/batch_request.rb → batch_request.rb} +1 -1
  33. data/lib/zm/client/cluster/cluster.rb +24 -61
  34. data/lib/zm/client/cluster/cluster_config.rb +35 -15
  35. data/lib/zm/client/contact/contact.rb +15 -13
  36. data/lib/zm/client/contact/contact_jsns_builder.rb +9 -6
  37. data/lib/zm/client/contact/contact_jsns_initializer.rb +2 -2
  38. data/lib/zm/client/contact/contact_member.rb +3 -3
  39. data/lib/zm/client/contact/contact_members_collection.rb +3 -3
  40. data/lib/zm/client/contact/contacts_builder.rb +1 -1
  41. data/lib/zm/client/contact/contacts_collection.rb +2 -2
  42. data/lib/zm/client/contact/group_contact_jsns_builder.rb +18 -14
  43. data/lib/zm/client/contact/mod_group_contact.rb +12 -8
  44. data/lib/zm/client/cos/cos.rb +15 -31
  45. data/lib/zm/client/cos/cos_jsns_builder.rb +21 -21
  46. data/lib/zm/client/cos/coses_collection.rb +11 -6
  47. data/lib/zm/client/datasource/datasource.rb +3 -9
  48. data/lib/zm/client/datasource/datasource_jsns_builder.rb +4 -4
  49. data/lib/zm/client/datasource/datasources_builder.rb +1 -1
  50. data/lib/zm/client/datasource/datasources_collection.rb +2 -2
  51. data/lib/zm/client/deprecated_constants.rb +36 -0
  52. data/lib/zm/client/distributionlist/distributionlist.rb +15 -47
  53. data/lib/zm/client/distributionlist/distributionlist_aces_collection.rb +4 -4
  54. data/lib/zm/client/distributionlist/distributionlist_aliases_collection.rb +7 -5
  55. data/lib/zm/client/distributionlist/distributionlist_jsns_builder.rb +29 -41
  56. data/lib/zm/client/distributionlist/distributionlist_jsns_initializer.rb +14 -3
  57. data/lib/zm/client/distributionlist/distributionlist_members_collection.rb +14 -10
  58. data/lib/zm/client/distributionlist/distributionlist_owners_collection.rb +13 -13
  59. data/lib/zm/client/distributionlist/distributionlists_collection.rb +15 -7
  60. data/lib/zm/client/distributionlist/dls_membership_collection.rb +8 -6
  61. data/lib/zm/client/document/document.rb +5 -11
  62. data/lib/zm/client/document/document_jsns_builder.rb +2 -2
  63. data/lib/zm/client/document/documents_collection.rb +4 -4
  64. data/lib/zm/client/domain/domain.rb +8 -25
  65. data/lib/zm/client/domain/domain_jsns_builder.rb +13 -13
  66. data/lib/zm/client/domain/domains_collection.rb +13 -6
  67. data/lib/zm/client/filter_rules/filter_rules_collection.rb +1 -1
  68. data/lib/zm/client/filter_rules/outgoing_filter_rules_collection.rb +1 -1
  69. data/lib/zm/client/folder/folder.rb +34 -21
  70. data/lib/zm/client/folder/folder_default.rb +39 -0
  71. data/lib/zm/client/folder/folder_grant_jsns_builder.rb +3 -3
  72. data/lib/zm/client/folder/folder_grants_collection.rb +1 -1
  73. data/lib/zm/client/folder/folder_jsns_builder.rb +12 -12
  74. data/lib/zm/client/folder/folder_jsns_initializer.rb +1 -1
  75. data/lib/zm/client/folder/folder_retention_policies_collection.rb +6 -2
  76. data/lib/zm/client/folder/folder_view.rb +15 -0
  77. data/lib/zm/client/folder/folders_jsns_builder.rb +1 -1
  78. data/lib/zm/client/folder/mod_document_folder.rb +16 -12
  79. data/lib/zm/client/identity/identities_collection.rb +1 -1
  80. data/lib/zm/client/identity/identity.rb +3 -9
  81. data/lib/zm/client/identity/identity_jsns_builder.rb +8 -8
  82. data/lib/zm/client/{base/ldap_filter.rb → ldap_filter.rb} +1 -1
  83. data/lib/zm/client/license/licenses_collection.rb +1 -1
  84. data/lib/zm/client/mailbox/mailbox_item_concern.rb +0 -2
  85. data/lib/zm/client/message/message.rb +14 -19
  86. data/lib/zm/client/message/message_attachments_collection.rb +39 -0
  87. data/lib/zm/client/message/message_flags_collection.rb +130 -0
  88. data/lib/zm/client/message/message_jsns_builder.rb +4 -8
  89. data/lib/zm/client/message/message_jsns_initializer.rb +4 -4
  90. data/lib/zm/client/message/message_recipients.rb +19 -43
  91. data/lib/zm/client/message/messages_collection.rb +20 -4
  92. data/lib/zm/client/mountpoint/{mountpoint.rb → mount_point.rb} +4 -10
  93. data/lib/zm/client/mountpoint/{mountpoint_jsns_builder.rb → mount_point_jsns_builder.rb} +3 -3
  94. data/lib/zm/client/mountpoint/{mountpoint_jsns_initializer.rb → mount_point_jsns_initializer.rb} +1 -1
  95. data/lib/zm/client/mountpoint/{mountpoints_builder.rb → mount_points_builder.rb} +1 -1
  96. data/lib/zm/client/mta_queue/mta_queue.rb +4 -16
  97. data/lib/zm/client/mta_queue/mta_queue_action.rb +12 -0
  98. data/lib/zm/client/mta_queue/mta_queue_jsns_builder.rb +7 -7
  99. data/lib/zm/client/mta_queue/mta_queue_name.rb +14 -0
  100. data/lib/zm/client/mta_queue/mta_queues_collection.rb +4 -3
  101. data/lib/zm/client/mta_queue_item/mta_queue_items_collection.rb +1 -0
  102. data/lib/zm/client/recipient.rb +21 -0
  103. data/lib/zm/client/{common/recipients.rb → recipients.rb} +0 -16
  104. data/lib/zm/client/resource/resource.rb +3 -7
  105. data/lib/zm/client/resource/resource_jsns_builder.rb +13 -13
  106. data/lib/zm/client/resource/resources_collection.rb +20 -7
  107. data/lib/zm/client/search_folder/search_folder.rb +4 -11
  108. data/lib/zm/client/search_folder/search_folder_jsns_builder.rb +6 -6
  109. data/lib/zm/client/search_folder/search_folders_collection.rb +1 -1
  110. data/lib/zm/client/server/server.rb +16 -22
  111. data/lib/zm/client/server/server_services.rb +26 -0
  112. data/lib/zm/client/server/servers_collection.rb +6 -6
  113. data/lib/zm/client/share/share.rb +2 -5
  114. data/lib/zm/client/share/shares_builder.rb +1 -1
  115. data/lib/zm/client/share/shares_collection.rb +5 -4
  116. data/lib/zm/client/signature/signature.rb +7 -13
  117. data/lib/zm/client/signature/signature_jsns_builder.rb +13 -13
  118. data/lib/zm/client/signature/signature_jsns_initializer.rb +2 -2
  119. data/lib/zm/client/signature/signatures_collection.rb +1 -1
  120. data/lib/zm/client/tag/account_object_tags_collection.rb +45 -47
  121. data/lib/zm/client/tag/tag.rb +3 -9
  122. data/lib/zm/client/tag/tag_jsns_builder.rb +3 -3
  123. data/lib/zm/client/tag/tags_builder.rb +1 -1
  124. data/lib/zm/client/tag/tags_collection.rb +2 -2
  125. data/lib/zm/client/task/task.rb +2 -2
  126. data/lib/zm/client/task/tasks_collection.rb +2 -2
  127. data/lib/zm/client/token.rb +4 -1
  128. data/lib/zm/client/upload.rb +179 -1
  129. data/lib/zm/client/{common/utils.rb → utils.rb} +6 -3
  130. data/lib/zm/client/zm_logger.rb +1 -1
  131. data/lib/zm/client.rb +227 -10
  132. data/lib/zm/connector/network_error_handler.rb +18 -0
  133. data/lib/zm/{client/connector → connector}/rest_connector.rb +46 -40
  134. data/lib/zm/{client/connector/soap_account.rb → connector/soap_account_connector.rb} +15 -17
  135. data/lib/zm/{client/connector/soap_admin.rb → connector/soap_admin_connector.rb} +3 -5
  136. data/lib/zm/connector/soap_base_connector.rb +115 -0
  137. data/lib/zm/connector.rb +13 -0
  138. data/lib/zm/error/auth_error.rb +8 -0
  139. data/lib/zm/error/connection_error.rb +8 -0
  140. data/lib/zm/error/rest_error.rb +8 -0
  141. data/lib/zm/{client/connector → error}/soap_error.rb +1 -10
  142. data/lib/zm/error/zm_error.rb +8 -0
  143. data/lib/zm/error.rb +11 -0
  144. data/lib/zm/relationship/has_many.rb +22 -0
  145. data/lib/zm/relationship/jsns_builder.rb +21 -0
  146. data/lib/zm/relationship/relationship.rb +113 -0
  147. data/lib/zm/relationship/schema.rb +32 -0
  148. data/lib/zm/relationship.rb +5 -0
  149. data/lib/zm/{client/soap_request → soap_request}/request_methods_admin.rb +11 -5
  150. data/lib/zm/{client/soap_request → soap_request}/request_methods_mailbox.rb +1 -1
  151. data/lib/zm/{client/soap_request/account_soap_constants.rb → soap_request/soap_account_constants.rb} +1 -1
  152. data/lib/zm/{client/soap_request/admin_soap_constants.rb → soap_request/soap_admin_constants.rb} +1 -1
  153. data/lib/zm/{client/soap_request → soap_request}/soap_constants.rb +1 -1
  154. data/lib/zm/{client/soap_request → soap_request}/soap_context.rb +13 -5
  155. data/lib/zm/{client/soap_request → soap_request}/soap_element.rb +1 -1
  156. data/lib/zm/{client/soap_request/mail_soap_constants.rb → soap_request/soap_mail_constants.rb} +1 -1
  157. data/lib/zm/soap_request.rb +14 -0
  158. data/lib/zm/support/cache/entry.rb +3 -3
  159. data/lib/zm/support/cache/file_store.rb +4 -6
  160. data/lib/zm/support/cache/null_store.rb +2 -4
  161. data/lib/zm/support/cache/store.rb +17 -9
  162. data/lib/zm/support/cache.rb +13 -8
  163. data/lib/zm/support.rb +7 -0
  164. data/lib/zm/{modules → utils}/belongs_to_folder.rb +1 -1
  165. data/lib/zm/{modules → utils}/belongs_to_tag.rb +2 -2
  166. data/lib/zm/utils/content_part.rb +9 -0
  167. data/lib/zm/utils/content_type.rb +11 -0
  168. data/lib/zm/{modules → utils}/has_soap_admin_connector.rb +1 -1
  169. data/lib/zm/utils/inspector.rb +26 -0
  170. data/lib/zm/utils/log_filter.rb +30 -0
  171. data/lib/zm/utils/missing_method_static_collection.rb +17 -0
  172. data/lib/zm/utils/regex.rb +11 -0
  173. data/lib/zm/utils/search_utils.rb +13 -0
  174. data/lib/zm/utils.rb +16 -0
  175. data/lib/zm-ruby-client.rb +12 -0
  176. data/sig/zm/client/admin_objects.rbs +261 -0
  177. data/sig/zm/client/base.rbs +191 -0
  178. data/sig/zm/client/cluster.rbs +152 -0
  179. data/sig/zm/client/mailbox.rbs +766 -0
  180. data/sig/zm/error.rbs +23 -0
  181. metadata +99 -91
  182. data/.gitignore +0 -59
  183. data/.rubocop.yml +0 -6
  184. data/.ruby-version +0 -1
  185. data/Gemfile +0 -11
  186. data/SECURITY.md +0 -21
  187. data/bin/console +0 -11
  188. data/lib/zm/client/account.rb +0 -9
  189. data/lib/zm/client/ace.rb +0 -7
  190. data/lib/zm/client/appointment.rb +0 -7
  191. data/lib/zm/client/backup.rb +0 -6
  192. data/lib/zm/client/base.rb +0 -21
  193. data/lib/zm/client/cluster.rb +0 -4
  194. data/lib/zm/client/common/message.rb +0 -10
  195. data/lib/zm/client/common.rb +0 -5
  196. data/lib/zm/client/connector/soap_base.rb +0 -104
  197. data/lib/zm/client/constant.rb +0 -229
  198. data/lib/zm/client/contact.rb +0 -11
  199. data/lib/zm/client/cos.rb +0 -10
  200. data/lib/zm/client/datasource.rb +0 -7
  201. data/lib/zm/client/distributionlist.rb +0 -8
  202. data/lib/zm/client/document.rb +0 -7
  203. data/lib/zm/client/domain.rb +0 -10
  204. data/lib/zm/client/filter_rule.rb +0 -7
  205. data/lib/zm/client/folder.rb +0 -14
  206. data/lib/zm/client/identity.rb +0 -7
  207. data/lib/zm/client/license.rb +0 -5
  208. data/lib/zm/client/message/attachments_collection.rb +0 -55
  209. data/lib/zm/client/message/message_flags.rb +0 -115
  210. data/lib/zm/client/message.rb +0 -10
  211. data/lib/zm/client/mountpoint.rb +0 -7
  212. data/lib/zm/client/mta_queue.rb +0 -7
  213. data/lib/zm/client/mta_queue_item.rb +0 -6
  214. data/lib/zm/client/resource.rb +0 -7
  215. data/lib/zm/client/search_folder.rb +0 -7
  216. data/lib/zm/client/server.rb +0 -7
  217. data/lib/zm/client/share.rb +0 -7
  218. data/lib/zm/client/signature.rb +0 -7
  219. data/lib/zm/client/soap_request.rb +0 -11
  220. data/lib/zm/client/tag.rb +0 -8
  221. data/lib/zm/client/task.rb +0 -6
  222. data/lib/zm/client/upload/upload.rb +0 -160
  223. data/lib/zm/modules/base.rb +0 -9
  224. data/lib/zm/modules/common/zimbra-attrs.json +0 -58
  225. data/lib/zm/modules/inspector.rb +0 -24
  226. data/lib/zm/modules/missing_method_static_collection.rb +0 -13
  227. data/lib/zm/modules/zm_model.rb +0 -43
  228. data/zm-ruby-client.gemspec +0 -27
  229. /data/lib/zm/client/mountpoint/{mountpoints_collection.rb → mount_points_collection.rb} +0 -0
@@ -15,13 +15,13 @@ module Zm
15
15
  }
16
16
  req.compact!
17
17
 
18
- soap_request = SoapElement.admin(SoapAdminConstants::CREATE_CALENDAR_RESOURCE_REQUEST)
18
+ soap_request = SoapRequest::SoapElement.admin(Zm::SoapRequest::SoapAdminConstants::CREATE_CALENDAR_RESOURCE_REQUEST)
19
19
  .add_attributes(req)
20
20
 
21
21
  attrs_only_set_h.each do |key, values|
22
22
  values.each do |value|
23
- node_attr = SoapElement.create(SoapConstants::A)
24
- .add_attribute(SoapConstants::N, key)
23
+ node_attr = SoapRequest::SoapElement.create(SoapRequest::SoapConstants::A)
24
+ .add_attribute(SoapRequest::SoapConstants::N, key)
25
25
  .add_content(value)
26
26
  soap_request.add_node(node_attr)
27
27
  end
@@ -31,13 +31,13 @@ module Zm
31
31
  end
32
32
 
33
33
  def to_update
34
- soap_request = SoapElement.admin(SoapAdminConstants::MODIFY_CALENDAR_RESOURCE_REQUEST)
35
- .add_attribute(SoapConstants::ID, @item.id)
34
+ soap_request = SoapRequest::SoapElement.admin(Zm::SoapRequest::SoapAdminConstants::MODIFY_CALENDAR_RESOURCE_REQUEST)
35
+ .add_attribute(SoapRequest::SoapConstants::ID, @item.id)
36
36
 
37
37
  attrs_only_set_h.each do |key, values|
38
38
  values.each do |value|
39
- node_attr = SoapElement.create(SoapConstants::A)
40
- .add_attribute(SoapConstants::N, key)
39
+ node_attr = SoapRequest::SoapElement.create(SoapRequest::SoapConstants::A)
40
+ .add_attribute(SoapRequest::SoapConstants::N, key)
41
41
  .add_content(value)
42
42
  soap_request.add_node(node_attr)
43
43
  end
@@ -47,14 +47,14 @@ module Zm
47
47
  end
48
48
 
49
49
  def to_patch(hash)
50
- soap_request = SoapElement.admin(SoapAdminConstants::MODIFY_CALENDAR_RESOURCE_REQUEST)
51
- .add_attribute(SoapConstants::ID, @item.id)
50
+ soap_request = SoapRequest::SoapElement.admin(Zm::SoapRequest::SoapAdminConstants::MODIFY_CALENDAR_RESOURCE_REQUEST)
51
+ .add_attribute(SoapRequest::SoapConstants::ID, @item.id)
52
52
 
53
53
  hash.each do |key, values|
54
54
  values = [values] unless values.is_a?(Array)
55
55
  values.each do |value|
56
- node_attr = SoapElement.create(SoapConstants::A)
57
- .add_attribute(SoapConstants::N, key)
56
+ node_attr = SoapRequest::SoapElement.create(SoapRequest::SoapConstants::A)
57
+ .add_attribute(SoapRequest::SoapConstants::N, key)
58
58
  .add_content(value)
59
59
  soap_request.add_node(node_attr)
60
60
  end
@@ -64,8 +64,8 @@ module Zm
64
64
  end
65
65
 
66
66
  def to_delete
67
- SoapElement.admin(SoapAdminConstants::DELETE_CALENDAR_RESOURCE_REQUEST)
68
- .add_attribute(SoapConstants::ID, @item.id)
67
+ SoapRequest::SoapElement.admin(Zm::SoapRequest::SoapAdminConstants::DELETE_CALENDAR_RESOURCE_REQUEST)
68
+ .add_attribute(SoapRequest::SoapConstants::ID, @item.id)
69
69
  end
70
70
 
71
71
  def attrs_only_set_h
@@ -7,7 +7,7 @@ module Zm
7
7
  def initialize(parent)
8
8
  @child_class = Resource
9
9
  @builder_class = ResourcesBuilder
10
- @search_type = SearchType::RESOURCE
10
+ @search_type = :resources
11
11
  super
12
12
  end
13
13
 
@@ -19,13 +19,13 @@ module Zm
19
19
  end
20
20
 
21
21
  def build_find_by(hash)
22
- soap_request = SoapElement.admin(SoapAdminConstants::GET_CALENDAR_RESOURCE_REQUEST)
23
- node_res = SoapElement.create(SoapConstants::CAL_RESOURCE)
24
- .add_attribute(SoapConstants::BY, hash.keys.first)
22
+ soap_request = SoapRequest::SoapElement.admin(Zm::SoapRequest::SoapAdminConstants::GET_CALENDAR_RESOURCE_REQUEST)
23
+ node_res = SoapRequest::SoapElement.create(SoapRequest::SoapConstants::CAL_RESOURCE)
24
+ .add_attribute(SoapRequest::SoapConstants::BY, hash.keys.first)
25
25
  .add_content(hash.values.first)
26
26
  soap_request.add_node(node_res)
27
- soap_request.add_attribute(SoapConstants::ATTRS, attrs_comma)
28
- soap_request.add_attribute(SoapConstants::APPLY_COS, @apply_cos)
27
+ soap_request.add_attribute(SoapRequest::SoapConstants::ATTRS, attrs_comma)
28
+ soap_request.add_attribute(SoapRequest::SoapConstants::APPLY_COS, @apply_cos)
29
29
  soap_request
30
30
  end
31
31
 
@@ -33,7 +33,20 @@ module Zm
33
33
 
34
34
  def reset_query_params
35
35
  super
36
- @attrs = SearchType::Attributes::RESOURCE.dup
36
+ @attrs = %w[
37
+ displayName
38
+ zimbraId
39
+ zimbraMailHost
40
+ uid
41
+ zimbraAccountStatus
42
+ description
43
+ zimbraCalResType
44
+ zimbraIsDelegatedAdminAccount
45
+ zimbraIsAdminAccount
46
+ zimbraIsSystemResource
47
+ zimbraIsSystemAccount
48
+ zimbraIsExternalVirtualAccount
49
+ ]
37
50
  end
38
51
  end
39
52
  end
@@ -4,12 +4,13 @@ module Zm
4
4
  module Client
5
5
  # class account SearchFolder
6
6
  class SearchFolder < Base::Object
7
- include RequestMethodsMailbox
7
+ include SoapRequest::RequestMethodsMailbox
8
8
  include MailboxItemConcern
9
+ extend Relationship
10
+ has_jsns_builder
9
11
 
10
12
  attr_accessor :uuid, :deletable, :name, :absFolderPath, :luuid, :color, :rgb, :rev, :ms,
11
- :webOfflineSyncDays, :activesyncdisabled, :query, :sortBy, :types,
12
- :name, :color, :rgb, :query, :sortBy
13
+ :webOfflineSyncDays, :activesyncdisabled, :query, :sortBy, :types
13
14
 
14
15
  def initialize(parent)
15
16
  @l = FolderDefault::ROOT.id
@@ -36,14 +37,6 @@ module Zm
36
37
  def build_color
37
38
  jsns_builder.to_color
38
39
  end
39
-
40
- private
41
-
42
- def jsns_builder
43
- return @jsns_builder if defined? @jsns_builder
44
-
45
- @jsns_builder = SearchFolderJsnsBuilder.new(self)
46
- end
47
40
  end
48
41
  end
49
42
  end
@@ -19,8 +19,8 @@ module Zm
19
19
  }
20
20
  attrs.compact!
21
21
 
22
- soap_request = SoapElement.mail(SoapMailConstants::CREATE_SEARCH_FOLDER_REQUEST)
23
- node_search = SoapElement.create(SoapConstants::SEARCH).add_attributes(attrs)
22
+ soap_request = SoapRequest::SoapElement.mail(SoapRequest::SoapMailConstants::CREATE_SEARCH_FOLDER_REQUEST)
23
+ node_search = SoapRequest::SoapElement.create(SoapRequest::SoapConstants::SEARCH).add_attributes(attrs)
24
24
  soap_request.add_node(node_search)
25
25
  soap_request
26
26
  end
@@ -35,8 +35,8 @@ module Zm
35
35
  }
36
36
  attrs.compact!
37
37
 
38
- soap_request = SoapElement.mail(SoapMailConstants::MODIFY_SEARCH_FOLDER_REQUEST)
39
- node_search = SoapElement.create(SoapConstants::SEARCH).add_attributes(attrs)
38
+ soap_request = SoapRequest::SoapElement.mail(SoapRequest::SoapMailConstants::MODIFY_SEARCH_FOLDER_REQUEST)
39
+ node_search = SoapRequest::SoapElement.create(SoapRequest::SoapConstants::SEARCH).add_attributes(attrs)
40
40
  soap_request.add_node(node_search)
41
41
  soap_request
42
42
  end
@@ -95,8 +95,8 @@ module Zm
95
95
  end
96
96
 
97
97
  def build(attrs)
98
- soap_request = SoapElement.mail(SoapMailConstants::FOLDER_ACTION_REQUEST)
99
- node_action = SoapElement.create(SoapConstants::ACTION).add_attributes(attrs)
98
+ soap_request = SoapRequest::SoapElement.mail(SoapRequest::SoapMailConstants::FOLDER_ACTION_REQUEST)
99
+ node_action = SoapRequest::SoapElement.create(SoapRequest::SoapConstants::ACTION).add_attributes(attrs)
100
100
  soap_request.add_node(node_action)
101
101
  soap_request
102
102
  end
@@ -15,7 +15,7 @@ module Zm
15
15
  end
16
16
 
17
17
  def build_query
18
- SoapElement.mail(SoapMailConstants::GET_SEARCH_FOLDER_REQUEST)
18
+ SoapRequest::SoapElement.mail(SoapRequest::SoapMailConstants::GET_SEARCH_FOLDER_REQUEST)
19
19
  end
20
20
  end
21
21
  end
@@ -1,42 +1,36 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'zm/client/backup'
4
- require 'zm/client/mta_queue'
5
-
6
3
  module Zm
7
4
  module Client
8
5
  # objectClass: zimbraServer
9
6
  class Server < Base::Object
10
- include HasSoapAdminConnector
11
-
12
- def mta_queues
13
- return @mta_queues if defined? @mta_queues
7
+ extend Relationship
8
+ include Zm::Utils::HasSoapAdminConnector
14
9
 
15
- @mta_queues = MtaQueuesCollection.new(self)
16
- end
10
+ has_many :mta_queues, klass: :'Zm::Client::MtaQueuesCollection'
11
+ has_many :backups, klass: :'Zm::Client::BackupsCollection'
12
+ has_many :accounts, klass: :'Zm::Client::ServerAccountsCollection'
17
13
 
18
- def backups
19
- return @backups if defined? @backups
14
+ def update!(hash = nil, update_attributes: true, **attrs)
15
+ hash = hash.nil? ? attrs : hash.merge(attrs)
16
+ return false if hash.delete_if { |k, v| v.nil? || !respond_to?(k) }.empty?
20
17
 
21
- @backups = BackupsCollection.new(self)
22
- end
18
+ do_update!(hash)
23
19
 
24
- def accounts
25
- return @accounts if defined? @accounts
20
+ do_update_attributes(hash) if update_attributes
26
21
 
27
- @accounts = ServerAccountsCollection.new(self)
22
+ @updated = true
28
23
  end
29
24
 
30
- def update!(hash)
31
- return false if hash.delete_if { |k, v| v.nil? || !respond_to?(k) }.empty?
32
-
33
- do_update!(hash)
34
-
25
+ def do_update_attributes(hash)
35
26
  hash.each do |key, value|
36
27
  update_attribute(key, value)
37
28
  end
29
+ end
38
30
 
39
- true
31
+ def mailboxes
32
+ soap_request = Zm::SoapRequest::SoapElement.admin(SoapRequest::SoapAdminConstants::GET_ALL_MAILBOXES_REQUEST)
33
+ @parent.soap_admin_connector.target_invoke(soap_request, @id).dig(:GetAllMailboxesResponse, :mbox)
40
34
  end
41
35
  end
42
36
  end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ module ServerServices
6
+ AMAVIS = 'amavis'
7
+ ANTIVIRUS = 'antivirus'
8
+ ANTISPAM = 'antispam'
9
+ OPENDKIM = 'opendkim'
10
+ DNSCACHE = 'dnscache'
11
+ LOGGER = 'logger'
12
+ LDAP = 'ldap'
13
+ SERVICE = 'service'
14
+ ZIMBRA = 'zimbra'
15
+ ZIMBRA_ADMIN = 'zimbraAdmin'
16
+ ZIMLET = 'zimlet'
17
+ MAILBOX = 'mailbox'
18
+ MEMCACHED = 'memcached'
19
+ SPELL = 'spell'
20
+ MTA = 'mta'
21
+ PROXY = 'proxy'
22
+ STATS = 'stats'
23
+ SNMP = 'snmp'
24
+ end
25
+ end
26
+ end
@@ -20,12 +20,12 @@ module Zm
20
20
  end
21
21
 
22
22
  def build_find_by(hash)
23
- soap_request = SoapElement.admin(SoapAdminConstants::GET_SERVER_REQUEST)
24
- node_server = SoapElement.create(SoapConstants::SERVER)
25
- .add_attribute(SoapConstants::BY, hash.keys.first)
23
+ soap_request = Zm::SoapRequest::SoapElement.admin(Zm::SoapRequest::SoapAdminConstants::GET_SERVER_REQUEST)
24
+ node_server = Zm::SoapRequest::SoapElement.create(Zm::SoapRequest::SoapConstants::SERVER)
25
+ .add_attribute(Zm::SoapRequest::SoapConstants::BY, hash.keys.first)
26
26
  .add_content(hash.values.first)
27
27
  soap_request.add_node(node_server)
28
- soap_request.add_attribute(SoapConstants::ATTRS, attrs_comma) unless @attrs.nil?
28
+ soap_request.add_attribute(Zm::SoapRequest::SoapConstants::ATTRS, attrs_comma) unless @attrs.nil?
29
29
  soap_request
30
30
  end
31
31
 
@@ -39,8 +39,8 @@ module Zm
39
39
  end
40
40
 
41
41
  def build_query
42
- soap_request = SoapElement.admin(SoapAdminConstants::GET_ALL_SERVERS_REQUEST)
43
- soap_request.add_attribute(SoapConstants::SERVICE, @service) unless @service.nil?
42
+ soap_request = SoapRequest::SoapElement.admin(Zm::SoapRequest::SoapAdminConstants::GET_ALL_SERVERS_REQUEST)
43
+ soap_request.add_attribute(SoapRequest::SoapConstants::SERVICE, @service) unless @service.nil?
44
44
  soap_request
45
45
  end
46
46
  end
@@ -4,14 +4,11 @@ module Zm
4
4
  module Client
5
5
  # class for account share
6
6
  class Share < Base::Object
7
+ extend Relationship
7
8
  attr_accessor :ownerId, :ownerEmail, :ownerName, :folderId, :folderUuid, :folderPath,
8
9
  :view, :rights, :granteeType, :granteeId, :granteeName, :mid
9
10
 
10
- def mountpoints
11
- return @mountpoints if defined? @mountpoints
12
-
13
- @mountpoints = ShareMountPointsCollection.new(self)
14
- end
11
+ has_many :mountpoints, klass: :'Zm::Client::ShareMountPointsCollection'
15
12
  end
16
13
  end
17
14
  end
@@ -3,7 +3,7 @@
3
3
  module Zm
4
4
  module Client
5
5
  # class factory [shares]
6
- class ShareBuilder < Base::ObjectsBuilder
6
+ class SharesBuilder < Base::ObjectsBuilder
7
7
  def initialize(parent, json)
8
8
  super
9
9
  @json_item_key = :share
@@ -5,6 +5,7 @@ module Zm
5
5
  # collection of shares
6
6
  class SharesCollection < Base::ObjectsCollection
7
7
  def initialize(parent)
8
+ super()
8
9
  @parent = parent
9
10
  reset_query_params
10
11
  end
@@ -21,11 +22,11 @@ module Zm
21
22
  end
22
23
 
23
24
  def share_response
24
- soap_request = SoapElement.account(SoapAccountConstants::GET_SHARE_INFO_REQUEST)
25
- .add_attributes({ includeSelf: SoapUtils::OFF })
25
+ soap_request = SoapRequest::SoapElement.account(Zm::SoapRequest::SoapAccountConstants::GET_SHARE_INFO_REQUEST)
26
+ .add_attributes({ includeSelf: Zm::Utils::SearchUtils::OFF })
26
27
 
27
28
  unless @owner_name.nil?
28
- node_owner = SoapElement.create('owner')
29
+ node_owner = SoapRequest::SoapElement.create('owner')
29
30
  .add_attributes({ by: :name })
30
31
  .add_content(@owner_name)
31
32
  soap_request.add_node(node_owner)
@@ -35,7 +36,7 @@ module Zm
35
36
  end
36
37
 
37
38
  def share_builder
38
- ShareBuilder.new(@parent, share_response)
39
+ SharesBuilder.new(@parent, share_response)
39
40
  end
40
41
 
41
42
  def reset_query_params
@@ -4,7 +4,9 @@ module Zm
4
4
  module Client
5
5
  # class account signature
6
6
  class Signature < Base::Object
7
- include RequestMethodsMailbox
7
+ include SoapRequest::RequestMethodsMailbox
8
+ extend Relationship
9
+ has_jsns_builder
8
10
 
9
11
  attr_accessor :id, :name, :txt, :html
10
12
 
@@ -18,30 +20,22 @@ module Zm
18
20
  end
19
21
 
20
22
  def type
21
- return ContentType::HTML unless html.nil?
23
+ return Zm::Utils::ContentType::HTML unless html.nil?
22
24
 
23
- ContentType::TEXT
25
+ Zm::Utils::ContentType::TEXT
24
26
  end
25
27
 
26
28
  def html?
27
- type == ContentType::HTML
29
+ type == Zm::Utils::ContentType::HTML
28
30
  end
29
31
 
30
32
  def txt?
31
- type == ContentType::TEXT
33
+ type == Zm::Utils::ContentType::TEXT
32
34
  end
33
35
 
34
36
  def content
35
37
  html || txt || ''
36
38
  end
37
-
38
- private
39
-
40
- def jsns_builder
41
- return @jsns_builder if defined? @jsns_builder
42
-
43
- @jsns_builder = SignatureJsnsBuilder.new(self)
44
- end
45
39
  end
46
40
  end
47
41
  end
@@ -9,24 +9,24 @@ module Zm
9
9
  end
10
10
 
11
11
  def to_jsns
12
- soap_request = SoapElement.account(SoapAccountConstants::CREATE_SIGNATURE_REQUEST)
13
- node_signature = SoapElement.create(SoapConstants::SIGNATURE)
12
+ soap_request = SoapRequest::SoapElement.account(Zm::SoapRequest::SoapAccountConstants::CREATE_SIGNATURE_REQUEST)
13
+ node_signature = SoapRequest::SoapElement.create(SoapRequest::SoapConstants::SIGNATURE)
14
14
  .add_attributes({ name: @signature.name })
15
15
  soap_request.add_node(node_signature)
16
- node_content = SoapElement.create(SoapConstants::CONTENT)
17
- .add_attribute(SoapConstants::TYPE, @signature.type)
16
+ node_content = SoapRequest::SoapElement.create(SoapRequest::SoapConstants::CONTENT)
17
+ .add_attribute(SoapRequest::SoapConstants::TYPE, @signature.type)
18
18
  .add_content(@signature.content)
19
19
  node_signature.add_node(node_content)
20
20
  soap_request
21
21
  end
22
22
 
23
23
  def to_update
24
- soap_request = SoapElement.account(SoapAccountConstants::MODIFY_SIGNATURE_REQUEST)
25
- node_signature = SoapElement.create(SoapConstants::SIGNATURE)
24
+ soap_request = SoapRequest::SoapElement.account(Zm::SoapRequest::SoapAccountConstants::MODIFY_SIGNATURE_REQUEST)
25
+ node_signature = SoapRequest::SoapElement.create(SoapRequest::SoapConstants::SIGNATURE)
26
26
  .add_attributes({ name: @signature.name, id: @signature.id })
27
27
  soap_request.add_node(node_signature)
28
- node_content = SoapElement.create(SoapConstants::CONTENT)
29
- .add_attribute(SoapConstants::TYPE, @signature.type)
28
+ node_content = SoapRequest::SoapElement.create(SoapRequest::SoapConstants::CONTENT)
29
+ .add_attribute(SoapRequest::SoapConstants::TYPE, @signature.type)
30
30
  .add_content(@signature.content)
31
31
  node_signature.add_node(node_content)
32
32
  soap_request
@@ -38,16 +38,16 @@ module Zm
38
38
  name: new_name
39
39
  }
40
40
 
41
- soap_request = SoapElement.account(SoapAccountConstants::MODIFY_SIGNATURE_REQUEST)
42
- node_signature = SoapElement.create(SoapConstants::SIGNATURE).add_attributes(attrs)
41
+ soap_request = SoapRequest::SoapElement.account(Zm::SoapRequest::SoapAccountConstants::MODIFY_SIGNATURE_REQUEST)
42
+ node_signature = SoapRequest::SoapElement.create(SoapRequest::SoapConstants::SIGNATURE).add_attributes(attrs)
43
43
  soap_request.add_node(node_signature)
44
44
  soap_request
45
45
  end
46
46
 
47
47
  def to_delete
48
- soap_request = SoapElement.account(SoapAccountConstants::DELETE_SIGNATURE_REQUEST)
49
- node_signature = SoapElement.create(SoapConstants::SIGNATURE)
50
- .add_attribute(SoapConstants::ID, @signature.id)
48
+ soap_request = SoapRequest::SoapElement.account(Zm::SoapRequest::SoapAccountConstants::DELETE_SIGNATURE_REQUEST)
49
+ node_signature = SoapRequest::SoapElement.create(SoapRequest::SoapConstants::SIGNATURE)
50
+ .add_attribute(SoapRequest::SoapConstants::ID, @signature.id)
51
51
  soap_request.add_node(node_signature)
52
52
  soap_request
53
53
  end
@@ -22,8 +22,8 @@ module Zm
22
22
  content.each do |c|
23
23
  next if c[:type].nil?
24
24
 
25
- item.txt = c[:_content] if c[:type] == ContentType::TEXT
26
- item.html = c[:_content] if c[:type] == ContentType::HTML
25
+ item.txt = c[:_content] if c[:type] == Zm::Utils::ContentType::TEXT
26
+ item.html = c[:_content] if c[:type] == Zm::Utils::ContentType::HTML
27
27
  end
28
28
 
29
29
  item
@@ -15,7 +15,7 @@ module Zm
15
15
  end
16
16
 
17
17
  def build_query
18
- SoapElement.account(SoapAccountConstants::GET_SIGNATURES_REQUEST)
18
+ SoapRequest::SoapElement.account(Zm::SoapRequest::SoapAccountConstants::GET_SIGNATURES_REQUEST)
19
19
  end
20
20
  end
21
21
  end
@@ -2,67 +2,65 @@
2
2
 
3
3
  module Zm
4
4
  module Client
5
- class AccountObject
6
- class TagsCollection
7
- def initialize(parent)
8
- @parent = parent
9
- end
10
-
11
- def all
12
- return @all if defined? @all
5
+ class AccountObjectTagsCollection
6
+ def initialize(parent)
7
+ @parent = parent
8
+ end
13
9
 
14
- @all = @parent.tn.to_s.split(',')
15
- end
10
+ def all
11
+ return @all if defined? @all
16
12
 
17
- def add!(*new_tags)
18
- new_tags.flatten!
19
- Utils.map_format(new_tags, String, :name)
20
- return false if new_tags.delete_if { |tag_name| all.include?(tag_name) }.empty?
13
+ @all = @parent.tn.to_s.split(',')
14
+ end
21
15
 
22
- new_tags.each do |tag_name|
23
- attrs = {
24
- op: :tag,
25
- id: @parent.id,
26
- tn: tag_name
27
- }
16
+ def add!(*new_tags)
17
+ new_tags.flatten!
18
+ Utils.map_format(new_tags, String, :name)
19
+ return false if new_tags.delete_if { |tag_name| all.include?(tag_name) }.empty?
28
20
 
29
- do_action(attrs)
30
- end
21
+ new_tags.each do |tag_name|
22
+ attrs = {
23
+ op: :tag,
24
+ id: @parent.id,
25
+ tn: tag_name
26
+ }
31
27
 
32
- @all += new_tags
33
- update_parent
28
+ do_action(attrs)
34
29
  end
35
30
 
36
- def remove!(*tag_names)
37
- tag_names.flatten!
38
- Utils.map_format(tag_names, String, :name)
39
- return false if tag_names.delete_if { |tag_name| !all.include?(tag_name) }.empty?
31
+ @all += new_tags
32
+ update_parent
33
+ end
40
34
 
41
- tag_names.each do |tag_name|
42
- attrs = {
43
- op: '!tag',
44
- id: @parent.id,
45
- tn: tag_name
46
- }
35
+ def remove!(*tag_names)
36
+ tag_names.flatten!
37
+ Utils.map_format(tag_names, String, :name)
38
+ return false if tag_names.delete_if { |tag_name| !all.include?(tag_name) }.empty?
47
39
 
48
- do_action(attrs)
49
- end
40
+ tag_names.each do |tag_name|
41
+ attrs = {
42
+ op: '!tag',
43
+ id: @parent.id,
44
+ tn: tag_name
45
+ }
50
46
 
51
- @all -= tag_names
52
- update_parent
47
+ do_action(attrs)
53
48
  end
54
49
 
55
- def update_parent
56
- @parent.tn = @all.join(',')
57
- end
50
+ @all -= tag_names
51
+ update_parent
52
+ end
58
53
 
59
- def do_action(attrs)
60
- soap_request = SoapElement.mail(SoapMailConstants::ITEM_ACTION_REQUEST)
61
- node_action = SoapElement.create(SoapConstants::ACTION).add_attributes(attrs)
62
- soap_request.add_node(node_action)
54
+ def update_parent
55
+ @parent.tn = @all.join(',')
56
+ end
63
57
 
64
- @parent.parent.soap_connector.invoke(soap_request)
65
- end
58
+ def do_action(attrs)
59
+ soap_request = SoapRequest::SoapElement.mail(SoapRequest::SoapMailConstants::ITEM_ACTION_REQUEST)
60
+ node_action = SoapRequest::SoapElement.create(SoapRequest::SoapConstants::ACTION).add_attributes(attrs)
61
+ soap_request.add_node(node_action)
62
+
63
+ @parent.parent.soap_connector.invoke(soap_request)
66
64
  end
67
65
  end
68
66
  end
@@ -4,8 +4,10 @@ module Zm
4
4
  module Client
5
5
  # class account tag
6
6
  class Tag < Base::Object
7
- include RequestMethodsMailbox
7
+ include SoapRequest::RequestMethodsMailbox
8
8
  include MailboxItemConcern
9
+ extend Relationship
10
+ has_jsns_builder
9
11
 
10
12
  attr_accessor :name, :color, :rgb
11
13
 
@@ -15,14 +17,6 @@ module Zm
15
17
  TagJsnsInitializer.update(self, json)
16
18
  id
17
19
  end
18
-
19
- private
20
-
21
- def jsns_builder
22
- return @jsns_builder if defined? @jsns_builder
23
-
24
- @jsns_builder = TagJsnsBuilder.new(self)
25
- end
26
20
  end
27
21
  end
28
22
  end
@@ -3,7 +3,7 @@
3
3
  module Zm
4
4
  module Client
5
5
  # class for account tag jsns builder
6
- class TagJsnsBuilder < BaseAccountJsnsBuilder
6
+ class TagJsnsBuilder < Base::BaseAccountJsnsBuilder
7
7
  def to_jsns
8
8
  attrs = {
9
9
  name: @item.name,
@@ -12,8 +12,8 @@ module Zm
12
12
  }
13
13
  attrs.compact!
14
14
 
15
- soap_request = SoapElement.mail(SoapMailConstants::CREATE_TAG_REQUEST)
16
- node_tag = SoapElement.create(SoapConstants::TAG).add_attributes(attrs)
15
+ soap_request = SoapRequest::SoapElement.mail(SoapRequest::SoapMailConstants::CREATE_TAG_REQUEST)
16
+ node_tag = SoapRequest::SoapElement.create(SoapRequest::SoapConstants::TAG).add_attributes(attrs)
17
17
  soap_request.add_node(node_tag)
18
18
  soap_request
19
19
  end
@@ -3,7 +3,7 @@
3
3
  module Zm
4
4
  module Client
5
5
  # class factory [tags]
6
- class TagBuilder < Base::ObjectsBuilder
6
+ class TagsBuilder < Base::ObjectsBuilder
7
7
  def initialize(parent, json)
8
8
  super
9
9
  @json_item_key = :tag