zm-ruby-client 0.18.3 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/Gemfile +2 -2
  4. data/README.md +7 -0
  5. data/lib/zm/client/account/account.rb +31 -319
  6. data/lib/zm/client/account/account_aliases_collection.rb +52 -0
  7. data/lib/zm/client/account/account_dls_membership_collection.rb +4 -1
  8. data/lib/zm/client/account/account_dls_owner_collection.rb +8 -1
  9. data/lib/zm/client/account/account_jsns_builder.rb +77 -0
  10. data/lib/zm/client/account/account_jsns_initializer.rb +9 -24
  11. data/lib/zm/client/account/accounts_builder.rb +0 -1
  12. data/lib/zm/client/account/accounts_collection.rb +32 -8
  13. data/lib/zm/client/account.rb +1 -0
  14. data/lib/zm/client/ace/ace.rb +6 -22
  15. data/lib/zm/client/ace/ace_jsns_builder.rb +15 -16
  16. data/lib/zm/client/ace/ace_jsns_initializer.rb +0 -1
  17. data/lib/zm/client/ace/aces_builder.rb +0 -1
  18. data/lib/zm/client/ace/aces_collection.rb +2 -18
  19. data/lib/zm/client/appointment/appointment.rb +38 -30
  20. data/lib/zm/client/appointment/appointment_jsns_builder.rb +22 -34
  21. data/lib/zm/client/appointment/appointment_jsns_initializer.rb +6 -3
  22. data/lib/zm/client/appointment/appointments_builder.rb +6 -18
  23. data/lib/zm/client/appointment/appointments_collection.rb +25 -4
  24. data/lib/zm/client/backup/backup.rb +4 -32
  25. data/lib/zm/client/backup/backup_jsns_initializer.rb +26 -0
  26. data/lib/zm/client/backup/backups_builder.rb +8 -13
  27. data/lib/zm/client/backup/backups_collection.rb +2 -1
  28. data/lib/zm/client/backup.rb +1 -0
  29. data/lib/zm/client/base/account_search_objects_collection.rb +34 -13
  30. data/lib/zm/client/base/admin_objects_collection.rb +82 -17
  31. data/lib/zm/client/base/base_account_jsns_builder.rb +98 -0
  32. data/lib/zm/client/base/base_jsns_builder.rb +47 -0
  33. data/lib/zm/client/base/base_jsns_initializer.rb +43 -12
  34. data/lib/zm/client/base/ldap_filter.rb +20 -5
  35. data/lib/zm/client/base/mailbox_infos_collection.rb +88 -0
  36. data/lib/zm/client/base/mailbox_object.rb +299 -0
  37. data/lib/zm/client/base/mailbox_prefs_collection.rb +75 -0
  38. data/lib/zm/client/base/object.rb +28 -62
  39. data/lib/zm/client/base/objects_builder.rb +4 -10
  40. data/lib/zm/client/base/objects_collection.rb +13 -10
  41. data/lib/zm/client/base/zimbra_attribute.rb +10 -8
  42. data/lib/zm/client/base/zimbra_attributes_collection.rb +154 -10
  43. data/lib/zm/client/base.rb +5 -5
  44. data/lib/zm/client/cluster/cluster.rb +43 -39
  45. data/lib/zm/client/cluster/cluster_config.rb +5 -5
  46. data/lib/zm/client/common/recipients.rb +3 -3
  47. data/lib/zm/client/common/token_metadata.rb +4 -1
  48. data/lib/zm/client/common/utils.rb +57 -0
  49. data/lib/zm/client/common.rb +2 -1
  50. data/lib/zm/client/connector/rest_account.rb +14 -4
  51. data/lib/zm/client/connector/soap_account.rb +38 -441
  52. data/lib/zm/client/connector/soap_admin.rb +16 -552
  53. data/lib/zm/client/connector/soap_base.rb +25 -5
  54. data/lib/zm/client/connector/soap_error.rb +1 -3
  55. data/lib/zm/client/constant.rb +21 -11
  56. data/lib/zm/client/contact/contact.rb +42 -83
  57. data/lib/zm/client/contact/contact_jsns_builder.rb +60 -0
  58. data/lib/zm/client/contact/contact_jsns_initializer.rb +78 -0
  59. data/lib/zm/client/contact/contact_member.rb +29 -28
  60. data/lib/zm/client/contact/contact_members_collection.rb +44 -0
  61. data/lib/zm/client/contact/contacts_builder.rb +8 -1
  62. data/lib/zm/client/contact/contacts_collection.rb +17 -1
  63. data/lib/zm/client/contact/group_contact_jsns_builder.rb +51 -0
  64. data/lib/zm/client/contact/mod_group_contact.rb +4 -67
  65. data/lib/zm/client/contact.rb +5 -1
  66. data/lib/zm/client/cos/cos.rb +35 -40
  67. data/lib/zm/client/cos/cos_accounts_collection.rb +19 -0
  68. data/lib/zm/client/cos/cos_domains_collection.rb +20 -0
  69. data/lib/zm/client/cos/cos_jsns_builder.rb +72 -0
  70. data/lib/zm/client/cos/cos_jsns_initializer.rb +29 -0
  71. data/lib/zm/client/cos/cos_servers_collection.rb +60 -0
  72. data/lib/zm/client/cos/coses_builder.rb +8 -1
  73. data/lib/zm/client/cos/coses_collection.rb +8 -5
  74. data/lib/zm/client/cos.rb +5 -0
  75. data/lib/zm/client/datasource/datasource.rb +69 -0
  76. data/lib/zm/client/datasource/datasource_jsns_builder.rb +32 -0
  77. data/lib/zm/client/datasource/datasource_jsns_initializer.rb +27 -0
  78. data/lib/zm/client/datasource/datasources_builder.rb +29 -0
  79. data/lib/zm/client/datasource/datasources_collection.rb +21 -0
  80. data/lib/zm/client/datasource.rb +7 -0
  81. data/lib/zm/client/distributionlist/distributionlist.rb +52 -118
  82. data/lib/zm/client/distributionlist/distributionlist_aces_collection.rb +31 -0
  83. data/lib/zm/client/distributionlist/distributionlist_aliases_collection.rb +53 -0
  84. data/lib/zm/client/distributionlist/distributionlist_jsns_builder.rb +82 -0
  85. data/lib/zm/client/distributionlist/distributionlist_jsns_initializer.rb +32 -0
  86. data/lib/zm/client/distributionlist/distributionlist_members_collection.rb +47 -0
  87. data/lib/zm/client/distributionlist/distributionlist_owners_collection.rb +52 -0
  88. data/lib/zm/client/distributionlist/distributionlists_builder.rb +8 -1
  89. data/lib/zm/client/distributionlist/distributionlists_collection.rb +8 -9
  90. data/lib/zm/client/distributionlist/dls_membership_collection.rb +4 -1
  91. data/lib/zm/client/distributionlist.rb +2 -0
  92. data/lib/zm/client/document/document.rb +27 -24
  93. data/lib/zm/client/document/document_jsns_builder.rb +18 -0
  94. data/lib/zm/client/document/document_jsns_initializer.rb +44 -0
  95. data/lib/zm/client/document/documents_builder.rb +6 -16
  96. data/lib/zm/client/document/documents_collection.rb +17 -67
  97. data/lib/zm/client/document.rb +2 -0
  98. data/lib/zm/client/domain/domain.rb +45 -68
  99. data/lib/zm/client/domain/domain_accounts_collection.rb +1 -1
  100. data/lib/zm/client/domain/domain_distributionlists_collection.rb +13 -0
  101. data/lib/zm/client/domain/domain_jsns_builder.rb +69 -0
  102. data/lib/zm/client/domain/domain_jsns_initializer.rb +25 -0
  103. data/lib/zm/client/domain/domain_resources_collection.rb +13 -0
  104. data/lib/zm/client/domain/domains_builder.rb +8 -1
  105. data/lib/zm/client/domain/domains_collection.rb +7 -7
  106. data/lib/zm/client/domain.rb +4 -0
  107. data/lib/zm/client/filter_rule.rb +7 -0
  108. data/lib/zm/client/filter_rules/filter_rule.rb +10 -0
  109. data/lib/zm/client/filter_rules/filter_rule_jsns_initializer.rb +24 -0
  110. data/lib/zm/client/filter_rules/filter_rules_builder.rb +21 -0
  111. data/lib/zm/client/filter_rules/filter_rules_collection.rb +21 -0
  112. data/lib/zm/client/filter_rules/outgoing_filter_rules_collection.rb +15 -0
  113. data/lib/zm/client/folder/folder.rb +77 -61
  114. data/lib/zm/client/folder/folder_grant.rb +34 -14
  115. data/lib/zm/client/folder/folder_grant_jsns_builder.rb +15 -4
  116. data/lib/zm/client/folder/folder_grants_collection.rb +36 -2
  117. data/lib/zm/client/folder/folder_jsns_builder.rb +22 -48
  118. data/lib/zm/client/folder/folder_jsns_initializer.rb +34 -17
  119. data/lib/zm/client/folder/folder_retention_policies_collection.rb +2 -3
  120. data/lib/zm/client/folder/folder_retention_policy.rb +0 -1
  121. data/lib/zm/client/folder/folders_builder.rb +7 -10
  122. data/lib/zm/client/folder/folders_collection.rb +5 -2
  123. data/lib/zm/client/folder/folders_jsns_builder.rb +3 -1
  124. data/lib/zm/client/folder/mod_document_folder.rb +10 -6
  125. data/lib/zm/client/folder.rb +1 -1
  126. data/lib/zm/client/identity/identities_builder.rb +8 -1
  127. data/lib/zm/client/identity/identities_collection.rb +2 -1
  128. data/lib/zm/client/identity/identity.rb +34 -42
  129. data/lib/zm/client/identity/identity_jsns_builder.rb +57 -0
  130. data/lib/zm/client/identity/identity_jsns_initializer.rb +29 -0
  131. data/lib/zm/client/identity.rb +3 -1
  132. data/lib/zm/client/license/license.rb +9 -22
  133. data/lib/zm/client/license/license_jsns_initializer.rb +20 -0
  134. data/lib/zm/client/license/licenses_collection.rb +3 -13
  135. data/lib/zm/client/license.rb +2 -1
  136. data/lib/zm/client/message/attachments_collection.rb +55 -0
  137. data/lib/zm/client/message/message.rb +36 -264
  138. data/lib/zm/client/message/message_flags.rb +107 -0
  139. data/lib/zm/client/message/message_jsns_builder.rb +85 -0
  140. data/lib/zm/client/message/message_jsns_initializer.rb +71 -0
  141. data/lib/zm/client/message/message_recipients.rb +59 -0
  142. data/lib/zm/client/message/messages_builder.rb +7 -18
  143. data/lib/zm/client/message/messages_collection.rb +17 -2
  144. data/lib/zm/client/message.rb +5 -0
  145. data/lib/zm/client/mountpoint/mountpoint.rb +43 -21
  146. data/lib/zm/client/mountpoint/mountpoint_jsns_builder.rb +8 -53
  147. data/lib/zm/client/mountpoint/mountpoint_jsns_initializer.rb +22 -13
  148. data/lib/zm/client/mountpoint/mountpoints_builder.rb +4 -5
  149. data/lib/zm/client/mountpoint/mountpoints_collection.rb +1 -2
  150. data/lib/zm/client/mta_queue/mta_queue.rb +13 -28
  151. data/lib/zm/client/mta_queue/mta_queue_jsns_builder.rb +41 -0
  152. data/lib/zm/client/mta_queue/mta_queue_jsns_initializer.rb +23 -0
  153. data/lib/zm/client/mta_queue/mta_queues_builder.rb +4 -8
  154. data/lib/zm/client/mta_queue/mta_queues_collection.rb +8 -27
  155. data/lib/zm/client/mta_queue.rb +2 -0
  156. data/lib/zm/client/mta_queue_item/mta_queue_item.rb +4 -31
  157. data/lib/zm/client/mta_queue_item/mta_queue_item_jsns_initializer.rb +33 -0
  158. data/lib/zm/client/mta_queue_item/mta_queue_items_builder.rb +4 -9
  159. data/lib/zm/client/mta_queue_item/mta_queue_items_collection.rb +7 -42
  160. data/lib/zm/client/mta_queue_item.rb +2 -1
  161. data/lib/zm/client/resource/resource.rb +24 -91
  162. data/lib/zm/client/resource/resource_jsns_builder.rb +79 -0
  163. data/lib/zm/client/resource/resource_jsns_initializer.rb +29 -0
  164. data/lib/zm/client/resource/resources_builder.rb +8 -1
  165. data/lib/zm/client/resource/resources_collection.rb +9 -7
  166. data/lib/zm/client/resource.rb +2 -0
  167. data/lib/zm/client/search_folder/search_folder.rb +38 -16
  168. data/lib/zm/client/search_folder/search_folder_jsns_builder.rb +38 -19
  169. data/lib/zm/client/search_folder/search_folder_jsns_initializer.rb +17 -13
  170. data/lib/zm/client/search_folder/search_folders_builder.rb +0 -1
  171. data/lib/zm/client/search_folder/search_folders_collection.rb +2 -1
  172. data/lib/zm/client/server/server.rb +16 -488
  173. data/lib/zm/client/server/server_jsns_initializer.rb +16 -0
  174. data/lib/zm/client/server/servers_builder.rb +8 -1
  175. data/lib/zm/client/server/servers_collection.rb +13 -5
  176. data/lib/zm/client/server.rb +1 -0
  177. data/lib/zm/client/share/share.rb +5 -43
  178. data/lib/zm/client/share/share_jsns_initializer.rb +32 -0
  179. data/lib/zm/client/share/share_mountpoints_collection.rb +38 -0
  180. data/lib/zm/client/share/shares_builder.rb +8 -1
  181. data/lib/zm/client/share/shares_collection.rb +11 -16
  182. data/lib/zm/client/share.rb +2 -0
  183. data/lib/zm/client/signature/signature.rb +25 -29
  184. data/lib/zm/client/signature/signature_jsns_builder.rb +31 -13
  185. data/lib/zm/client/signature/signature_jsns_initializer.rb +16 -12
  186. data/lib/zm/client/signature/signatures_builder.rb +1 -2
  187. data/lib/zm/client/signature/signatures_collection.rb +2 -1
  188. data/lib/zm/client/signature.rb +1 -1
  189. data/lib/zm/client/soap_request/account_soap_constants.rb +76 -0
  190. data/lib/zm/client/soap_request/admin_soap_constants.rb +214 -0
  191. data/lib/zm/client/soap_request/mail_soap_constants.rb +162 -0
  192. data/lib/zm/client/soap_request/soap_constants.rb +55 -0
  193. data/lib/zm/client/soap_request/soap_context.rb +38 -0
  194. data/lib/zm/client/soap_request/soap_element.rb +90 -0
  195. data/lib/zm/client/soap_request.rb +8 -0
  196. data/lib/zm/client/tag/account_object_tags_collection.rb +65 -0
  197. data/lib/zm/client/tag/tag.rb +34 -22
  198. data/lib/zm/client/tag/tag_jsns_builder.rb +14 -35
  199. data/lib/zm/client/tag/tag_jsns_initializer.rb +4 -6
  200. data/lib/zm/client/tag/tags_builder.rb +0 -1
  201. data/lib/zm/client/tag/tags_collection.rb +2 -1
  202. data/lib/zm/client/tag.rb +1 -0
  203. data/lib/zm/client/task/task.rb +18 -49
  204. data/lib/zm/client/task/task_jsns_initializer.rb +45 -0
  205. data/lib/zm/client/task/tasks_builder.rb +6 -16
  206. data/lib/zm/client/task/tasks_collection.rb +29 -0
  207. data/lib/zm/client/task.rb +1 -0
  208. data/lib/zm/client/upload/upload.rb +26 -30
  209. data/lib/zm/client/version.rb +3 -3
  210. data/lib/zm/client.rb +4 -1
  211. data/lib/zm/modules/base.rb +10 -0
  212. data/lib/zm/modules/belongs_to_folder.rb +37 -0
  213. data/lib/zm/modules/belongs_to_tag.rb +11 -0
  214. data/lib/zm/modules/common/zimbra-attrs.json +33 -1
  215. data/lib/zm/modules/has_soap_admin_connector.rb +12 -0
  216. data/lib/zm/modules/inspector.rb +24 -0
  217. data/lib/zm/modules/missing_method_static_collection.rb +13 -0
  218. data/lib/zm/modules/zm_logger.rb +3 -1
  219. data/lib/zm/modules/zm_model.rb +4 -2
  220. data/lib/zm/utils/thread_pool.rb +4 -2
  221. data/lib/zm-ruby-client.rb +2 -0
  222. data/zm-ruby-client.gemspec +12 -9
  223. metadata +93 -34
  224. data/lib/zm/client/base/account_object.rb +0 -51
  225. data/lib/zm/client/base/admin_object.rb +0 -51
  226. data/lib/zm/client/base/folder_object.rb +0 -41
  227. data/lib/zm/client/config.rb +0 -12
  228. data/lib/zm/client/data_source.rb +0 -5
  229. data/lib/zm/modules/common/account_common.rb +0 -71
  230. data/lib/zm/modules/common/cos_common.rb +0 -463
  231. data/lib/zm/modules/common/dl_common.rb +0 -38
  232. data/lib/zm/modules/common/identity_common.rb +0 -19
  233. data/lib/zm/modules/common/resource_common.rb +0 -59
  234. data/lib/zm/modules/common/signature_common.rb +0 -16
  235. data/lib/zm/modules/common/zimbra-attrs.json.bak +0 -1
  236. data/test/accounts.rb +0 -89
  237. data/test/ace.rb +0 -50
  238. data/test/cluster.rb +0 -41
  239. data/test/cluster_config.rb +0 -30
  240. data/test/cluster_zimbra_attributes.rb +0 -38
  241. data/test/coses.rb +0 -26
  242. data/test/domains.rb +0 -70
  243. data/test/folder.rb +0 -125
  244. data/test/folder_grant.rb +0 -51
  245. data/test/mountpoint.rb +0 -49
  246. data/test/retention_policies.rb +0 -40
  247. data/test/search_folder.rb +0 -67
  248. data/test/signature.rb +0 -53
  249. data/test/tag.rb +0 -65
  250. data/test/zimbra_attributes.rb +0 -35
