zm-ruby-client 0.18.5 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (250) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/Gemfile +2 -2
  4. data/README.md +7 -0
  5. data/lib/zm/client/account/account.rb +31 -308
  6. data/lib/zm/client/account/account_aliases_collection.rb +52 -0
  7. data/lib/zm/client/account/account_dls_membership_collection.rb +4 -1
  8. data/lib/zm/client/account/account_dls_owner_collection.rb +8 -1
  9. data/lib/zm/client/account/account_jsns_builder.rb +77 -0
  10. data/lib/zm/client/account/account_jsns_initializer.rb +9 -24
  11. data/lib/zm/client/account/accounts_builder.rb +0 -1
  12. data/lib/zm/client/account/accounts_collection.rb +32 -8
  13. data/lib/zm/client/account.rb +1 -0
  14. data/lib/zm/client/ace/ace.rb +6 -22
  15. data/lib/zm/client/ace/ace_jsns_builder.rb +15 -16
  16. data/lib/zm/client/ace/ace_jsns_initializer.rb +0 -1
  17. data/lib/zm/client/ace/aces_builder.rb +0 -1
  18. data/lib/zm/client/ace/aces_collection.rb +2 -18
  19. data/lib/zm/client/appointment/appointment.rb +38 -30
  20. data/lib/zm/client/appointment/appointment_jsns_builder.rb +22 -34
  21. data/lib/zm/client/appointment/appointment_jsns_initializer.rb +6 -3
  22. data/lib/zm/client/appointment/appointments_builder.rb +6 -18
  23. data/lib/zm/client/appointment/appointments_collection.rb +25 -4
  24. data/lib/zm/client/backup/backup.rb +4 -32
  25. data/lib/zm/client/backup/backup_jsns_initializer.rb +26 -0
  26. data/lib/zm/client/backup/backups_builder.rb +8 -13
  27. data/lib/zm/client/backup/backups_collection.rb +2 -1
  28. data/lib/zm/client/backup.rb +1 -0
  29. data/lib/zm/client/base/account_search_objects_collection.rb +34 -13
  30. data/lib/zm/client/base/admin_objects_collection.rb +82 -17
  31. data/lib/zm/client/base/base_account_jsns_builder.rb +98 -0
  32. data/lib/zm/client/base/base_jsns_builder.rb +47 -0
  33. data/lib/zm/client/base/base_jsns_initializer.rb +43 -12
  34. data/lib/zm/client/base/ldap_filter.rb +20 -5
  35. data/lib/zm/client/base/mailbox_infos_collection.rb +68 -0
  36. data/lib/zm/client/base/mailbox_object.rb +299 -0
  37. data/lib/zm/client/base/mailbox_prefs_collection.rb +75 -0
  38. data/lib/zm/client/base/object.rb +28 -62
  39. data/lib/zm/client/base/objects_builder.rb +4 -10
  40. data/lib/zm/client/base/objects_collection.rb +13 -10
  41. data/lib/zm/client/base/zimbra_attribute.rb +10 -8
  42. data/lib/zm/client/base/zimbra_attributes_collection.rb +154 -10
  43. data/lib/zm/client/base.rb +5 -5
  44. data/lib/zm/client/cluster/cluster.rb +43 -39
  45. data/lib/zm/client/cluster/cluster_config.rb +5 -5
  46. data/lib/zm/client/common/recipients.rb +3 -3
  47. data/lib/zm/client/common/token_metadata.rb +4 -1
  48. data/lib/zm/client/common/utils.rb +57 -0
  49. data/lib/zm/client/common.rb +2 -1
  50. data/lib/zm/client/connector/rest_account.rb +15 -28
  51. data/lib/zm/client/connector/soap_account.rb +38 -441
  52. data/lib/zm/client/connector/soap_admin.rb +16 -552
  53. data/lib/zm/client/connector/soap_base.rb +30 -21
  54. data/lib/zm/client/connector/soap_error.rb +1 -3
  55. data/lib/zm/client/constant.rb +21 -11
  56. data/lib/zm/client/contact/contact.rb +42 -83
  57. data/lib/zm/client/contact/contact_jsns_builder.rb +60 -0
  58. data/lib/zm/client/contact/contact_jsns_initializer.rb +78 -0
  59. data/lib/zm/client/contact/contact_member.rb +29 -28
  60. data/lib/zm/client/contact/contact_members_collection.rb +44 -0
  61. data/lib/zm/client/contact/contacts_builder.rb +8 -1
  62. data/lib/zm/client/contact/contacts_collection.rb +17 -1
  63. data/lib/zm/client/contact/group_contact_jsns_builder.rb +51 -0
  64. data/lib/zm/client/contact/mod_group_contact.rb +4 -67
  65. data/lib/zm/client/contact.rb +5 -1
  66. data/lib/zm/client/cos/cos.rb +35 -40
  67. data/lib/zm/client/cos/cos_accounts_collection.rb +19 -0
  68. data/lib/zm/client/cos/cos_domains_collection.rb +20 -0
  69. data/lib/zm/client/cos/cos_jsns_builder.rb +72 -0
  70. data/lib/zm/client/cos/cos_jsns_initializer.rb +29 -0
  71. data/lib/zm/client/cos/cos_servers_collection.rb +60 -0
  72. data/lib/zm/client/cos/coses_builder.rb +8 -1
  73. data/lib/zm/client/cos/coses_collection.rb +8 -5
  74. data/lib/zm/client/cos.rb +5 -0
  75. data/lib/zm/client/datasource/datasource.rb +69 -0
  76. data/lib/zm/client/datasource/datasource_jsns_builder.rb +32 -0
  77. data/lib/zm/client/datasource/datasource_jsns_initializer.rb +27 -0
  78. data/lib/zm/client/datasource/datasources_builder.rb +29 -0
  79. data/lib/zm/client/datasource/datasources_collection.rb +21 -0
  80. data/lib/zm/client/datasource.rb +7 -0
  81. data/lib/zm/client/distributionlist/distributionlist.rb +52 -118
  82. data/lib/zm/client/distributionlist/distributionlist_aces_collection.rb +31 -0
  83. data/lib/zm/client/distributionlist/distributionlist_aliases_collection.rb +53 -0
  84. data/lib/zm/client/distributionlist/distributionlist_jsns_builder.rb +82 -0
  85. data/lib/zm/client/distributionlist/distributionlist_jsns_initializer.rb +32 -0
  86. data/lib/zm/client/distributionlist/distributionlist_members_collection.rb +47 -0
  87. data/lib/zm/client/distributionlist/distributionlist_owners_collection.rb +52 -0
  88. data/lib/zm/client/distributionlist/distributionlists_builder.rb +8 -1
  89. data/lib/zm/client/distributionlist/distributionlists_collection.rb +8 -9
  90. data/lib/zm/client/distributionlist/dls_membership_collection.rb +4 -1
  91. data/lib/zm/client/distributionlist.rb +2 -0
  92. data/lib/zm/client/document/document.rb +27 -24
  93. data/lib/zm/client/document/document_jsns_builder.rb +18 -0
  94. data/lib/zm/client/document/document_jsns_initializer.rb +44 -0
  95. data/lib/zm/client/document/documents_builder.rb +6 -16
  96. data/lib/zm/client/document/documents_collection.rb +17 -67
  97. data/lib/zm/client/document.rb +2 -0
  98. data/lib/zm/client/domain/domain.rb +39 -55
  99. data/lib/zm/client/domain/domain_accounts_collection.rb +1 -1
  100. data/lib/zm/client/domain/domain_distributionlists_collection.rb +13 -0
  101. data/lib/zm/client/domain/domain_jsns_builder.rb +69 -0
  102. data/lib/zm/client/domain/domain_jsns_initializer.rb +25 -0
  103. data/lib/zm/client/domain/domain_resources_collection.rb +13 -0
  104. data/lib/zm/client/domain/domains_builder.rb +8 -1
  105. data/lib/zm/client/domain/domains_collection.rb +7 -7
  106. data/lib/zm/client/domain.rb +4 -0
  107. data/lib/zm/client/filter_rule.rb +7 -0
  108. data/lib/zm/client/filter_rules/filter_rule.rb +10 -0
  109. data/lib/zm/client/filter_rules/filter_rule_jsns_initializer.rb +24 -0
  110. data/lib/zm/client/filter_rules/filter_rules_builder.rb +21 -0
  111. data/lib/zm/client/filter_rules/filter_rules_collection.rb +21 -0
  112. data/lib/zm/client/filter_rules/outgoing_filter_rules_collection.rb +15 -0
  113. data/lib/zm/client/folder/folder.rb +77 -61
  114. data/lib/zm/client/folder/folder_grant.rb +34 -14
  115. data/lib/zm/client/folder/folder_grant_jsns_builder.rb +15 -4
  116. data/lib/zm/client/folder/folder_grants_collection.rb +36 -2
  117. data/lib/zm/client/folder/folder_jsns_builder.rb +22 -48
  118. data/lib/zm/client/folder/folder_jsns_initializer.rb +34 -17
  119. data/lib/zm/client/folder/folder_retention_policies_collection.rb +2 -3
  120. data/lib/zm/client/folder/folder_retention_policy.rb +0 -1
  121. data/lib/zm/client/folder/folders_builder.rb +7 -10
  122. data/lib/zm/client/folder/folders_collection.rb +5 -2
  123. data/lib/zm/client/folder/folders_jsns_builder.rb +3 -1
  124. data/lib/zm/client/folder/mod_document_folder.rb +10 -6
  125. data/lib/zm/client/folder.rb +1 -1
  126. data/lib/zm/client/identity/identities_builder.rb +8 -1
  127. data/lib/zm/client/identity/identities_collection.rb +2 -1
  128. data/lib/zm/client/identity/identity.rb +34 -42
  129. data/lib/zm/client/identity/identity_jsns_builder.rb +57 -0
  130. data/lib/zm/client/identity/identity_jsns_initializer.rb +29 -0
  131. data/lib/zm/client/identity.rb +3 -1
  132. data/lib/zm/client/license/license.rb +9 -22
  133. data/lib/zm/client/license/license_jsns_initializer.rb +20 -0
  134. data/lib/zm/client/license/licenses_collection.rb +3 -13
  135. data/lib/zm/client/license.rb +2 -1
  136. data/lib/zm/client/message/attachments_collection.rb +55 -0
  137. data/lib/zm/client/message/message.rb +36 -264
  138. data/lib/zm/client/message/message_flags.rb +107 -0
  139. data/lib/zm/client/message/message_jsns_builder.rb +85 -0
  140. data/lib/zm/client/message/message_jsns_initializer.rb +71 -0
  141. data/lib/zm/client/message/message_recipients.rb +59 -0
  142. data/lib/zm/client/message/messages_builder.rb +7 -18
  143. data/lib/zm/client/message/messages_collection.rb +17 -2
  144. data/lib/zm/client/message.rb +5 -0
  145. data/lib/zm/client/mountpoint/mountpoint.rb +43 -20
  146. data/lib/zm/client/mountpoint/mountpoint_jsns_builder.rb +8 -53
  147. data/lib/zm/client/mountpoint/mountpoint_jsns_initializer.rb +22 -13
  148. data/lib/zm/client/mountpoint/mountpoints_builder.rb +4 -5
  149. data/lib/zm/client/mountpoint/mountpoints_collection.rb +1 -2
  150. data/lib/zm/client/mta_queue/mta_queue.rb +13 -28
  151. data/lib/zm/client/mta_queue/mta_queue_jsns_builder.rb +41 -0
  152. data/lib/zm/client/mta_queue/mta_queue_jsns_initializer.rb +23 -0
  153. data/lib/zm/client/mta_queue/mta_queues_builder.rb +4 -8
  154. data/lib/zm/client/mta_queue/mta_queues_collection.rb +8 -27
  155. data/lib/zm/client/mta_queue.rb +2 -0
  156. data/lib/zm/client/mta_queue_item/mta_queue_item.rb +4 -31
  157. data/lib/zm/client/mta_queue_item/mta_queue_item_jsns_initializer.rb +33 -0
  158. data/lib/zm/client/mta_queue_item/mta_queue_items_builder.rb +4 -9
  159. data/lib/zm/client/mta_queue_item/mta_queue_items_collection.rb +7 -42
  160. data/lib/zm/client/mta_queue_item.rb +2 -1
  161. data/lib/zm/client/resource/resource.rb +24 -91
  162. data/lib/zm/client/resource/resource_jsns_builder.rb +79 -0
  163. data/lib/zm/client/resource/resource_jsns_initializer.rb +29 -0
  164. data/lib/zm/client/resource/resources_builder.rb +8 -1
  165. data/lib/zm/client/resource/resources_collection.rb +9 -7
  166. data/lib/zm/client/resource.rb +2 -0
  167. data/lib/zm/client/search_folder/search_folder.rb +38 -16
  168. data/lib/zm/client/search_folder/search_folder_jsns_builder.rb +38 -19
  169. data/lib/zm/client/search_folder/search_folder_jsns_initializer.rb +17 -13
  170. data/lib/zm/client/search_folder/search_folders_builder.rb +0 -1
  171. data/lib/zm/client/search_folder/search_folders_collection.rb +2 -1
  172. data/lib/zm/client/server/server.rb +16 -488
  173. data/lib/zm/client/server/server_jsns_initializer.rb +16 -0
  174. data/lib/zm/client/server/servers_builder.rb +8 -1
  175. data/lib/zm/client/server/servers_collection.rb +13 -5
  176. data/lib/zm/client/server.rb +1 -0
  177. data/lib/zm/client/share/share.rb +5 -43
  178. data/lib/zm/client/share/share_jsns_initializer.rb +32 -0
  179. data/lib/zm/client/share/share_mountpoints_collection.rb +38 -0
  180. data/lib/zm/client/share/shares_builder.rb +8 -1
  181. data/lib/zm/client/share/shares_collection.rb +11 -16
  182. data/lib/zm/client/share.rb +2 -0
  183. data/lib/zm/client/signature/signature.rb +25 -29
  184. data/lib/zm/client/signature/signature_jsns_builder.rb +31 -13
  185. data/lib/zm/client/signature/signature_jsns_initializer.rb +16 -12
  186. data/lib/zm/client/signature/signatures_builder.rb +1 -2
  187. data/lib/zm/client/signature/signatures_collection.rb +2 -1
  188. data/lib/zm/client/signature.rb +1 -1
  189. data/lib/zm/client/soap_request/account_soap_constants.rb +76 -0
  190. data/lib/zm/client/soap_request/admin_soap_constants.rb +214 -0
  191. data/lib/zm/client/soap_request/mail_soap_constants.rb +162 -0
  192. data/lib/zm/client/soap_request/soap_constants.rb +55 -0
  193. data/lib/zm/client/soap_request/soap_context.rb +38 -0
  194. data/lib/zm/client/soap_request/soap_element.rb +90 -0
  195. data/lib/zm/client/soap_request.rb +8 -0
  196. data/lib/zm/client/tag/account_object_tags_collection.rb +65 -0
  197. data/lib/zm/client/tag/tag.rb +34 -22
  198. data/lib/zm/client/tag/tag_jsns_builder.rb +14 -35
  199. data/lib/zm/client/tag/tag_jsns_initializer.rb +4 -6
  200. data/lib/zm/client/tag/tags_builder.rb +0 -1
  201. data/lib/zm/client/tag/tags_collection.rb +2 -1
  202. data/lib/zm/client/tag.rb +1 -0
  203. data/lib/zm/client/task/task.rb +18 -49
  204. data/lib/zm/client/task/task_jsns_initializer.rb +45 -0
  205. data/lib/zm/client/task/tasks_builder.rb +6 -16
  206. data/lib/zm/client/task/tasks_collection.rb +29 -0
  207. data/lib/zm/client/task.rb +1 -0
  208. data/lib/zm/client/upload/upload.rb +26 -30
  209. data/lib/zm/client/version.rb +3 -3
  210. data/lib/zm/client.rb +4 -1
  211. data/lib/zm/modules/base.rb +10 -0
  212. data/lib/zm/modules/belongs_to_folder.rb +37 -0
  213. data/lib/zm/modules/belongs_to_tag.rb +11 -0
  214. data/lib/zm/modules/common/zimbra-attrs.json +1 -1
  215. data/lib/zm/modules/has_soap_admin_connector.rb +12 -0
  216. data/lib/zm/modules/inspector.rb +24 -0
  217. data/lib/zm/modules/missing_method_static_collection.rb +13 -0
  218. data/lib/zm/modules/zm_logger.rb +3 -1
  219. data/lib/zm/modules/zm_model.rb +4 -2
  220. data/lib/zm/utils/thread_pool.rb +4 -2
  221. data/lib/zm-ruby-client.rb +2 -0
  222. data/zm-ruby-client.gemspec +12 -9
  223. metadata +93 -34
  224. data/lib/zm/client/base/account_object.rb +0 -51
  225. data/lib/zm/client/base/admin_object.rb +0 -51
  226. data/lib/zm/client/base/folder_object.rb +0 -41
  227. data/lib/zm/client/config.rb +0 -12
  228. data/lib/zm/client/data_source.rb +0 -5
  229. data/lib/zm/modules/common/account_common.rb +0 -71
  230. data/lib/zm/modules/common/cos_common.rb +0 -463
  231. data/lib/zm/modules/common/dl_common.rb +0 -38
  232. data/lib/zm/modules/common/identity_common.rb +0 -19
  233. data/lib/zm/modules/common/resource_common.rb +0 -59
  234. data/lib/zm/modules/common/signature_common.rb +0 -16
  235. data/lib/zm/modules/common/zimbra-attrs.json.bak +0 -1
  236. data/test/accounts.rb +0 -89
  237. data/test/ace.rb +0 -50
  238. data/test/cluster.rb +0 -41
  239. data/test/cluster_config.rb +0 -30
  240. data/test/cluster_zimbra_attributes.rb +0 -38
  241. data/test/coses.rb +0 -26
  242. data/test/domains.rb +0 -70
  243. data/test/folder.rb +0 -125
  244. data/test/folder_grant.rb +0 -51
  245. data/test/mountpoint.rb +0 -49
  246. data/test/retention_policies.rb +0 -40
  247. data/test/search_folder.rb +0 -67
  248. data/test/signature.rb +0 -53
  249. data/test/tag.rb +0 -65
  250. data/test/zimbra_attributes.rb +0 -35
