zm-ruby-client 2.2.7 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +6 -0
  3. data/.ruby-version +1 -0
  4. data/CHANGELOG.md +10 -6
  5. data/Gemfile +1 -6
  6. data/README.md +10 -15
  7. data/VERSION +1 -1
  8. data/lib/zm/client/account/account.rb +35 -22
  9. data/lib/zm/client/account/account_aliases_collection.rb +14 -6
  10. data/lib/zm/client/account/account_dls_membership_collection.rb +10 -4
  11. data/lib/zm/client/account/account_dls_owner_collection.rb +8 -5
  12. data/lib/zm/client/account/account_jsns_builder.rb +31 -19
  13. data/lib/zm/client/account/account_jsns_initializer.rb +4 -14
  14. data/lib/zm/client/account/accounts_builder.rb +1 -1
  15. data/lib/zm/client/account/accounts_collection.rb +15 -8
  16. data/lib/zm/client/ace/ace.rb +5 -5
  17. data/lib/zm/client/ace/ace_jsns_builder.rb +8 -8
  18. data/lib/zm/client/ace/ace_jsns_initializer.rb +7 -7
  19. data/lib/zm/client/ace/aces_builder.rb +1 -1
  20. data/lib/zm/client/ace/aces_collection.rb +2 -2
  21. data/lib/zm/client/appointment/appointment.rb +27 -24
  22. data/lib/zm/client/appointment/appointment_jsns_builder.rb +29 -20
  23. data/lib/zm/client/appointment/appointment_jsns_initializer.rb +14 -13
  24. data/lib/zm/client/appointment/appointments_builder.rb +1 -1
  25. data/lib/zm/client/appointment/appointments_collection.rb +8 -7
  26. data/lib/zm/client/backup/backup.rb +6 -2
  27. data/lib/zm/client/backup/backup_jsns_initializer.rb +14 -12
  28. data/lib/zm/client/backup/backups_builder.rb +1 -1
  29. data/lib/zm/client/backup/backups_collection.rb +2 -1
  30. data/lib/zm/client/base/account_search_objects_collection.rb +46 -20
  31. data/lib/zm/client/base/admin_objects_collection.rb +22 -27
  32. data/lib/zm/client/base/base_account_jsns_builder.rb +1 -4
  33. data/lib/zm/client/base/base_jsns_initializer.rb +8 -8
  34. data/lib/zm/client/base/mailbox_infos_collection.rb +23 -15
  35. data/lib/zm/client/base/mailbox_object.rb +174 -69
  36. data/lib/zm/client/base/mailbox_prefs_collection.rb +4 -8
  37. data/lib/zm/client/base/object.rb +2 -2
  38. data/lib/zm/client/base/objects_builder.rb +7 -3
  39. data/lib/zm/client/base/objects_collection.rb +4 -13
  40. data/lib/zm/client/base/zimbra_attribute.rb +4 -17
  41. data/lib/zm/client/base/zimbra_attributes_collection.rb +16 -9
  42. data/lib/zm/client/base.rb +0 -1
  43. data/lib/zm/client/cluster/batch_request.rb +50 -0
  44. data/lib/zm/client/cluster/cluster.rb +49 -27
  45. data/lib/zm/client/cluster/cluster_config.rb +129 -40
  46. data/lib/zm/client/common/recipients.rb +2 -2
  47. data/lib/zm/client/common/utils.rb +1 -13
  48. data/lib/zm/client/common.rb +0 -1
  49. data/lib/zm/client/connector/{rest_account.rb → rest_connector.rb} +40 -50
  50. data/lib/zm/client/connector/soap_account.rb +19 -15
  51. data/lib/zm/client/connector/soap_admin.rb +9 -9
  52. data/lib/zm/client/connector/soap_base.rb +24 -17
  53. data/lib/zm/client/connector/soap_error.rb +3 -23
  54. data/lib/zm/client/constant.rb +18 -16
  55. data/lib/zm/client/contact/contact.rb +21 -40
  56. data/lib/zm/client/contact/contact_jsns_builder.rb +1 -1
  57. data/lib/zm/client/contact/contact_jsns_initializer.rb +4 -26
  58. data/lib/zm/client/contact/contacts_builder.rb +1 -1
  59. data/lib/zm/client/contact/contacts_collection.rb +4 -24
  60. data/lib/zm/client/contact/group_contact_jsns_builder.rb +18 -13
  61. data/lib/zm/client/contact/mod_group_contact.rb +6 -2
  62. data/lib/zm/client/cos/cos.rb +35 -11
  63. data/lib/zm/client/cos/cos_domains_collection.rb +1 -1
  64. data/lib/zm/client/cos/cos_jsns_builder.rb +22 -9
  65. data/lib/zm/client/cos/cos_jsns_initializer.rb +2 -6
  66. data/lib/zm/client/cos/cos_servers_collection.rb +5 -6
  67. data/lib/zm/client/cos/coses_builder.rb +1 -1
  68. data/lib/zm/client/cos/coses_collection.rb +6 -4
  69. data/lib/zm/client/datasource/datasource.rb +27 -34
  70. data/lib/zm/client/datasource/datasource_jsns_builder.rb +1 -1
  71. data/lib/zm/client/datasource/datasource_jsns_initializer.rb +5 -6
  72. data/lib/zm/client/datasource/datasources_builder.rb +6 -9
  73. data/lib/zm/client/datasource/datasources_collection.rb +6 -5
  74. data/lib/zm/client/distributionlist/distributionlist.rb +22 -42
  75. data/lib/zm/client/distributionlist/distributionlist_aliases_collection.rb +14 -6
  76. data/lib/zm/client/distributionlist/distributionlist_jsns_builder.rb +20 -16
  77. data/lib/zm/client/distributionlist/distributionlist_jsns_initializer.rb +2 -11
  78. data/lib/zm/client/distributionlist/distributionlist_members_collection.rb +20 -12
  79. data/lib/zm/client/distributionlist/distributionlist_owners_collection.rb +16 -5
  80. data/lib/zm/client/distributionlist/distributionlists_builder.rb +1 -1
  81. data/lib/zm/client/distributionlist/distributionlists_collection.rb +12 -6
  82. data/lib/zm/client/distributionlist/dls_membership_collection.rb +12 -6
  83. data/lib/zm/client/document/document.rb +16 -8
  84. data/lib/zm/client/document/document_jsns_builder.rb +1 -1
  85. data/lib/zm/client/document/document_jsns_initializer.rb +27 -26
  86. data/lib/zm/client/document/documents_builder.rb +1 -1
  87. data/lib/zm/client/document/documents_collection.rb +1 -1
  88. data/lib/zm/client/domain/domain.rb +18 -37
  89. data/lib/zm/client/domain/domain_accounts_collection.rb +1 -1
  90. data/lib/zm/client/domain/domain_distributionlists_collection.rb +1 -1
  91. data/lib/zm/client/domain/domain_jsns_builder.rb +18 -9
  92. data/lib/zm/client/domain/domain_jsns_initializer.rb +2 -6
  93. data/lib/zm/client/domain/domain_resources_collection.rb +1 -1
  94. data/lib/zm/client/domain/domains_builder.rb +1 -1
  95. data/lib/zm/client/domain/domains_collection.rb +12 -6
  96. data/lib/zm/client/filter_rules/filter_rule.rb +0 -9
  97. data/lib/zm/client/filter_rules/filter_rule_jsns_initializer.rb +7 -6
  98. data/lib/zm/client/filter_rules/filter_rules_builder.rb +1 -1
  99. data/lib/zm/client/filter_rules/filter_rules_collection.rb +5 -15
  100. data/lib/zm/client/filter_rules/outgoing_filter_rules_collection.rb +5 -2
  101. data/lib/zm/client/folder/folder.rb +73 -56
  102. data/lib/zm/client/folder/folder_grant.rb +7 -5
  103. data/lib/zm/client/folder/folder_grant_jsns_builder.rb +6 -3
  104. data/lib/zm/client/folder/folder_grants_collection.rb +2 -4
  105. data/lib/zm/client/folder/folder_jsns_builder.rb +14 -7
  106. data/lib/zm/client/folder/folder_jsns_initializer.rb +58 -40
  107. data/lib/zm/client/folder/folder_retention_policies_collection.rb +4 -2
  108. data/lib/zm/client/folder/folders_builder.rb +1 -1
  109. data/lib/zm/client/folder/folders_collection.rb +21 -18
  110. data/lib/zm/client/folder/folders_jsns_builder.rb +4 -2
  111. data/lib/zm/client/folder/mod_document_folder.rb +5 -4
  112. data/lib/zm/client/identity/identities_builder.rb +1 -1
  113. data/lib/zm/client/identity/identities_collection.rb +6 -5
  114. data/lib/zm/client/identity/identity.rb +9 -29
  115. data/lib/zm/client/identity/identity_jsns_builder.rb +8 -4
  116. data/lib/zm/client/identity/identity_jsns_initializer.rb +5 -4
  117. data/lib/zm/client/license/license.rb +7 -1
  118. data/lib/zm/client/license/license_jsns_initializer.rb +8 -5
  119. data/lib/zm/client/license/licenses_collection.rb +1 -1
  120. data/lib/zm/client/mailbox/mailbox_item_concern.rb +33 -0
  121. data/lib/zm/client/mailbox/mailbox_item_id.rb +7 -0
  122. data/lib/zm/client/message/attachments_collection.rb +2 -2
  123. data/lib/zm/client/message/message.rb +56 -52
  124. data/lib/zm/client/message/message_flags.rb +21 -13
  125. data/lib/zm/client/message/message_jsns_builder.rb +11 -6
  126. data/lib/zm/client/message/message_jsns_initializer.rb +24 -23
  127. data/lib/zm/client/message/messages_builder.rb +1 -1
  128. data/lib/zm/client/message/messages_collection.rb +1 -15
  129. data/lib/zm/client/mountpoint/mountpoint.rb +17 -25
  130. data/lib/zm/client/mountpoint/mountpoint_jsns_builder.rb +6 -3
  131. data/lib/zm/client/mountpoint/mountpoint_jsns_initializer.rb +25 -24
  132. data/lib/zm/client/mountpoint/mountpoints_builder.rb +1 -1
  133. data/lib/zm/client/mountpoint/mountpoints_collection.rb +13 -9
  134. data/lib/zm/client/mta_queue/mta_queue.rb +6 -2
  135. data/lib/zm/client/mta_queue/mta_queue_jsns_initializer.rb +3 -7
  136. data/lib/zm/client/mta_queue/mta_queues_builder.rb +3 -1
  137. data/lib/zm/client/mta_queue_item/mta_queue_item.rb +5 -3
  138. data/lib/zm/client/mta_queue_item/mta_queue_item_jsns_initializer.rb +1 -5
  139. data/lib/zm/client/mta_queue_item/mta_queue_items_builder.rb +3 -1
  140. data/lib/zm/client/mta_queue_item/mta_queue_items_collection.rb +3 -1
  141. data/lib/zm/client/resource/resource.rb +6 -18
  142. data/lib/zm/client/resource/resource_jsns_builder.rb +20 -13
  143. data/lib/zm/client/resource/resource_jsns_initializer.rb +4 -14
  144. data/lib/zm/client/resource/resources_builder.rb +1 -1
  145. data/lib/zm/client/resource/resources_collection.rb +12 -7
  146. data/lib/zm/client/search_folder/search_folder.rb +13 -29
  147. data/lib/zm/client/search_folder/search_folder_jsns_builder.rb +6 -6
  148. data/lib/zm/client/search_folder/search_folder_jsns_initializer.rb +19 -18
  149. data/lib/zm/client/search_folder/search_folders_builder.rb +1 -1
  150. data/lib/zm/client/search_folder/search_folders_collection.rb +6 -5
  151. data/lib/zm/client/server/server.rb +9 -3
  152. data/lib/zm/client/server/server_accounts_collection.rb +4 -2
  153. data/lib/zm/client/server/server_jsns_initializer.rb +1 -5
  154. data/lib/zm/client/server/servers_builder.rb +1 -1
  155. data/lib/zm/client/server/servers_collection.rb +17 -9
  156. data/lib/zm/client/share/share.rb +5 -3
  157. data/lib/zm/client/share/share_jsns_initializer.rb +15 -14
  158. data/lib/zm/client/share/share_mountpoints_collection.rb +3 -6
  159. data/lib/zm/client/share/shares_builder.rb +1 -1
  160. data/lib/zm/client/share/shares_collection.rb +6 -3
  161. data/lib/zm/client/signature/signature.rb +6 -21
  162. data/lib/zm/client/signature/signature_jsns_builder.rb +12 -7
  163. data/lib/zm/client/signature/signature_jsns_initializer.rb +5 -4
  164. data/lib/zm/client/signature/signatures_builder.rb +1 -1
  165. data/lib/zm/client/signature/signatures_collection.rb +6 -5
  166. data/lib/zm/client/soap_request/request_methods_admin.rb +56 -0
  167. data/lib/zm/client/soap_request/request_methods_mailbox.rb +60 -0
  168. data/lib/zm/client/soap_request/soap_constants.rb +7 -0
  169. data/lib/zm/client/soap_request/soap_context.rb +11 -2
  170. data/lib/zm/client/soap_request.rb +3 -0
  171. data/lib/zm/client/tag/account_object_tags_collection.rb +11 -9
  172. data/lib/zm/client/tag/tag.rb +8 -44
  173. data/lib/zm/client/tag/tag_jsns_builder.rb +4 -2
  174. data/lib/zm/client/tag/tag_jsns_initializer.rb +7 -6
  175. data/lib/zm/client/tag/tags_builder.rb +1 -1
  176. data/lib/zm/client/tag/tags_collection.rb +6 -5
  177. data/lib/zm/client/task/task.rb +6 -5
  178. data/lib/zm/client/task/task_jsns_initializer.rb +28 -27
  179. data/lib/zm/client/task/tasks_builder.rb +1 -1
  180. data/lib/zm/client/task/tasks_collection.rb +2 -2
  181. data/lib/zm/client/token.rb +52 -0
  182. data/lib/zm/client/upload/upload.rb +101 -95
  183. data/lib/zm/client/zm_logger.rb +83 -0
  184. data/lib/zm/client.rb +6 -1
  185. data/lib/zm/modules/base.rb +0 -1
  186. data/lib/zm/modules/belongs_to_folder.rb +6 -7
  187. data/lib/zm/modules/belongs_to_tag.rb +3 -1
  188. data/lib/zm/modules/common/zimbra-attrs.csv +3 -4
  189. data/lib/zm/modules/inspector.rb +2 -2
  190. data/lib/zm/modules/missing_method_static_collection.rb +2 -2
  191. data/lib/zm/support/cache/entry.rb +63 -0
  192. data/lib/zm/support/cache/file_store.rb +141 -0
  193. data/lib/zm/support/cache/null_store.rb +43 -0
  194. data/lib/zm/support/cache/request_strategy.rb +10 -0
  195. data/lib/zm/support/cache/store.rb +197 -0
  196. data/lib/zm/support/cache/strategy.rb +13 -0
  197. data/lib/zm/support/cache.rb +26 -0
  198. data/lib/zm-ruby-client.rb +2 -2
  199. data/zm-ruby-client.gemspec +10 -15
  200. metadata +37 -36
  201. data/lib/zm/client/common/token_metadata.rb +0 -44
  202. data/lib/zm/modules/zm_logger.rb +0 -26
