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
@@ -0,0 +1,162 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ module SoapMailConstants
6
+ ACCOUNT_SERVICE_URI = '/service/soap/'
7
+
8
+ NAMESPACE_STR = 'urn:zimbraMail'
9
+
10
+ ADD_APPOINTMENT_INVITE_REQUEST = 'AddAppointmentInviteRequest'
11
+ ADD_COMMENT_REQUEST = 'AddCommentRequest'
12
+ ADD_MSG_REQUEST = 'AddMsgRequest'
13
+ ADD_TASK_INVITE_REQUEST = 'AddTaskInviteRequest'
14
+ ANNOUNCE_ORGANIZER_CHANGE_REQUEST = 'AnnounceOrganizerChangeRequest'
15
+ APPLY_FILTER_RULES_REQUEST = 'ApplyFilterRulesRequest'
16
+ APPLY_OUTGOING_FILTER_RULES_REQUEST = 'ApplyOutgoingFilterRulesRequest'
17
+ AUTO_COMPLETE_REQUEST = 'AutoCompleteRequest'
18
+ BEGIN_TRACKING_IMAP_REQUEST = 'BeginTrackingIMAPRequest'
19
+ BOUNCE_MSG_REQUEST = 'BounceMsgRequest'
20
+ BROWSE_REQUEST = 'BrowseRequest'
21
+ CANCEL_APPOINTMENT_REQUEST = 'CancelAppointmentRequest'
22
+ CANCEL_TASK_REQUEST = 'CancelTaskRequest'
23
+ CHECK_DEVICE_STATUS_REQUEST = 'CheckDeviceStatusRequest'
24
+ CHECK_PERMISSION_REQUEST = 'CheckPermissionRequest'
25
+ CHECK_RECUR_CONFLICTS_REQUEST = 'CheckRecurConflictsRequest'
26
+ CHECK_SPELLING_REQUEST = 'CheckSpellingRequest'
27
+ COMPLETE_TASK_INSTANCE_REQUEST = 'CompleteTaskInstanceRequest'
28
+ CONTACT_ACTION_REQUEST = 'ContactActionRequest'
29
+ CONV_ACTION_REQUEST = 'ConvActionRequest'
30
+ COUNTER_APPOINTMENT_REQUEST = 'CounterAppointmentRequest'
31
+ CREATE_APPOINTMENT_REQUEST = 'CreateAppointmentRequest'
32
+ CREATE_APPOINTMENT_EXCEPTION_REQUEST = 'CreateAppointmentExceptionRequest'
33
+ CREATE_CONTACT_REQUEST = 'CreateContactRequest'
34
+ CREATE_DATA_SOURCE_REQUEST = 'CreateDataSourceRequest'
35
+ CREATE_FOLDER_REQUEST = 'CreateFolderRequest'
36
+ CREATE_MOUNTPOINT_REQUEST = 'CreateMountpointRequest'
37
+ CREATE_NOTE_REQUEST = 'CreateNoteRequest'
38
+ CREATE_SEARCH_FOLDER_REQUEST = 'CreateSearchFolderRequest'
39
+ CREATE_TAG_REQUEST = 'CreateTagRequest'
40
+ CREATE_TASK_REQUEST = 'CreateTaskRequest'
41
+ CREATE_TASK_EXCEPTION_REQUEST = 'CreateTaskExceptionRequest'
42
+ CREATE_WAIT_SET_REQUEST = 'CreateWaitSetRequest'
43
+ DECLINE_COUNTER_APPOINTMENT_REQUEST = 'DeclineCounterAppointmentRequest'
44
+ DELETE_DATA_SOURCE_REQUEST = 'DeleteDataSourceRequest'
45
+ DELETE_DEVICE_REQUEST = 'DeleteDeviceRequest'
46
+ DESTROY_WAIT_SET_REQUEST = 'DestroyWaitSetRequest'
47
+ DIFF_DOCUMENT_REQUEST = 'DiffDocumentRequest'
48
+ DISMISS_CALENDAR_ITEM_ALARM_REQUEST = 'DismissCalendarItemAlarmRequest'
49
+ DOCUMENT_ACTION_REQUEST = 'DocumentActionRequest'
50
+ EMPTY_DUMPSTER_REQUEST = 'EmptyDumpsterRequest'
51
+ ENABLE_SHARED_REMINDER_REQUEST = 'EnableSharedReminderRequest'
52
+ EXPAND_RECUR_REQUEST = 'ExpandRecurRequest'
53
+ EXPORT_CONTACTS_REQUEST = 'ExportContactsRequest'
54
+ FOLDER_ACTION_REQUEST = 'FolderActionRequest'
55
+ FORWARD_APPOINTMENT_REQUEST = 'ForwardAppointmentRequest'
56
+ FORWARD_APPOINTMENT_INVITE_REQUEST = 'ForwardAppointmentInviteRequest'
57
+ GENERATE_UUID_REQUEST = 'GenerateUUIDRequest'
58
+ GET_ACTIVITY_STREAM_REQUEST = 'GetActivityStreamRequest'
59
+ GET_ALL_DEVICES_REQUEST = 'GetAllDevicesRequest'
60
+ GET_APPOINTMENT_REQUEST = 'GetAppointmentRequest'
61
+ GET_APPT_SUMMARIES_REQUEST = 'GetApptSummariesRequest'
62
+ GET_CALENDAR_ITEM_SUMMARIES_REQUEST = 'GetCalendarItemSummariesRequest'
63
+ GET_COMMENTS_REQUEST = 'GetCommentsRequest'
64
+ GET_CONTACT_BACKUP_LIST_REQUEST = 'GetContactBackupListRequest'
65
+ GET_CONTACTS_REQUEST = 'GetContactsRequest'
66
+ GET_CONV_REQUEST = 'GetConvRequest'
67
+ GET_CUSTOM_METADATA_REQUEST = 'GetCustomMetadataRequest'
68
+ GET_DATA_SOURCE_USAGE_REQUEST = 'GetDataSourceUsageRequest'
69
+ GET_DATA_SOURCES_REQUEST = 'GetDataSourcesRequest'
70
+ GET_DOCUMENT_SHARE_URL_REQUEST = 'GetDocumentShareURLRequest'
71
+ GET_EFFECTIVE_FOLDER_PERMS_REQUEST = 'GetEffectiveFolderPermsRequest'
72
+ GET_FILTER_RULES_REQUEST = 'GetFilterRulesRequest'
73
+ GET_FOLDER_REQUEST = 'GetFolderRequest'
74
+ GET_FREE_BUSY_REQUEST = 'GetFreeBusyRequest'
75
+ GET_I_CAL_REQUEST = 'GetICalRequest'
76
+ GET_IMAP_RECENT_REQUEST = 'GetIMAPRecentRequest'
77
+ GET_IMAP_RECENT_CUTOFF_REQUEST = 'GetIMAPRecentCutoffRequest'
78
+ GET_IMPORT_STATUS_REQUEST = 'GetImportStatusRequest'
79
+ GET_ITEM_REQUEST = 'GetItemRequest'
80
+ GET_LAST_ITEM_ID_IN_MAILBOX_REQUEST = 'GetLastItemIdInMailboxRequest'
81
+ GET_MAILBOX_METADATA_REQUEST = 'GetMailboxMetadataRequest'
82
+ GET_MINI_CAL_REQUEST = 'GetMiniCalRequest'
83
+ GET_MODIFIED_ITEMS_I_DS_REQUEST = 'GetModifiedItemsIDsRequest'
84
+ GET_MSG_REQUEST = 'GetMsgRequest'
85
+ GET_MSG_METADATA_REQUEST = 'GetMsgMetadataRequest'
86
+ GET_NOTE_REQUEST = 'GetNoteRequest'
87
+ GET_NOTIFICATIONS_REQUEST = 'GetNotificationsRequest'
88
+ GET_OUTGOING_FILTER_RULES_REQUEST = 'GetOutgoingFilterRulesRequest'
89
+ GET_PERMISSION_REQUEST = 'GetPermissionRequest'
90
+ GET_RECUR_REQUEST = 'GetRecurRequest'
91
+ GET_SEARCH_FOLDER_REQUEST = 'GetSearchFolderRequest'
92
+ GET_SHARE_DETAILS_REQUEST = 'GetShareDetailsRequest'
93
+ GET_SHARE_NOTIFICATIONS_REQUEST = 'GetShareNotificationsRequest'
94
+ GET_SPELL_DICTIONARIES_REQUEST = 'GetSpellDictionariesRequest'
95
+ GET_SYSTEM_RETENTION_POLICY_REQUEST = 'GetSystemRetentionPolicyRequest'
96
+ GET_TAG_REQUEST = 'GetTagRequest'
97
+ GET_TASK_REQUEST = 'GetTaskRequest'
98
+ GET_TASK_SUMMARIES_REQUEST = 'GetTaskSummariesRequest'
99
+ GET_WATCHERS_REQUEST = 'GetWatchersRequest'
100
+ GET_WATCHING_ITEMS_REQUEST = 'GetWatchingItemsRequest'
101
+ GET_WORKING_HOURS_REQUEST = 'GetWorkingHoursRequest'
102
+ GET_YAHOO_AUTH_TOKEN_REQUEST = 'GetYahooAuthTokenRequest'
103
+ GET_YAHOO_COOKIE_REQUEST = 'GetYahooCookieRequest'
104
+ GRANT_PERMISSION_REQUEST = 'GrantPermissionRequest'
105
+ I_CAL_REPLY_REQUEST = 'ICalReplyRequest'
106
+ IMAP_COPY_REQUEST = 'IMAPCopyRequest'
107
+ IMPORT_APPOINTMENTS_REQUEST = 'ImportAppointmentsRequest'
108
+ IMPORT_CONTACTS_REQUEST = 'ImportContactsRequest'
109
+ IMPORT_DATA_REQUEST = 'ImportDataRequest'
110
+ INVALIDATE_REMINDER_DEVICE_REQUEST = 'InvalidateReminderDeviceRequest'
111
+ ITEM_ACTION_REQUEST = 'ItemActionRequest'
112
+ LIST_DOCUMENT_REVISIONS_REQUEST = 'ListDocumentRevisionsRequest'
113
+ LIST_IMAP_SUBSCRIPTIONS_REQUEST = 'ListIMAPSubscriptionsRequest'
114
+ MODIFY_APPOINTMENT_REQUEST = 'ModifyAppointmentRequest'
115
+ MODIFY_CONTACT_REQUEST = 'ModifyContactRequest'
116
+ MODIFY_DATA_SOURCE_REQUEST = 'ModifyDataSourceRequest'
117
+ MODIFY_FILTER_RULES_REQUEST = 'ModifyFilterRulesRequest'
118
+ MODIFY_MAILBOX_METADATA_REQUEST = 'ModifyMailboxMetadataRequest'
119
+ MODIFY_OUTGOING_FILTER_RULES_REQUEST = 'ModifyOutgoingFilterRulesRequest'
120
+ MODIFY_PROFILE_IMAGE_REQUEST = 'ModifyProfileImageRequest'
121
+ MODIFY_SEARCH_FOLDER_REQUEST = 'ModifySearchFolderRequest'
122
+ MODIFY_TASK_REQUEST = 'ModifyTaskRequest'
123
+ MSG_ACTION_REQUEST = 'MsgActionRequest'
124
+ NO_OP_REQUEST = 'NoOpRequest'
125
+ NOTE_ACTION_REQUEST = 'NoteActionRequest'
126
+ OPEN_IMAP_FOLDER_REQUEST = 'OpenIMAPFolderRequest'
127
+ PURGE_REVISION_REQUEST = 'PurgeRevisionRequest'
128
+ RANKING_ACTION_REQUEST = 'RankingActionRequest'
129
+ RECORD_IMAP_SESSION_REQUEST = 'RecordIMAPSessionRequest'
130
+ RECOVER_ACCOUNT_REQUEST = 'RecoverAccountRequest'
131
+ REGISTER_DEVICE_REQUEST = 'RegisterDeviceRequest'
132
+ REMOVE_ATTACHMENTS_REQUEST = 'RemoveAttachmentsRequest'
133
+ RESET_RECENT_MESSAGE_COUNT_REQUEST = 'ResetRecentMessageCountRequest'
134
+ RESTORE_CONTACTS_REQUEST = 'RestoreContactsRequest'
135
+ REVOKE_PERMISSION_REQUEST = 'RevokePermissionRequest'
136
+ SAVE_DOCUMENT_REQUEST = 'SaveDocumentRequest'
137
+ SAVE_DRAFT_REQUEST = 'SaveDraftRequest'
138
+ SAVE_IMAP_SUBSCRIPTIONS_REQUEST = 'SaveIMAPSubscriptionsRequest'
139
+ SEARCH_REQUEST = 'SearchRequest'
140
+ SEARCH_ACTION_REQUEST = 'SearchActionRequest'
141
+ SEARCH_CONV_REQUEST = 'SearchConvRequest'
142
+ SEND_DELIVERY_REPORT_REQUEST = 'SendDeliveryReportRequest'
143
+ SEND_INVITE_REPLY_REQUEST = 'SendInviteReplyRequest'
144
+ SEND_MSG_REQUEST = 'SendMsgRequest'
145
+ SEND_SECURE_MSG_REQUEST = 'SendSecureMsgRequest'
146
+ SEND_SHARE_NOTIFICATION_REQUEST = 'SendShareNotificationRequest'
147
+ SEND_VERIFICATION_CODE_REQUEST = 'SendVerificationCodeRequest'
148
+ SET_APPOINTMENT_REQUEST = 'SetAppointmentRequest'
149
+ SET_CUSTOM_METADATA_REQUEST = 'SetCustomMetadataRequest'
150
+ SET_MAILBOX_METADATA_REQUEST = 'SetMailboxMetadataRequest'
151
+ SET_RECOVERY_ACCOUNT_REQUEST = 'SetRecoveryAccountRequest'
152
+ SET_TASK_REQUEST = 'SetTaskRequest'
153
+ SNOOZE_CALENDAR_ITEM_ALARM_REQUEST = 'SnoozeCalendarItemAlarmRequest'
154
+ SYNC_REQUEST = 'SyncRequest'
155
+ TAG_ACTION_REQUEST = 'TagActionRequest'
156
+ TEST_DATA_SOURCE_REQUEST = 'TestDataSourceRequest'
157
+ UPDATE_DEVICE_STATUS_REQUEST = 'UpdateDeviceStatusRequest'
158
+ VERIFY_CODE_REQUEST = 'VerifyCodeRequest'
159
+ WAIT_SET_REQUEST = 'WaitSetRequest'
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ module SoapConstants
6
+ BY = 'by'
7
+ ID = 'id'
8
+ NAME = 'name'
9
+ A = 'a'
10
+ N = 'n'
11
+ TRUE = 'TRUE'
12
+ FALSE = 'FALSE'
13
+ DISABLED = 'disabled'
14
+ ENABLED = 'enabled'
15
+
16
+ ACCOUNT = 'account'
17
+ TIMESTAMP = 'timestamp'
18
+ PREAUTH = 'preauth'
19
+
20
+ SERVER = 'server'
21
+ COS = 'cos'
22
+ DL = 'dl'
23
+ DOMAIN = 'domain'
24
+ CAL_RESOURCE = 'calresource'
25
+
26
+ SEARCH = 'search'
27
+ ACTION = 'action'
28
+ IDENTITY = 'identity'
29
+ SIGNATURE = 'signature'
30
+ ACE = 'ace'
31
+ ATTRS = 'attrs'
32
+ APPLY_COS = 'applyCos'
33
+
34
+ TYPE = 'type'
35
+ CONTENT = 'content'
36
+
37
+ APPOINTMENT = 'appointment'
38
+ DOCUMENT = 'document'
39
+ MESSAGE = 'message'
40
+ TAG = 'tag'
41
+
42
+ DATE_ASC = 'dateAsc'
43
+ DATE_DESC = 'dateDesc'
44
+
45
+ QUERY = 'query'
46
+ MBOX = 'mbox'
47
+ SERVICE = 'service'
48
+
49
+ LMTP = 'lmtp'
50
+ SMTP = 'smtp'
51
+
52
+ TEXT_CALENDAR = 'text/calendar'
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ class SoapContext
6
+ # attr_reader :token, :user_agent, :target_server
7
+
8
+ def initialize
9
+ @token = nil
10
+ @user_agent = 'zmsoap'
11
+ @target_server = nil
12
+ end
13
+
14
+ def token(str)
15
+ @token = str
16
+ self
17
+ end
18
+
19
+ def user_agent(str)
20
+ @user_agent = str
21
+ self
22
+ end
23
+
24
+ def target_server(str)
25
+ @target_server = str
26
+ self
27
+ end
28
+
29
+ def to_hash
30
+ {
31
+ authToken: @token,
32
+ userAgent: { name: @user_agent },
33
+ targetServer: @target_server
34
+ }.delete_if { |_, v| v.nil? }
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ class SoapElement
6
+ class << self
7
+ def create(name)
8
+ new(name, nil)
9
+ end
10
+
11
+ def account(name)
12
+ new(name, SoapAccountConstants::NAMESPACE_STR)
13
+ end
14
+
15
+ def mail(name)
16
+ new(name, SoapMailConstants::NAMESPACE_STR)
17
+ end
18
+
19
+ def admin(name)
20
+ new(name, SoapAdminConstants::NAMESPACE_STR)
21
+ end
22
+ end
23
+
24
+ attr_reader :name
25
+
26
+ def initialize(name, namespace)
27
+ @name = name
28
+ @namespace = namespace
29
+ @attributes = {}
30
+ @nodes = []
31
+ @content = nil
32
+ end
33
+
34
+ def add_attribute(key, value)
35
+ @attributes[key.to_sym] = value
36
+ self
37
+ end
38
+
39
+ def add_attributes(hash)
40
+ return self if hash.nil?
41
+
42
+ hash.transform_keys!(&:to_sym)
43
+ @attributes.merge!(hash)
44
+ self
45
+ end
46
+
47
+ def add_content(content)
48
+ @content = content
49
+ self
50
+ end
51
+
52
+ def add_node(node)
53
+ @nodes << node
54
+ self
55
+ end
56
+
57
+ def to_json(*_args)
58
+ to_hash.to_json
59
+ end
60
+
61
+ def to_struct
62
+ struct = properties
63
+
64
+ @nodes.each do |node|
65
+ if struct[node.name].nil?
66
+ struct.merge!(node.to_hash)
67
+ else
68
+ struct[node.name] = [struct[node.name]] unless struct[node.name].is_a?(Array)
69
+ struct[node.name] << node.to_struct
70
+ end
71
+ end
72
+
73
+ struct
74
+ end
75
+
76
+ def to_hash
77
+ { @name => to_struct }
78
+ end
79
+
80
+ def properties
81
+ return @content.map { |content| { _content: content } } if @content.is_a?(Array)
82
+
83
+ hash = @namespace.nil? ? {} : { _jsns: @namespace }
84
+ hash.merge!(@attributes) unless @attributes.empty?
85
+ hash.merge!({ _content: @content }) unless @content.nil?
86
+ hash
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'zm/client/soap_request/soap_context'
4
+ require 'zm/client/soap_request/admin_soap_constants'
5
+ require 'zm/client/soap_request/account_soap_constants'
6
+ require 'zm/client/soap_request/mail_soap_constants'
7
+ require 'zm/client/soap_request/soap_constants'
8
+ require 'zm/client/soap_request/soap_element'
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zm
4
+ module Client
5
+ class AccountObject
6
+ class TagsCollection
7
+ def initialize(parent)
8
+ @parent = parent
9
+ end
10
+
11
+ def all
12
+ @all || all!
13
+ end
14
+
15
+ def all!
16
+ @all = @parent.tn
17
+ end
18
+
19
+ def add!(*new_tags)
20
+ Utils.map_format(new_tags, String, :name)
21
+ return false if new_tags.delete_if { |tag_name| all.include?(tag_name) }.empty?
22
+
23
+ new_tags.each do |tag_name|
24
+ attrs = {
25
+ op: :tag,
26
+ id: @parent.id,
27
+ tn: tag_name
28
+ }
29
+
30
+ do_action(attrs)
31
+ end
32
+
33
+ @parent.tn += new_tags
34
+ all!
35
+ end
36
+
37
+ def remove!(*tag_names)
38
+ Utils.map_format(tag_names, String, :name)
39
+ return false if tag_names.delete_if { |tag_name| !all.include?(tag_name) }.empty?
40
+
41
+ tag_names.each do |tag_name|
42
+ attrs = {
43
+ op: '!tag',
44
+ id: @parent.id,
45
+ tn: tag_name
46
+ }
47
+
48
+ do_action(attrs)
49
+ end
50
+
51
+ @parent.tn -= tag_names
52
+ all!
53
+ end
54
+
55
+ def do_action(attrs)
56
+ soap_request = SoapElement.mail(SoapMailConstants::ITEM_ACTION_REQUEST)
57
+ node_action = SoapElement.create(SoapConstants::ACTION).add_attributes(attrs)
58
+ soap_request.add_node(node_action)
59
+
60
+ @parent.parent.sacc.invoke(soap_request)
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -3,47 +3,59 @@
3
3
  module Zm