@@ -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
@@ -4,22 +4,17 @@ module Zm
4
4
  module Client
5
5
  # class factory [Backup]
6
6
  class BackupsBuilder < Base::ObjectsBuilder
7
- def make
8
- records = []
9
- return records if json_items.nil?
10
-
11
- json_items.each do |entry|
12
- backup = Backup.new(@parent)
13
- backup.init_from_json(entry)
14
- records << backup
15
- end
16
- records
7
+ def initialize(parent, json)
8
+ super(parent, json)
9
+ @json_item_key = :backup
17
10
  end
18
11
 
19
- private
12
+ def make
13
+ return [] if json_items.nil?
20
14
 
21
- def json_items
22
- @json_items ||= @json[:Body][json_key][:backup]
15
+ json_items.map do |entry|
16
+ BackupJsnsInitializer.create(@parent, entry)
17
+ end
23
18
  end
24
19
  end
25
20
  end
@@ -11,7 +11,8 @@ module Zm
11
11
  private
12
12
 
13
13
  def make_query
14
- sac.backup_query(@parent.id)
14
+ soap_request = SoapElement.admin(SoapAdminConstants::BACKUP_QUERY_REQUEST).add_attribute(SoapConstants::QUERY, {})
15
+ sac.target_invoke(soap_request, @parent.id)
15
16
  end
16
17
 
17
18
  def build_response
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'zm/client/backup/backup'
4
+ require 'zm/client/backup/backup_jsns_initializer'
4
5
  require 'zm/client/backup/backups_builder'
5
6
  require 'zm/client/backup/backups_collection'