@@ -6,28 +6,29 @@ module Zm
6
6
  class SearchFolderJsnsInitializer
7
7
  class << self
8
8
  def create(parent, json)
9
- item = SearchFolder.new(parent)
10
- update(item, json)
9
+ SearchFolder.new(parent).tap do |item|
10
+ update(item, json)
11
+ end
11
12
  end
12
13
 
13
14
  def update(item, json)
14
- item.id = json[:id].to_i
15
- item.name = json[:name]
15
+ item.id = json.delete(:id)
16
+ item.name = json.delete(:name)
16
17
 
17
- item.uuid = json[:uuid]
18
- item.deletable = json[:deletable]
19
- item.absFolderPath = json[:absFolderPath]
20
- item.l = json[:l].to_i
21
- item.luuid = json[:luuid]
22
- item.color = json[:color]
23
- item.rgb = json[:rgb]
24
- item.rev = json[:rev]
25
- item.ms = json[:ms]
26
- item.webOfflineSyncDays = json[:webOfflineSyncDays]
27
- item.activesyncdisabled = json[:activesyncdisabled]
28
- item.query = json[:query]
29
- item.sortBy = json[:sortBy]
30
- item.types = json[:types]
18
+ item.uuid = json.delete(:uuid)
19
+ item.deletable = json.delete(:deletable)
20
+ item.absFolderPath = json.delete(:absFolderPath)
21
+ item.l = json.delete(:l)
22
+ item.luuid = json.delete(:luuid)
23
+ item.color = json.delete(:color)
24
+ item.rgb = json.delete(:rgb)
25
+ item.rev = json.delete(:rev)
26
+ item.ms = json.delete(:ms)
27
+ item.webOfflineSyncDays = json.delete(:webOfflineSyncDays)
28
+ item.activesyncdisabled = json.delete(:activesyncdisabled)
29
+ item.query = json.delete(:query)
30
+ item.sortBy = json.delete(:sortBy)
31
+ item.types = json.delete(:types)
31
32
 