4
4
  module Client
5
5
  # class account tag
6
- class Tag < Base::AccountObject
7
- include Zm::Model::AttributeChangeObserver
6
+ class Tag < Base::Object
7
+ # include Zm::Model::AttributeChangeObserver
8
8
 
9
- INSTANCE_VARIABLE_KEYS = %i[id name color rgb]
9
+ attr_accessor :id, :name, :color, :rgb
10
10
 
11
- attr_accessor :id
12
-
13
- define_changed_attributes :name, :color, :rgb
14
-
15
- def all_instance_variable_keys
16
- INSTANCE_VARIABLE_KEYS
17
- end
11
+ # define_changed_attributes :name, :color, :rgb
18
12
 
19
13
  def create!
20
- rep = @parent.sacc.create_tag(@parent.token, jsns_builder.to_jsns)
21
- json = rep[:Body][:CreateTagResponse][:tag].first
14
+ rep = @parent.sacc.invoke(jsns_builder.to_jsns)
15
+ json = rep[:CreateTagResponse][:tag].first
22
16
  TagJsnsInitializer.update(self, json)
23
- super
17
+ @id
24
18
  end
25
19
 
26
20
  def modify!
27
- @parent.sacc.tag_action(@parent.token, jsns_builder.to_update) if color_changed? || rgb_changed?
28
- super
21
+ # return unless color_changed? || rgb_changed?
22
+
23
+ @parent.sacc.invoke(jsns_builder.to_update)
24
+ true
29
25
  end