@@ -11,19 +11,43 @@ module Zm
11
11
  super(parent)
12
12
  end
13
13
 
14
- def find_by(hash)
15
- rep = sac.get_account(hash.values.first, hash.keys.first, attrs_comma, @apply_cos)
16
- entry = rep[:Body][:GetAccountResponse][:account].first
17
- # puts entry
14
+ def find_by!(hash)
15
+ soap_request = SoapElement.admin(SoapAdminConstants::GET_ACCOUNT_REQUEST)
16
+ node_account = SoapElement.create(SoapConstants::ACCOUNT).add_attribute(SoapConstants::BY, hash.keys.first).add_content(hash.values.first)
17
+ soap_request.add_node(node_account)
18
+ soap_request.add_attribute(SoapConstants::ATTRS, attrs_comma)
19
+ soap_request.add_attribute(SoapConstants::APPLY_COS, @apply_cos)
20
+ entry = sac.invoke(soap_request)[:GetAccountResponse][:account].first
18
21
 
19
22
  reset_query_params
20
- build_from_entry(entry)
23
+ AccountJsnsInitializer.create(@parent, entry)
21
24
  end
22
25
 
23
- def quotas
24
- return nil if @domain_name.nil? && @target_server_id.nil?
26
+ def quotas(domain_name: @domain_name, target_server_id: @target_server_id)
27
+ return nil if domain_name.nil? && target_server_id.nil?
28
+
29
+ if target_server_id.nil?
30
+ @all_servers = SoapUtils::ON
31
+ else
32
+ sac.context.target_server(target_server_id)
33
+ end
34
+
35
+ jsns = {
36
+ domain: domain_name,
37
+ allServers: @all_servers,
38
+ limit: @limit,
39
+ offset: @offset,
40
+ sortBy: @sort_by,
41
+ sortAscending: @sort_ascending,
42
+ refresh: @refresh
43
+ }.delete_if { |_, value| value.nil? }
44
+
45
+ soap_request = SoapElement.admin(SoapAdminConstants::GET_QUOTA_USAGE_REQUEST)
46
+ soap_request.add_attributes(jsns)
47
+ json = sac.invoke(soap_request)
48
+
49
+ sac.context.target_server(nil) unless target_server_id.nil?
25
50
 