32
33
  item
33
34
  end
@@ -5,7 +5,7 @@ module Zm
5
5
  # class factory [Search folders]
6
6
  class SearchFoldersBuilder < Base::ObjectsBuilder
7
7
  def initialize(parent, json)
8
- super(parent, json)
8
+ super
9
9
  @json_item_key = :search
10
10
  end
11
11
 
@@ -7,14 +7,15 @@ module Zm
7
7
  def initialize(parent)
8
8
  @child_class = SearchFolder
9
9
  @builder_class = SearchFoldersBuilder
10
- super(parent)
10
+ super
11
11
  end
12
12
 
13
- private
14
-
15
13
  def make_query
16
- soap_request = SoapElement.mail(SoapMailConstants::GET_SEARCH_FOLDER_REQUEST)
17
- @parent.sacc.invoke(soap_request)
14
+ @parent.soap_connector.invoke(build_query)
15
+ end
16
+
17
+ def build_query
18
+ SoapElement.mail(SoapMailConstants::GET_SEARCH_FOLDER_REQUEST)
18
19
  end
19
20
  end
20
21
  end
@@ -10,15 +10,21 @@ module Zm
10
10
  include HasSoapAdminConnector
11
11
 
12
12
  def mta_queues
13
- @mta_queues ||= MtaQueuesCollection.new(self)
13
+ return @mta_queues if defined? @mta_queues
14
+
15
+ @mta_queues = MtaQueuesCollection.new(self)
14
16
  end