30
26
 
31
27
  def update!(hash)
32
- # todo
28
+ return false if hash.delete_if { |k, v| v.nil? || !respond_to?(k) }.empty?
29
+
30
+ do_update!(hash)
31
+
32
+ hash.each do |key, value|
33
+ update_attribute(key, value)
34
+ end
35
+
36
+ true
33
37
  end
34
38
 
35
- def delete!
36
- @parent.sacc.tag_action(@parent.token, jsns_builder.to_delete)
37
- super
39
+ def rename!(new_name)
40
+ return false if new_name == @name
41
+
42
+ @parent.sacc.invoke(jsns_builder.to_rename(new_name))
43
+ @name = new_name
38
44
  end
39
45
 
40
- def rename!
41
- @parent.sacc.tag_action(@parent.token, jsns_builder.to_rename) if name_changed?
42
- super
46
+ def delete!
47
+ return false if @id.nil?
48
+
49
+ @parent.sacc.invoke(jsns_builder.to_delete)
50
+ @id = nil
43
51
  end
44
52
 
45
53
  private
46
54
 
55
+ def do_update!(hash)
56
+ @parent.sacc.invoke(jsns_builder.to_patch(hash))
57
+ end
58
+
47
59
  def jsns_builder
48
60
  @jsns_builder ||= TagJsnsBuilder.new(self)