26
- json = sac.get_quota_usage(@domain_name, @all_servers, @limit, @offset, @sort_by, @sort_ascending, @refresh, @target_server_id)
27
51
  reset_query_params
28
52
  @builder_class.new(@parent, json).make
29
53
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'zm/client/account/account'
4
4
  require 'zm/client/account/account_jsns_initializer'
5
+ require 'zm/client/account/account_jsns_builder'
5
6
  require 'zm/client/account/accounts_builder'
6
7
  require 'zm/client/account/accounts_collection'
7
8
  require 'zm/client/account/account_dls_membership_collection'
@@ -3,26 +3,19 @@
3
3
  module Zm
4
4
  module Client
5
5
  # class account ace
6
- class Ace < Base::AccountObject
7
-
8
- INSTANCE_VARIABLE_KEYS = %i[zid gt right d]
9
-
10
- attr_accessor *INSTANCE_VARIABLE_KEYS
11
-
12
- def all_instance_variable_keys
13
- INSTANCE_VARIABLE_KEYS
14
- end
6
+ class Ace < Base::Object
7
+ attr_accessor :zid, :gt, :right, :d
15
8
 
16
9
  def create!
17
- rep = @parent.sacc.grant_rights(get_token, jsns_builder.to_jsns)
18
- json = rep[:Body][:GrantRightsResponse][:ace].first if rep[:Body][:GrantRightsResponse][:ace].is_a?(Array)
10
+ rep = @parent.sacc.invoke(jsns_builder.to_jsns)
11
+
12
+ json = rep[:GrantRightsResponse][:ace].first if rep[:GrantRightsResponse][:ace].is_a?(Array)
19
13
  AceJsnsInitializer.update(self, json) unless json.nil?