15
17
 
16
18
  def backups
17
- @backups ||= BackupsCollection.new(self)
19
+ return @backups if defined? @backups
20
+
21
+ @backups = BackupsCollection.new(self)
18
22
  end
19
23
 
20
24
  def accounts
21
- @accounts ||= ServerAccountsCollection.new(self)
25
+ return @accounts if defined? @accounts
26
+
27
+ @accounts = ServerAccountsCollection.new(self)
22
28
  end
23
29
 
24
30
  def update!(hash)
@@ -6,13 +6,15 @@ module Zm
6
6
  class ServerAccountsCollection < AccountsCollection
7
7
  def initialize(parent)
8
8
  @target_server_id = parent.id
9
- super(parent)
9
+ super
10
10
  end
11
11
 
12
12
  private
13
13
 
14
14
  def ldap_filter
15
- @ldap_filter ||= LdapFilter.new("(zimbraMailHost=#{@parent.name})")
15
+ return @ldap_filter if defined? @ldap_filter
16
+
17
+ @ldap_filter = LdapFilter.new("(zimbraMailHost=#{@parent.name})")
16
18
  end
17
19
  end
18
20
  end
@@ -5,11 +5,7 @@ module Zm
5
5
  # class for initialize account
6
6
  class ServerJsnsInitializer < Base::BaseJsnsInitializer