49
61
  end
@@ -3,52 +3,31 @@
3
3
  module Zm
4
4
  module Client
5
5
  # class for account tag jsns builder
6
- class TagJsnsBuilder
7
-
8
- def initialize(tag)
9
- @tag = tag
10
- end
11
-
6
+ class TagJsnsBuilder < BaseAccountJsnsBuilder
12
7
  def to_jsns
13
- tag = {
14
- name: @tag.name,
15
- color: @tag.color,
16
- rgb: @tag.rgb
8
+ attrs = {
9
+ name: @item.name,
10
+ color: @item.color,
11
+ rgb: @item.rgb
17
12
  }.delete_if { |_, v| v.nil? }
18
13
 
19
- { tag: tag }
14
+ soap_request = SoapElement.mail(SoapMailConstants::CREATE_TAG_REQUEST)
15
+ node_tag = SoapElement.create(SoapConstants::TAG).add_attributes(attrs)
16
+ soap_request.add_node(node_tag)
17
+ soap_request
20
18
  end
21
19
 
22
20
  alias to_create to_jsns
23
21
 
24
22
  def to_update
25
- action = {
23
+ attrs = {
26
24
  op: :update,
27
- id: @tag.id,
28
- color: @tag.color,
29
- rgb: @tag.rgb
25
+ id: @item.id,
26
+ color: @item.color,
27
+ rgb: @item.rgb
30
28
  }.reject { |_, v| v.nil? }
31
29
 
32
- { action: action }
33
- end
34
-
35
- def to_delete
36
- action = {
37
- op: :delete,
38
- id: @tag.id
39
- }
40
-
41
- { action: action }
42
- end
43
-
44
- def to_rename
45
- action = {
46
- op: :rename,
47
- id: @tag.id,
48
- name: @tag.name
49
- }
50
-
51
- { action: action }
30
+ build(attrs)
52
31
  end
53
32
  end
54
33
  end
@@ -7,16 +7,14 @@ module Zm
7
7
  class << self
8
8
  def create(parent, json)
9
9
  item = Tag.new(parent)
10
-
11
10
  update(item, json)
12
11
  end
13
12
 
14
13
  def update(item, json)
15
-
16
- item.instance_variable_set(:@id, json[:id])
17
- item.instance_variable_set(:@name, json[:name])
18
- item.instance_variable_set(:@color, json[:color].to_i)
19
- item.instance_variable_set(:@rgb, json[:rgb])
14
+ item.id = json[:id].to_i
15
+ item.name = json[:name]
16
+ item.color = json[:color].to_i
17
+ item.rgb = json[:rgb]
20
18
 
21
19
  item
22
20
  end
@@ -6,7 +6,6 @@ module Zm
6
6
  class TagBuilder < Base::ObjectsBuilder
7
7
  def initialize(parent, json)
8
8
  super(parent, json)
9
- @child_class = Tag
10
9
  @json_item_key = :tag
11
10
  end
12
11
 
@@ -13,7 +13,8 @@ module Zm
13
13
  private
14
14
 
15
15
  def make_query
16
- @parent.sacc.get_tag(@parent.token)
16
+ soap_request = SoapElement.mail(SoapMailConstants::GET_TAG_REQUEST)
17
+ @parent.sacc.invoke(soap_request)
17
18
  end
18
19
  end
19
20
  end
data/lib/zm/client/tag.rb CHANGED
@@ -5,3 +5,4 @@ require 'zm/client/tag/tag_jsns_builder'
5
5
  require 'zm/client/tag/tag_jsns_initializer'
6
6
  require 'zm/client/tag/tags_builder'
7
7
  require 'zm/client/tag/tags_collection'
8
+ require 'zm/client/tag/account_object_tags_collection'