20
14
  true
21
15
  end
22
16
 
23
17
  def delete!
24
- @parent.sacc.revoke_rights(get_token, jsns_builder.to_delete)
25
- @parent.all.delete(self)
18
+ @parent.sacc.invoke(jsns_builder.to_delete)
26
19
  true
27
20
  end
28
21
 
@@ -31,15 +24,6 @@ module Zm
31
24
  def jsns_builder
32
25
  @jsns_builder ||= AceJsnsBuilder.new(self)
33
26
  end
34
-
35
- def get_token(target = self)
36
- token = nil
37
- return target.token if target.respond_to?(:token) && !target.token.nil?
38
-
39
- token = get_token(target.parent) if target.respond_to?(:parent)
40
-
41
- token
42
- end
43
27
  end
44
28
  end
45
29
  end
@@ -2,36 +2,35 @@
2
2
 
3
3
  module Zm
4
4
  module Client
5
- # class for account folder jsns builder
5
+ # class for account ace jsns builder
6
6
  class AceJsnsBuilder < Base::BaseJsnsBuilder
7
-
8
7
  def to_find
9
- return nil if @item.rights.empty?
8
+ soap_request = SoapElement.account(SoapAccountConstants::GET_RIGHTS_REQUEST)
9
+
10
+ soap_request.add_attribute(SoapConstants::ACE, @item.rights.map { |r| { right: r } }) unless @item.rights.empty?
10
11
 