7
7
  class << self
8
- def create(parent, json)
9
- item = Server.new(parent)
10
-
11
- update(item, json)
12
- end
8
+ def klass = Server
13
9
  end
14
10
  end
15
11
  end
@@ -5,7 +5,7 @@ module Zm
5
5
  # class factory [servers]
6
6
  class ServersBuilder < Base::ObjectsBuilder
7
7
  def initialize(parent, json)
8
- super(parent, json)
8
+ super
9
9
  @json_item_key = :server
10
10
  end
11
11
 
@@ -9,31 +9,39 @@ module Zm
9
9
  @child_class = Server
10
10
  @builder_class = ServersBuilder
11
11
  @service = nil
12
- super(parent)
12
+ super
13
13
  end
14
14
 
15
15
  def find_by!(hash)
16
- soap_request = SoapElement.admin(SoapAdminConstants::GET_SERVER_REQUEST)
17
- node_server = SoapElement.create(SoapConstants::SERVER).add_attribute(SoapConstants::BY, hash.keys.first).add_content(hash.values.first)
18
- soap_request.add_node(node_server)
19
- soap_request.add_attribute(SoapConstants::ATTRS, attrs_comma) unless @attrs.nil?
20
- entry = sac.invoke(soap_request)[:GetServerResponse][:server].first
16
+ entry = sac.invoke(build_find_by(hash))[:GetServerResponse][:server].first
21
17
 
22
18
  reset_query_params
23
19
  ServerJsnsInitializer.create(@parent, entry)
24
20
  end
25
21
 
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)
26
+ .add_content(hash.values.first)
27
+ soap_request.add_node(node_server)
28
+ soap_request.add_attribute(SoapConstants::ATTRS, attrs_comma) unless @attrs.nil?
29
+ soap_request
30
+ end
31
+
26
32
  def where(service)
27
33
  @service = service
28
34
  self
29
35
  end
30
36
 
31
- private
32
-
33
37
  def make_query
38
+ sac.invoke(build_query)
39
+ end
40
+
41
+ def build_query
34
42
  soap_request = SoapElement.admin(SoapAdminConstants::GET_ALL_SERVERS_REQUEST)
35
43
  soap_request.add_attribute(SoapConstants::SERVICE, @service) unless @service.nil?
36
- sac.invoke(soap_request)
44
+ soap_request
37
45
  end
38
46
  end
39
47
  end
@@ -4,11 +4,13 @@ module Zm
4
4
  module Client
5
5
  # class for account share
6
6
  class Share < Base::Object
7
- attr_accessor :ownerId, :ownerEmail, :ownerName, :folderId, :folderUuid, :folderPath, :view, :rights,
8
- :granteeType, :granteeId, :granteeName, :mid
7
+ attr_accessor :ownerId, :ownerEmail, :ownerName, :folderId, :folderUuid, :folderPath,
8
+ :view, :rights, :granteeType, :granteeId, :granteeName, :mid
9
9
 
10
10
  def mountpoints
11
- @mountpoints ||= ShareMountPointsCollection.new(self)
11
+ return @mountpoints if defined? @mountpoints
12
+
13
+ @mountpoints = ShareMountPointsCollection.new(self)
12
14
  end
13
15
  end
14
16
  end
@@ -6,23 +6,24 @@ module Zm
6
6
  class ShareJsnsInitializer
7
7
  class << self
8
8
  def create(parent, json)
9
- item = Share.new(parent)
10
- update(item, json)
9
+ Share.new(parent).tap do |item|
10
+ update(item, json)
11
+ end
11
12
  end
12
13
 
13
14
  def update(item, json)
14
- item.ownerId = json[:ownerId]
15
- item.ownerEmail = json[:ownerEmail]
16
- item.ownerName = json[:ownerName]
17
- item.folderId = json[:folderId]
18
- item.folderUuid = json[:folderUuid]
19
- item.folderPath = json[:folderPath]
20
- item.view = json[:view]
21
- item.rights = json[:rights]
22
- item.granteeType = json[:granteeType]
23
- item.granteeId = json[:granteeId]
24
- item.granteeName = json[:granteeName]
25
- item.mid = json[:mid]
15
+ item.ownerId = json.delete(:ownerId)
16
+ item.ownerEmail = json.delete(:ownerEmail)
17
+ item.ownerName = json.delete(:ownerName)
18
+ item.folderId = json.delete(:folderId)
19
+ item.folderUuid = json.delete(:folderUuid)
20
+ item.folderPath = json.delete(:folderPath)
21
+ item.view = json.delete(:view)
22
+ item.rights = json.delete(:rights)
23
+ item.granteeType = json.delete(:granteeType)
24
+ item.granteeId = json.delete(:granteeId)
25
+ item.granteeName = json.delete(:granteeName)
26
+ item.mid = json.delete(:mid)
26
27
 
27
28
  item
28
29
  end
@@ -10,7 +10,7 @@ module Zm
10
10
 
11
11
  def new
12
12
  MountPoint.new(@share.parent) do |mp|
13
- mp.l = FolderDefault::ROOT[:id]
13
+ mp.l = FolderDefault::ROOT.id
14
14
  mp.name = default_mountpoint_name
15
15
  mp.zid = @share.ownerId
16
16
  mp.rid = @share.folderId
@@ -19,12 +19,9 @@ module Zm
19
19
  end
20
20
 
21
21
  def all
22
- @all || all!
23
- end
24
-
25
- def all!
26
- @all = @share.parent.mountpoints.all.select { |mp| mp.zid == @share.ownerId && mp.rid == @share.folderId }
22
+ @share.parent.mountpoints.all.select { |mp| mp.zid == @share.ownerId && mp.rid == @share.folderId }
27
23
  end
24
+ alias all! all
28
25
 
29
26
  private
30
27
 
@@ -5,7 +5,7 @@ module Zm
5
5
  # class factory [shares]
6
6
  class ShareBuilder < Base::ObjectsBuilder
7
7
  def initialize(parent, json)
8
- super(parent, json)
8
+ super
9
9
  @json_item_key = :share
10
10
  end
11
11
 
@@ -21,14 +21,17 @@ module Zm
21
21
  end
22
22
 
23
23
  def share_response
24
- soap_request = SoapElement.account(SoapAccountConstants::GET_SHARE_INFO_REQUEST).add_attributes({ includeSelf: 0 })
24
+ soap_request = SoapElement.account(SoapAccountConstants::GET_SHARE_INFO_REQUEST)
25
+ .add_attributes({ includeSelf: SoapUtils::OFF })
25
26
 
26
27
  unless @owner_name.nil?
27
- node_owner = SoapElement.create('owner').add_attributes({ by: :name }).add_content(@owner_name)
28
+ node_owner = SoapElement.create('owner')
29
+ .add_attributes({ by: :name })
30
+ .add_content(@owner_name)
28
31
  soap_request.add_node(node_owner)
29
32
  end
30
33
 
31
- @parent.sacc.invoke(soap_request)
34
+ @parent.soap_connector.invoke(soap_request)
32
35
  end
33
36
 
34
37
  def share_builder
@@ -4,36 +4,19 @@ module Zm
4
4
  module Client
5
5
  # class account signature
6
6
  class Signature < Base::Object
7
+ include RequestMethodsMailbox
8
+
7
9
  attr_accessor :id, :name, :txt, :html
8
10
 
9
11
  def create!
10
- rep = @parent.sacc.invoke(jsns_builder.to_jsns)
12
+ rep = @parent.soap_connector.invoke(build_create)
11
13
  @id = rep[:CreateSignatureResponse][:signature].first[:id]
12
14
  end
13
15
 
14
- def modify!
15
- @parent.sacc.invoke(jsns_builder.to_update)
16
- true
17
- end
18
-
19
16
  def update!(*args)
20
17
  raise NotImplementedError
21
18
  end
22
19
 
23
- def rename!(new_name)
24
- return if new_name == @name
25
-
26
- @parent.sacc.invoke(jsns_builder.to_rename(new_name))
27
- @name = new_name
28
- end
29
-
30
- def delete!
31
- return false if @id.nil?
32
-
33
- @parent.sacc.invoke(jsns_builder.to_delete)
34
- @id = nil
35
- end
36
-
37
20
  def type
38
21
  return ContentType::HTML unless html.nil?
39
22
 
@@ -55,7 +38,9 @@ module Zm
55
38
  private
56
39
 
57
40
  def jsns_builder