11
- ace = @item.rights.map { |r| { right: r } }
12
- { ace: ace }
12
+ soap_request
13
13
  end
14
14
 
15
15
  def to_jsns
16
- ace = {
17
- zid: @item.zid,
18
- gt: @item.gt,
19
- right: @item.right,
20
- d: @item.d
21
- }.reject { |_, v| v.nil? }
22
-
23
- { ace: ace }
16
+ soap_request = SoapElement.account(SoapAccountConstants::GRANT_RIGHTS_REQUEST)
17
+ soap_request.add_attribute(SoapConstants::ACE, attrs)
18
+ soap_request
24
19
  end
25
20
 
26
21
  def to_delete
27
- ace = {
22
+ soap_request = SoapElement.account(SoapAccountConstants::REVOKE_RIGHTS_REQUEST)
23
+ soap_request.add_attribute(SoapConstants::ACE, attrs)
24
+ soap_request
25
+ end
26
+
27
+ def attrs
28
+ {
28
29
  zid: @item.zid,
29
30
  gt: @item.gt,
30
31
  right: @item.right,
31
32
  d: @item.d
32
33
  }.reject { |_, v| v.nil? }
33
-
34
- { ace: ace }
35
34
  end
36
35
  end
37
36
  end
@@ -12,7 +12,6 @@ module Zm
12
12
  end
13
13
 
14
14
  def update(item, json)
15
-
16
15
  item.instance_variable_set(:@zid, json[:zid])
17
16
  item.instance_variable_set(:@gt, json[:gt])
18
17
  item.instance_variable_set(:@right, json[:right])
@@ -6,7 +6,6 @@ module Zm
6
6
  class AcesBuilder < Base::ObjectsBuilder
7
7
  def initialize(parent, json)
8
8
  super(parent, json)
9
- @child_class = Ace
10
9
  @json_item_key = :ace
11
10
  end
12
11
 
@@ -8,41 +8,25 @@ module Zm
8
8
 
9
9
  def initialize(parent)
10
10
  super(parent)
11
+ @child_class = Ace
11
12
  @builder_class = AcesBuilder
12
13
  @jsns_builder = AceJsnsBuilder.new(self)
13
14
  reset_query_params
14
15
  end
15
16
 
16
- def new
17
- ace = Ace.new(self)
18
- yield(ace) if block_given?
19
- ace
20
- end
21
-
22
17
  def where(*rights)
23
18
  @rights += rights
24
19
  @rights.uniq!
25
20
  self
26
21
  end
27
22
 
28
- def soap_account_connector
29
- @parent.soap_account_connector
30
- end
31
-
32
- alias sacc soap_account_connector
33
-
34
23
  private
35
24
 
36
25
  def make_query
37
- @parent.sacc.get_rights(@parent.token, @jsns_builder.to_find)
38
- end
39
-
40
- def build_response
41
- @builder_class.new(self, make_query).make
26
+ @parent.sacc.invoke(@jsns_builder.to_find)
42
27
  end
43
28
 
44
29
  def reset_query_params
45
- # @rights = %i[sendAs sendOnBehalfOf]
46
30
  @rights = []
47
31
  end
48
32
  end
@@ -3,17 +3,15 @@
3
3
  module Zm
4
4
  module Client
5
5
  # class for account appointment
6
- class Appointment < Base::AccountObject
6
+ class Appointment < Base::Object
7
+ include BelongsToFolder
8
+ include BelongsToTag
7
9
 
8
- INSTANCE_VARIABLE_KEYS = %i[id uid name l desc start_at dur end_at tn allDay organizer timezone calItemId apptId invId rev fb transp]
9
-
10
- attr_accessor *INSTANCE_VARIABLE_KEYS
11
- attr_writer :folder
12
- attr_reader :json
10
+ attr_accessor :id, :uid, :name, :l, :desc, :start_at, :dur, :end_at, :tn, :allDay, :organizer, :timezone,
11
+ :calItemId, :apptId, :invId, :rev, :fb, :transp
13
12
  attr_reader :recipients, :attendees, :body
14
13
 
15
14
  alias description desc
16
- alias parent_id l
17
15
 
18
16
  def initialize(parent)
19
17
  @parent = parent
@@ -22,49 +20,58 @@ module Zm
22
20
  @attendees = Attendees.new
23
21
  @allDay = false
24
22
  @timezone = 'Europe/Berlin'
25
- yield(self) if block_given?
26
- end
27
-
28
- def all_instance_variable_keys
29
- INSTANCE_VARIABLE_KEYS
30
- end
31
23
 
32
- def folder
33
- @folder ||= @parent.folders.all.find { |folder| folder.id == l }
24
+ yield(self) if block_given?
34
25
  end
35
26
 
36
27
  def download(dest_file_path, fmt = 'ics')
37
- # @parent.uploader.download_file(folder.absFolderPath, 'ics', ['appointment'], [id], dest_file_path)
38
28
  uploader = Upload.new(@parent, RestAccountConnector.new)
39
- uploader.download_file(folder.absFolderPath, fmt, ['appointment'], [id], dest_file_path)
29
+ uploader.download_file(Zm::Client::FolderDefault::ROOT[:path], fmt, [Zm::Client::FolderView::APPOINTMENT], [@id], dest_file_path)
40
30
  end
41
31
 
42
32
  def create!
43
- rep = @parent.sacc.create_appointment(@parent.token, jsns_builder.to_jsns)
44
- rep_h = rep[:Body][:CreateAppointmentResponse]
33
+ soap_request = SoapElement.mail(SoapMailConstants::CREATE_APPOINTMENT_REQUEST).add_attributes(jsns_builder.to_jsns)
34
+ rep = @parent.sacc.invoke(soap_request)
45
35
 
46
- aji = AppointmentJsnsInitializer.new(@parent, rep_h)
36
+ aji = AppointmentJsnsInitializer.new(@parent, rep[:CreateAppointmentResponse])
47
37
  aji.appointment = self
48
38
  aji.update
39
+ @id
49
40
  end
50
41
 
51
42
  def modify!
52
- @parent.sacc.modify_appointment(@parent.token, jsns_builder.to_update)
43
+ soap_request = SoapElement.mail(SoapMailConstants::MODIFY_APPOINTMENT_REQUEST).add_attributes(jsns_builder.to_update)
44
+ @parent.sacc.invoke(soap_request)
45
+ true
46
+ end
47
+
48
+ def update!(*args)
49
+ raise NotImplementedError
50
+ end
51
+
52
+ def rename!(*args)
53
+ raise NotImplementedError
54
+ end
55
+
56
+ def delete!
57
+ return false if @id.nil?
58
+
59
+ @parent.sacc.invoke(jsns_builder.to_delete)
60
+ @id = nil
53
61
  end
54
62
 
55
63
  def reload!
56
- rep = @parent.sacc.get_msg(@parent.token, @id)
57
- entry = rep[:Body][:GetMsgResponse][:m].first
64
+ jsns = { m: { id: @id, html: 1 } }
65
+
66
+ soap_request = SoapElement.mail(SoapMailConstants::GET_MSG_REQUEST).add_attributes(jsns)
67
+ rep = @parent.sacc.invoke(soap_request)
68
+ entry = rep[:GetMsgResponse][:m].first
69
+
58
70
  aji = AppointmentJsnsInitializer.new(@parent, entry)
59
71
  aji.appointment = self
60
72
  aji.create
61
73
  end
62
74
 
63
- def delete!
64
- @parent.sacc.cancel_appointment(@parent.token, jsns_builder.to_delete)
65
- super
66
- end
67
-
68
75
  def free!
69
76
  self.fb = 'F'
70
77
  self.transp = 'O'
@@ -111,9 +118,10 @@ module Zm
111
118
  end
112
119
 
113
120
  def del(attendee)
114
- if attendee.is_a?(Attendee)
121
+ case attendee
122
+ when Attendee
115
123
  @attendees.delete(attendee)
116
- elsif attendee.is_a?(String)
124
+ when String
117
125
  @attendees.delete_if { |at| at.email == attendee }
118
126
  end
119
127
  end
@@ -3,24 +3,12 @@
3
3
  module Zm
4
4
  module Client
5
5
  # class for account appointment
6
- class AppointmentJsnsBuilder
7
-
8
- def initialize(appointment)
9
- @appointment = appointment
10
- end
11
-
12
- def to_delete
13
- {
14
- comp: 0,
15
- id: @appointment.id
16
- }
17
- end
18
-
6
+ class AppointmentJsnsBuilder < BaseAccountJsnsBuilder
19
7
  def to_jsns
20
8
  {
21
9
  m: {
22
- l: @appointment.l,
23
- su: @appointment.name,
10
+ l: @item.l,
11
+ su: @item.name,
24
12
  e: recipients_to_jsns,
25
13
  mp: body_to_jsns,
26
14
  inv: {
@@ -35,13 +23,13 @@ module Zm
35
23
  def to_update
36
24
  jsns = to_jsns
37
25
  jsns[:comp] = 0
38
- jsns[:id] = @appointment.id
39
- jsns[:m][:inv][:uid] = @appointment.uid
26
+ jsns[:id] = @item.id
27
+ jsns[:m][:inv][:uid] = @item.uid
40
28
  jsns
41
29
  end
42
30
 
43
31
  def recipients_to_jsns
44
- @appointment.recipients.map do |recipient|
32
+ @item.recipients.map do |recipient|
45
33
  {
46
34
  t: recipient.field,
47
35
  a: recipient.email,
@@ -53,37 +41,37 @@ module Zm
53
41
  def body_to_jsns
54
42
  [
55
43
  {
56
- ct: 'multipart/alternative',
44
+ ct: ContentPart::ALTERNATIVE,
57
45
  mp: [body_text_jsns, body_html_jsns]
58
46
  }
59
47
  ]
60
48
  end
61
49
 
62
50
  def body_text_jsns
63
- { ct: 'text/plain', content: { _content: @appointment.body.text } }
51
+ { ct: ContentType::TEXT, content: { _content: @item.body.text } }
64
52
  end
65
53
 
66
54
  def body_html_jsns
67
- { ct: 'text/html', content: { _content: @appointment.body.html } }
55
+ { ct: ContentType::HTML, content: { _content: @item.body.html } }
68
56
  end
69
57
 
70
58
  def comp_to_jsns
71
59
  [
72
60
  {
73
- allDay: @appointment.allDay,
61
+ allDay: @item.allDay,
74
62
  at: attendees_to_jsns,
75
63
  e: end_at_jsns,
76
64
  s: start_at_jsns,
77
65
  or: organizer_to_jsns,
78
- name: @appointment.name,
79
- fb: @appointment.fb,
80
- transp: @appointment.transp
66
+ name: @item.name,
67
+ fb: @item.fb,
68
+ transp: @item.transp
81
69
  }.reject { |_, v| v.nil? }
82
70
  ]
83
71
  end
84
72
 
85
73
  def attendees_to_jsns
86
- @appointment.attendees.map do |attendee|
74
+ @item.attendees.map do |attendee|
87
75
  {
88
76
  a: attendee.email,
89
77
  d: attendee.display_name,
@@ -96,29 +84,29 @@ module Zm
96
84
 
97
85
  def end_at_jsns
98
86
  {
99
- d: @appointment.end_at.strftime(time_format),
100
- tz: @appointment.timezone
87
+ d: @item.end_at.strftime(time_format),
88
+ tz: @item.timezone
101
89
  }
102
90
  end
103
91
 
104
92
  def start_at_jsns
105
93
  {
106
- d: @appointment.start_at.strftime(time_format),
107
- tz: @appointment.timezone
94
+ d: @item.start_at.strftime(time_format),
95
+ tz: @item.timezone
108
96
  }
109
97
  end
110
98
 
111
99
  def organizer_to_jsns
112
- return nil if @appointment.organizer.nil?
100
+ return nil if @item.organizer.nil?
113
101
 
114
102
  {
115
- a: @appointment.organizer.email,
116
- d: @appointment.organizer.display_name
103
+ a: @item.organizer.email,
104
+ d: @item.organizer.display_name
117
105
  }.reject { |_, v| v.nil? }
118
106
  end
119
107
 
120
108
  def time_format
121
- @time_format ||= @appointment.allDay ? '%Y%m%d' : '%Y%m%dT%H%M00'
109
+ @time_format ||= @item.allDay ? '%Y%m%d' : '%Y%m%dT%H%M00'
122
110
  end
123
111
  end
124
112
  end
@@ -4,7 +4,6 @@ module Zm
4
4
  module Client
5
5
  # class for account appointment
6
6
  class AppointmentJsnsInitializer
7
-
8
7
  attr_accessor :appointment
9
8
 
10
9
  def initialize(parent, json)
@@ -46,7 +45,9 @@ module Zm
46
45
  end
47
46
 
48
47
  def init_from_search
49
- @appointment.organizer = Zm::Client::Appointment::Organizer.new(search_organizer_name) unless search_organizer_name.nil?
48
+ unless search_organizer_name.nil?
49
+ @appointment.organizer = Zm::Client::Appointment::Organizer.new(search_organizer_name)
50
+ end
50
51
  @appointment.name = @json[:name]
51
52
  @appointment.id = @json[:invId]
52
53
  @appointment.desc = @json[:fr]
@@ -64,7 +65,9 @@ module Zm
64
65
  @appointment.apptId = comp[:apptId]
65
66
  @appointment.allDay = comp[:allDay] unless comp[:allDay].nil?
66
67
 
67
- @appointment.organizer = Zm::Client::Appointment::Organizer.new(comp_organizer_name) unless comp_organizer_name.nil?
68
+ unless comp_organizer_name.nil?
69
+ @appointment.organizer = Zm::Client::Appointment::Organizer.new(comp_organizer_name)
70
+ end
68
71
 
69
72
  attendees.each do |attendee|
70
73
  @appointment.attendees.add(Zm::Client::Appointment::Attendee.new(attendee[:a]))
@@ -5,28 +5,16 @@ module Zm
5
5
  # class factory [appointments]
6
6
  class AppointmentsBuilder < Base::ObjectsBuilder
7
7
  def initialize(parent, json)
8
- @parent = parent
9
- @json = json
8
+ super(parent, json)
9
+ @json_item_key = :appt
10
10
  end
11
11
 
12
12
  def make
13
- root.map do |s|
14
- # Appointment.new(@parent, s)
15
- # Appointment.new(@parent)
16
- AppointmentJsnsInitializer.new(@parent, s).create
17
- end
18
- end
19
-
20
- def ids
21
- root.map { |s| s[:id] }
22
- end
23
-
24
- def root
25
- root = @json[:Body][:SearchResponse][:appt]
26
- return [] if root.nil?
13
+ return [] if json_items.nil?
27
14
 
28
- root = [root] unless root.is_a?(Array)
29
- root
15
+ json_items.map do |entry|
16
+ AppointmentJsnsInitializer.new(@parent, entry).create
17
+ end
30
18
  end
31
19
  end
32
20
  end
@@ -8,15 +8,36 @@ module Zm
8
8
  super(parent)
9
9
  @child_class = Appointment
10
10
  @builder_class = AppointmentsBuilder
11
- @type = 'appointment'
12
- @sort_by = 'dateAsc'
11
+ @type = SoapConstants::APPOINTMENT
12
+ @sort_by = SoapConstants::DATE_ASC
13
13
  end
14
14
 
15
15
  def find(id)
16
- rep = @parent.sacc.get_msg(@parent.token, id)
17
- entry = rep[:Body][:GetMsgResponse][:m].first
16
+ jsns = { m: { id: id, html: 1 } }
17
+
18
+ soap_request = SoapElement.mail(SoapMailConstants::GET_MSG_REQUEST).add_attributes(jsns)
19
+ rep = @parent.sacc.invoke(soap_request)
20
+ entry = rep[:GetMsgResponse][:m].first
21
+
18
22
  AppointmentJsnsInitializer.new(@parent, entry).create
19
23
  end
24
+
25
+ def find_each
26
+ @all = []
27
+ (1970..(Time.now.year + 10)).each do |year|
28
+ @start_at = Time.new(year, 1, 1)
29
+ @end_at = Time.new(year, 12, 31)
30
+ @more = true
31
+ @offset = 0
32
+ @limit = 500
33
+
34
+ while @more
35
+ @all += build_response
36
+ @offset += @limit
37
+ end
38
+ end
39
+ @all
40
+ end
20
41
  end
21
42
  end
22
43
  end
@@ -2,10 +2,8 @@
2
2
 
3
3
  module Zm
4
4
  module Client
5
- class Backup < Base::AdminObject
6
- INSTANCE_VARIABLE_KEYS = %i[label type aborted start end minRedoSeq maxRedoSeq live accounts]
7
-
8
- attr_reader *INSTANCE_VARIABLE_KEYS
5
+ class Backup < Base::Object
6
+ attr_accessor :label, :type, :aborted, :start, :end, :minRedoSeq, :maxRedoSeq, :live, :accounts
9
7
 
10
8
  alias name label
11
9
 
@@ -13,29 +11,15 @@ module Zm
13
11
  parent
14
12
  end
15
13
 
16
- def all_instance_variable_keys
17
- INSTANCE_VARIABLE_KEYS
18
- end
19
-
20
- # def to_h
21
- # hashmap = Hash[INSTANCE_VARIABLE_KEYS.map { |key| [key, instance_variable_get(arrow_name(key))] }]
22
- # hashmap.delete_if { |_, v| v.nil? }
23
- # hashmap
24
- # end
25
-
26
- def to_s
27
- to_h.to_s
28
- end
29
-
30
14
  def start_at
31
15
  @start_at ||= Time.at(@start / 1000)
32
- rescue StandardError => e
16
+ rescue StandardError
33
17
  nil
34
18
  end
35
19
 
36
20
  def end_at
37
21
  @end_at ||= Time.at(@end / 1000)
38
- rescue StandardError => e
22
+ rescue StandardError
39
23
  nil
40
24
  end
41
25
 
@@ -46,18 +30,6 @@ module Zm
46
30
  def incremental?
47
31
  @type == Zm::Client::BackupTypes::INCREMENTAL
48
32
  end
49
-
50
- def init_from_json(json)
51
- @label = json[:label]
52
- @type = json[:type]
53
- @aborted = json[:aborted]
54
- @start = json[:start].to_i
55
- @end = json[:end].to_i
56
- @minRedoSeq = json[:minRedoSeq]
57
- @maxRedoSeq = json[:maxRedoSeq]
58
- @live = json[:live]
59
- @accounts = json[:accounts]
60
- end
61
33
  end
62
34
  end
63
35
  end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ # class for initialize backup
6
+ class BackupJsnsInitializer
7
+ class << self
8
+ def create(parent, json)
9
+ item = Backup.new(parent)
10
+
11
+ item.label = json[:label]
12
+ item.type = json[:type]
13
+ item.aborted = json[:aborted]
14
+ item.start = json[:start].to_i
15
+ item.end = json[:end].to_i
16
+ item.minRedoSeq = json[:minRedoSeq]
17
+ item.maxRedoSeq = json[:maxRedoSeq]
18
+ item.live = json[:live]
19
+ item.accounts = json[:accounts]
20
+
21
+ item
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end