58
- @jsns_builder ||= SignatureJsnsBuilder.new(self)
41
+ return @jsns_builder if defined? @jsns_builder
42
+
43
+ @jsns_builder = SignatureJsnsBuilder.new(self)
59
44
  end
60
45
  end
61
46
  end
@@ -10,20 +10,24 @@ module Zm
10
10
 
11
11
  def to_jsns
12
12
  soap_request = SoapElement.account(SoapAccountConstants::CREATE_SIGNATURE_REQUEST)
13
- node_signature = SoapElement.create(SoapConstants::SIGNATURE).add_attributes({ name: @signature.name })
13
+ node_signature = SoapElement.create(SoapConstants::SIGNATURE)
14
+ .add_attributes({ name: @signature.name })
14
15
  soap_request.add_node(node_signature)
15
- node_content = SoapElement.create(SoapConstants::CONTENT).add_attribute(SoapConstants::TYPE,
16
- @signature.type).add_content(@signature.content)
16
+ node_content = SoapElement.create(SoapConstants::CONTENT)
17
+ .add_attribute(SoapConstants::TYPE, @signature.type)
18
+ .add_content(@signature.content)
17
19
  node_signature.add_node(node_content)
18
20
  soap_request
19
21
  end
20
22
 
21
23
  def to_update
22
24
  soap_request = SoapElement.account(SoapAccountConstants::MODIFY_SIGNATURE_REQUEST)
23
- node_signature = SoapElement.create(SoapConstants::SIGNATURE).add_attributes({ name: @signature.name, id: @signature.id })
25
+ node_signature = SoapElement.create(SoapConstants::SIGNATURE)
26
+ .add_attributes({ name: @signature.name, id: @signature.id })
24
27
  soap_request.add_node(node_signature)
25
- node_content = SoapElement.create(SoapConstants::CONTENT).add_attribute(SoapConstants::TYPE,
26
- @signature.type).add_content(@signature.content)
28
+ node_content = SoapElement.create(SoapConstants::CONTENT)
29
+ .add_attribute(SoapConstants::TYPE, @signature.type)
30
+ .add_content(@signature.content)
27
31
  node_signature.add_node(node_content)
28
32
  soap_request
29
33
  end
@@ -42,7 +46,8 @@ module Zm
42
46
 
43
47
  def to_delete
44
48
  soap_request = SoapElement.account(SoapAccountConstants::DELETE_SIGNATURE_REQUEST)
45
- node_signature = SoapElement.create(SoapConstants::SIGNATURE).add_attribute(SoapConstants::ID, @signature.id)
49
+ node_signature = SoapElement.create(SoapConstants::SIGNATURE)
50
+ .add_attribute(SoapConstants::ID, @signature.id)
46
51
  soap_request.add_node(node_signature)
47
52
  soap_request
48
53
  end
@@ -6,13 +6,14 @@ module Zm
6
6
  class SignatureJsnsInitializer
7
7
  class << self
8
8
  def create(parent, json)
9
- item = Signature.new(parent)
10
- update(item, json)
9
+ Signature.new(parent).tap do |item|
10
+ update(item, json)
11
+ end
11
12
  end
12
13
 
13
14
  def update(item, json)
14
- item.id = json[:id]
15
- item.name = json[:name]
15
+ item.id = json.delete(:id)
16
+ item.name = json.delete(:name)
16
17
 
17
18
  content = json[:content].is_a?(Array) ? json[:content] : [json[:content]]
18
19
 
@@ -5,7 +5,7 @@ module Zm
5
5
  # class factory [signatures]
6
6
  class SignaturesBuilder < Base::ObjectsBuilder
7
7
  def initialize(parent, json)
8
- super(parent, json)
8
+ super
9
9
  @json_item_key = :signature
10
10
  end
11
11
 
@@ -7,14 +7,15 @@ module Zm
7
7
  def initialize(parent)
8
8
  @child_class = Signature
9
9
  @builder_class = SignaturesBuilder
10
- super(parent)
10
+ super
11
11
  end
12
12
 
13
- private
14
-
15
13
  def make_query
16
- soap_request = SoapElement.account(SoapAccountConstants::GET_SIGNATURES_REQUEST)
17
- @parent.sacc.invoke(soap_request)
14
+ @parent.soap_connector.invoke(build_query)
15
+ end
16
+
17
+ def build_query
18
+ SoapElement.account(SoapAccountConstants::GET_SIGNATURES_REQUEST)
18
19
  end
19
20
  end
20
21
  end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ module RequestMethodsAdmin
6
+ def delete!
7
+ sac.invoke(build_delete)
8
+ @id = nil
9
+ end
10
+
11
+ def build_delete
12
+ jsns_builder.to_delete
13
+ end
14
+
15
+ def modify!
16
+ sac.invoke(build_modify)
17
+ true
18
+ end
19
+
20
+ def build_modify
21
+ jsns_builder.to_update
22
+ end
23
+
24
+ def build_create
25
+ jsns_builder.to_create
26
+ end
27
+
28
+ def update!(hash)
29
+ return false if hash.delete_if { |k, v| v.nil? || !respond_to?(k) }.empty?
30
+
31
+ do_update!(hash)
32
+
33
+ hash.each do |key, value|
34
+ update_attribute(key, value)
35
+ end
36
+
37
+ true
38
+ end
39
+
40
+ def rename!(new_name)
41
+ sac.invoke(build_rename(new_name))
42
+ @name = new_name
43
+ end
44
+
45
+ def build_rename(new_name)
46
+ jsns_builder.to_rename(new_name)
47
+ end
48
+
49
+ private
50
+
51
+ def do_update!(hash)
52
+ sac.invoke(jsns_builder.to_patch(hash))
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ module RequestMethodsMailbox
6
+ def build_create
7
+ jsns_builder.to_jsns
8
+ end
9
+
10
+ def modify!
11
+ @parent.soap_connector.invoke(build_modify)
12
+ true
13
+ end
14
+
15
+ def build_modify
16
+ jsns_builder.to_update
17
+ end
18
+
19
+ def update!(hash)
20
+ return false if hash.delete_if { |k, v| v.nil? || !respond_to?(k) }.empty?
21
+
22
+ do_update!(hash)
23
+
24
+ hash.each do |key, value|
25
+ update_attribute(key, value)
26
+ end
27
+
28
+ true
29
+ end
30
+
31
+ def rename!(new_name)
32
+ return false if new_name == @name
33
+
34
+ @parent.soap_connector.invoke(build_rename(new_name))
35
+ @name = new_name
36
+ end
37
+
38
+ def build_rename(new_name)
39
+ jsns_builder.to_rename(new_name)
40
+ end
41
+
42
+ def delete!
43
+ return false if id.nil?
44
+
45
+ @parent.soap_connector.invoke(build_delete)
46
+ # remove_instance_variable(:id)
47
+ end
48
+
49
+ def build_delete
50
+ jsns_builder.to_delete
51
+ end
52
+
53
+ private
54
+
55
+ def do_update!(hash)
56
+ @parent.soap_connector.invoke(jsns_builder.to_patch(hash))
57
+ end
58
+ end
59
+ end
60
+ end
@@ -6,6 +6,7 @@ module Zm
6
6
  BY = 'by'
7
7
  ID = 'id'
8
8
  NAME = 'name'
9
+ EXPIRES = 'expires'
9
10
  A = 'a'
10
11
  N = 'n'
11
12
  TRUE = 'TRUE'
@@ -20,6 +21,7 @@ module Zm
20
21
  SERVER = 'server'
21
22
  COS = 'cos'
22
23
  DL = 'dl'
24
+ DLM = 'dlm'
23
25
  DOMAIN = 'domain'
24
26
  CAL_RESOURCE = 'calresource'
25
27
 
@@ -35,6 +37,7 @@ module Zm
35
37
  CONTENT = 'content'
36
38
 
37
39
  APPOINTMENT = 'appointment'
40
+ CONTACT = 'contact'
38
41
  DOCUMENT = 'document'
39
42
  MESSAGE = 'message'
40
43
  TAG = 'tag'
@@ -50,6 +53,10 @@ module Zm
50
53
  SMTP = 'smtp'
51
54
 
52
55
  TEXT_CALENDAR = 'text/calendar'
56
+ CSV = 'csv'
57
+
58
+ NAMESPACE_STR = 'urn:zimbra'
59
+ BATCH_REQUEST = 'BatchRequest'
53
60
  end
54
61
  end
55
62
  end
@@ -9,6 +9,7 @@ module Zm
9
9
  @token = nil
10
10
  @user_agent = 'zmsoap'
11
11
  @target_server = nil
12
+ @account = nil
12
13
  end
13
14
 
14
15
  def token(str)
@@ -26,12 +27,20 @@ module Zm
26
27
  self
27
28
  end
28
29
 
30
+ def account(by, value)
31
+ @account = { by: by, _content: value }
32
+ self
33
+ end
34
+
29
35
  def to_hash
30
- {
36
+ h = {
31
37
  authToken: @token,
32
38
  userAgent: { name: @user_agent },
39
+ account: @account,
33
40
  targetServer: @target_server
34
- }.delete_if { |_, v| v.nil? }
41
+ }
42
+ h.compact!
43
+ h
35
44
  end
36
45
  end
37
46
  end
@@ -6,3 +6,6 @@ require 'zm/client/soap_request/account_soap_constants'
6
6
  require 'zm/client/soap_request/mail_soap_constants'
7
7
  require 'zm/client/soap_request/soap_constants'
8
8
  require 'zm/client/soap_request/soap_element'
9
+
10
+ require 'zm/client/soap_request/request_methods_admin'
11
+ require 'zm/client/soap_request/request_methods_mailbox'