@backtomyfuture/exchange-cli-win32-ia32 0.1.10

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 (774) hide show
  1. package/bin/_internal/VCRUNTIME140.dll +0 -0
  2. package/bin/_internal/_asyncio.pyd +0 -0
  3. package/bin/_internal/_bz2.pyd +0 -0
  4. package/bin/_internal/_cffi_backend.cp312-win32.pyd +0 -0
  5. package/bin/_internal/_ctypes.pyd +0 -0
  6. package/bin/_internal/_decimal.pyd +0 -0
  7. package/bin/_internal/_elementtree.pyd +0 -0
  8. package/bin/_internal/_hashlib.pyd +0 -0
  9. package/bin/_internal/_lzma.pyd +0 -0
  10. package/bin/_internal/_multiprocessing.pyd +0 -0
  11. package/bin/_internal/_overlapped.pyd +0 -0
  12. package/bin/_internal/_queue.pyd +0 -0
  13. package/bin/_internal/_socket.pyd +0 -0
  14. package/bin/_internal/_ssl.pyd +0 -0
  15. package/bin/_internal/_uuid.pyd +0 -0
  16. package/bin/_internal/_wmi.pyd +0 -0
  17. package/bin/_internal/_zoneinfo.pyd +0 -0
  18. package/bin/_internal/ada92cb5d92a588d1b93__mypyc.cp312-win32.pyd +0 -0
  19. package/bin/_internal/base_library.zip +0 -0
  20. package/bin/_internal/certifi/cacert.pem +3959 -0
  21. package/bin/_internal/certifi/py.typed +0 -0
  22. package/bin/_internal/charset_normalizer/cd.cp312-win32.pyd +0 -0
  23. package/bin/_internal/charset_normalizer/md.cp312-win32.pyd +0 -0
  24. package/bin/_internal/click-8.4.2.dist-info/INSTALLER +1 -0
  25. package/bin/_internal/click-8.4.2.dist-info/METADATA +84 -0
  26. package/bin/_internal/click-8.4.2.dist-info/RECORD +40 -0
  27. package/bin/_internal/click-8.4.2.dist-info/WHEEL +4 -0
  28. package/bin/_internal/click-8.4.2.dist-info/licenses/LICENSE.txt +28 -0
  29. package/bin/_internal/cryptography/hazmat/bindings/_rust.pyd +0 -0
  30. package/bin/_internal/cryptography-48.0.1.dist-info/INSTALLER +1 -0
  31. package/bin/_internal/cryptography-48.0.1.dist-info/METADATA +110 -0
  32. package/bin/_internal/cryptography-48.0.1.dist-info/RECORD +195 -0
  33. package/bin/_internal/cryptography-48.0.1.dist-info/WHEEL +4 -0
  34. package/bin/_internal/cryptography-48.0.1.dist-info/licenses/LICENSE +3 -0
  35. package/bin/_internal/cryptography-48.0.1.dist-info/licenses/LICENSE.APACHE +202 -0
  36. package/bin/_internal/cryptography-48.0.1.dist-info/licenses/LICENSE.BSD +27 -0
  37. package/bin/_internal/cryptography-48.0.1.dist-info/sboms/cryptography-rust.cyclonedx.json +1332 -0
  38. package/bin/_internal/cryptography-48.0.1.dist-info/sboms/sbom.json +43 -0
  39. package/bin/_internal/exchangelib/__init__.py +120 -0
  40. package/bin/_internal/exchangelib/account.py +896 -0
  41. package/bin/_internal/exchangelib/attachments.py +268 -0
  42. package/bin/_internal/exchangelib/autodiscover/__init__.py +24 -0
  43. package/bin/_internal/exchangelib/autodiscover/cache.py +150 -0
  44. package/bin/_internal/exchangelib/autodiscover/discovery.py +491 -0
  45. package/bin/_internal/exchangelib/autodiscover/protocol.py +58 -0
  46. package/bin/_internal/exchangelib/configuration.py +106 -0
  47. package/bin/_internal/exchangelib/credentials.py +319 -0
  48. package/bin/_internal/exchangelib/errors.py +1710 -0
  49. package/bin/_internal/exchangelib/ewsdatetime.py +309 -0
  50. package/bin/_internal/exchangelib/extended_properties.py +311 -0
  51. package/bin/_internal/exchangelib/fields.py +1842 -0
  52. package/bin/_internal/exchangelib/folders/__init__.py +249 -0
  53. package/bin/_internal/exchangelib/folders/base.py +954 -0
  54. package/bin/_internal/exchangelib/folders/collections.py +576 -0
  55. package/bin/_internal/exchangelib/folders/known_folders.py +856 -0
  56. package/bin/_internal/exchangelib/folders/queryset.py +187 -0
  57. package/bin/_internal/exchangelib/folders/roots.py +390 -0
  58. package/bin/_internal/exchangelib/indexed_properties.py +96 -0
  59. package/bin/_internal/exchangelib/items/__init__.py +147 -0
  60. package/bin/_internal/exchangelib/items/base.py +241 -0
  61. package/bin/_internal/exchangelib/items/calendar_item.py +466 -0
  62. package/bin/_internal/exchangelib/items/contact.py +263 -0
  63. package/bin/_internal/exchangelib/items/item.py +413 -0
  64. package/bin/_internal/exchangelib/items/message.py +201 -0
  65. package/bin/_internal/exchangelib/items/post.py +38 -0
  66. package/bin/_internal/exchangelib/items/task.py +139 -0
  67. package/bin/_internal/exchangelib/properties.py +2364 -0
  68. package/bin/_internal/exchangelib/protocol.py +823 -0
  69. package/bin/_internal/exchangelib/queryset.py +691 -0
  70. package/bin/_internal/exchangelib/recurrence.py +349 -0
  71. package/bin/_internal/exchangelib/restriction.py +568 -0
  72. package/bin/_internal/exchangelib/services/__init__.py +117 -0
  73. package/bin/_internal/exchangelib/services/archive_item.py +33 -0
  74. package/bin/_internal/exchangelib/services/common.py +983 -0
  75. package/bin/_internal/exchangelib/services/convert_id.py +45 -0
  76. package/bin/_internal/exchangelib/services/copy_item.py +7 -0
  77. package/bin/_internal/exchangelib/services/create_attachment.py +34 -0
  78. package/bin/_internal/exchangelib/services/create_folder.py +45 -0
  79. package/bin/_internal/exchangelib/services/create_item.py +97 -0
  80. package/bin/_internal/exchangelib/services/create_user_configuration.py +19 -0
  81. package/bin/_internal/exchangelib/services/delete_attachment.py +28 -0
  82. package/bin/_internal/exchangelib/services/delete_folder.py +21 -0
  83. package/bin/_internal/exchangelib/services/delete_item.py +51 -0
  84. package/bin/_internal/exchangelib/services/delete_user_configuration.py +19 -0
  85. package/bin/_internal/exchangelib/services/empty_folder.py +25 -0
  86. package/bin/_internal/exchangelib/services/expand_dl.py +21 -0
  87. package/bin/_internal/exchangelib/services/export_items.py +27 -0
  88. package/bin/_internal/exchangelib/services/find_folder.py +80 -0
  89. package/bin/_internal/exchangelib/services/find_item.py +112 -0
  90. package/bin/_internal/exchangelib/services/find_people.py +106 -0
  91. package/bin/_internal/exchangelib/services/get_attachment.py +117 -0
  92. package/bin/_internal/exchangelib/services/get_delegate.py +45 -0
  93. package/bin/_internal/exchangelib/services/get_events.py +39 -0
  94. package/bin/_internal/exchangelib/services/get_folder.py +65 -0
  95. package/bin/_internal/exchangelib/services/get_item.py +41 -0
  96. package/bin/_internal/exchangelib/services/get_mail_tips.py +43 -0
  97. package/bin/_internal/exchangelib/services/get_persona.py +31 -0
  98. package/bin/_internal/exchangelib/services/get_room_lists.py +21 -0
  99. package/bin/_internal/exchangelib/services/get_rooms.py +21 -0
  100. package/bin/_internal/exchangelib/services/get_searchable_mailboxes.py +48 -0
  101. package/bin/_internal/exchangelib/services/get_server_time_zones.py +39 -0
  102. package/bin/_internal/exchangelib/services/get_streaming_events.py +102 -0
  103. package/bin/_internal/exchangelib/services/get_user_availability.py +67 -0
  104. package/bin/_internal/exchangelib/services/get_user_configuration.py +43 -0
  105. package/bin/_internal/exchangelib/services/get_user_oof_settings.py +40 -0
  106. package/bin/_internal/exchangelib/services/get_user_settings.py +87 -0
  107. package/bin/_internal/exchangelib/services/inbox_rules.py +104 -0
  108. package/bin/_internal/exchangelib/services/mark_as_junk.py +27 -0
  109. package/bin/_internal/exchangelib/services/move_folder.py +27 -0
  110. package/bin/_internal/exchangelib/services/move_item.py +28 -0
  111. package/bin/_internal/exchangelib/services/resolve_names.py +104 -0
  112. package/bin/_internal/exchangelib/services/send_item.py +26 -0
  113. package/bin/_internal/exchangelib/services/send_notification.py +43 -0
  114. package/bin/_internal/exchangelib/services/set_user_oof_settings.py +34 -0
  115. package/bin/_internal/exchangelib/services/subscribe.py +125 -0
  116. package/bin/_internal/exchangelib/services/sync_folder_hierarchy.py +95 -0
  117. package/bin/_internal/exchangelib/services/sync_folder_items.py +77 -0
  118. package/bin/_internal/exchangelib/services/unsubscribe.py +21 -0
  119. package/bin/_internal/exchangelib/services/update_folder.py +158 -0
  120. package/bin/_internal/exchangelib/services/update_item.py +113 -0
  121. package/bin/_internal/exchangelib/services/update_user_configuration.py +17 -0
  122. package/bin/_internal/exchangelib/services/upload_items.py +47 -0
  123. package/bin/_internal/exchangelib/settings.py +88 -0
  124. package/bin/_internal/exchangelib/transport.py +214 -0
  125. package/bin/_internal/exchangelib/util.py +894 -0
  126. package/bin/_internal/exchangelib/version.py +320 -0
  127. package/bin/_internal/exchangelib/winzone.py +662 -0
  128. package/bin/_internal/exchangelib-5.6.0.dist-info/INSTALLER +1 -0
  129. package/bin/_internal/exchangelib-5.6.0.dist-info/METADATA +77 -0
  130. package/bin/_internal/exchangelib-5.6.0.dist-info/RECORD +184 -0
  131. package/bin/_internal/exchangelib-5.6.0.dist-info/WHEEL +5 -0
  132. package/bin/_internal/exchangelib-5.6.0.dist-info/licenses/LICENSE +21 -0
  133. package/bin/_internal/exchangelib-5.6.0.dist-info/top_level.txt +1 -0
  134. package/bin/_internal/libcrypto-3.dll +0 -0
  135. package/bin/_internal/libffi-8.dll +0 -0
  136. package/bin/_internal/libssl-3.dll +0 -0
  137. package/bin/_internal/lxml/_elementpath.cp312-win32.pyd +0 -0
  138. package/bin/_internal/lxml/builder.cp312-win32.pyd +0 -0
  139. package/bin/_internal/lxml/etree.cp312-win32.pyd +0 -0
  140. package/bin/_internal/lxml/html/_difflib.cp312-win32.pyd +0 -0
  141. package/bin/_internal/lxml/html/diff.cp312-win32.pyd +0 -0
  142. package/bin/_internal/lxml/isoschematron/resources/rng/iso-schematron.rng +709 -0
  143. package/bin/_internal/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl +75 -0
  144. package/bin/_internal/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl +77 -0
  145. package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl +313 -0
  146. package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl +1160 -0
  147. package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl +55 -0
  148. package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl +1796 -0
  149. package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl +588 -0
  150. package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt +84 -0
  151. package/bin/_internal/lxml/objectify.cp312-win32.pyd +0 -0
  152. package/bin/_internal/lxml/sax.cp312-win32.pyd +0 -0
  153. package/bin/_internal/pyexpat.pyd +0 -0
  154. package/bin/_internal/python3.dll +0 -0
  155. package/bin/_internal/python312.dll +0 -0
  156. package/bin/_internal/select.pyd +0 -0
  157. package/bin/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt +2 -0
  158. package/bin/_internal/sspilib/raw/_context_attributes.pyd +0 -0
  159. package/bin/_internal/sspilib/raw/_credential.pyd +0 -0
  160. package/bin/_internal/sspilib/raw/_credential_attributes.pyd +0 -0
  161. package/bin/_internal/sspilib/raw/_message.pyd +0 -0
  162. package/bin/_internal/sspilib/raw/_ntstatus.pyd +0 -0
  163. package/bin/_internal/sspilib/raw/_security_buffer.pyd +0 -0
  164. package/bin/_internal/sspilib/raw/_security_context.pyd +0 -0
  165. package/bin/_internal/sspilib/raw/_security_package.pyd +0 -0
  166. package/bin/_internal/sspilib/raw/_text.pyd +0 -0
  167. package/bin/_internal/tzdata/zoneinfo/Africa/Abidjan +0 -0
  168. package/bin/_internal/tzdata/zoneinfo/Africa/Accra +0 -0
  169. package/bin/_internal/tzdata/zoneinfo/Africa/Addis_Ababa +0 -0
  170. package/bin/_internal/tzdata/zoneinfo/Africa/Algiers +0 -0
  171. package/bin/_internal/tzdata/zoneinfo/Africa/Asmara +0 -0
  172. package/bin/_internal/tzdata/zoneinfo/Africa/Asmera +0 -0
  173. package/bin/_internal/tzdata/zoneinfo/Africa/Bamako +0 -0
  174. package/bin/_internal/tzdata/zoneinfo/Africa/Bangui +0 -0
  175. package/bin/_internal/tzdata/zoneinfo/Africa/Banjul +0 -0
  176. package/bin/_internal/tzdata/zoneinfo/Africa/Bissau +0 -0
  177. package/bin/_internal/tzdata/zoneinfo/Africa/Blantyre +0 -0
  178. package/bin/_internal/tzdata/zoneinfo/Africa/Brazzaville +0 -0
  179. package/bin/_internal/tzdata/zoneinfo/Africa/Bujumbura +0 -0
  180. package/bin/_internal/tzdata/zoneinfo/Africa/Cairo +0 -0
  181. package/bin/_internal/tzdata/zoneinfo/Africa/Casablanca +0 -0
  182. package/bin/_internal/tzdata/zoneinfo/Africa/Ceuta +0 -0
  183. package/bin/_internal/tzdata/zoneinfo/Africa/Conakry +0 -0
  184. package/bin/_internal/tzdata/zoneinfo/Africa/Dakar +0 -0
  185. package/bin/_internal/tzdata/zoneinfo/Africa/Dar_es_Salaam +0 -0
  186. package/bin/_internal/tzdata/zoneinfo/Africa/Djibouti +0 -0
  187. package/bin/_internal/tzdata/zoneinfo/Africa/Douala +0 -0
  188. package/bin/_internal/tzdata/zoneinfo/Africa/El_Aaiun +0 -0
  189. package/bin/_internal/tzdata/zoneinfo/Africa/Freetown +0 -0
  190. package/bin/_internal/tzdata/zoneinfo/Africa/Gaborone +0 -0
  191. package/bin/_internal/tzdata/zoneinfo/Africa/Harare +0 -0
  192. package/bin/_internal/tzdata/zoneinfo/Africa/Johannesburg +0 -0
  193. package/bin/_internal/tzdata/zoneinfo/Africa/Juba +0 -0
  194. package/bin/_internal/tzdata/zoneinfo/Africa/Kampala +0 -0
  195. package/bin/_internal/tzdata/zoneinfo/Africa/Khartoum +0 -0
  196. package/bin/_internal/tzdata/zoneinfo/Africa/Kigali +0 -0
  197. package/bin/_internal/tzdata/zoneinfo/Africa/Kinshasa +0 -0
  198. package/bin/_internal/tzdata/zoneinfo/Africa/Lagos +0 -0
  199. package/bin/_internal/tzdata/zoneinfo/Africa/Libreville +0 -0
  200. package/bin/_internal/tzdata/zoneinfo/Africa/Lome +0 -0
  201. package/bin/_internal/tzdata/zoneinfo/Africa/Luanda +0 -0
  202. package/bin/_internal/tzdata/zoneinfo/Africa/Lubumbashi +0 -0
  203. package/bin/_internal/tzdata/zoneinfo/Africa/Lusaka +0 -0
  204. package/bin/_internal/tzdata/zoneinfo/Africa/Malabo +0 -0
  205. package/bin/_internal/tzdata/zoneinfo/Africa/Maputo +0 -0
  206. package/bin/_internal/tzdata/zoneinfo/Africa/Maseru +0 -0
  207. package/bin/_internal/tzdata/zoneinfo/Africa/Mbabane +0 -0
  208. package/bin/_internal/tzdata/zoneinfo/Africa/Mogadishu +0 -0
  209. package/bin/_internal/tzdata/zoneinfo/Africa/Monrovia +0 -0
  210. package/bin/_internal/tzdata/zoneinfo/Africa/Nairobi +0 -0
  211. package/bin/_internal/tzdata/zoneinfo/Africa/Ndjamena +0 -0
  212. package/bin/_internal/tzdata/zoneinfo/Africa/Niamey +0 -0
  213. package/bin/_internal/tzdata/zoneinfo/Africa/Nouakchott +0 -0
  214. package/bin/_internal/tzdata/zoneinfo/Africa/Ouagadougou +0 -0
  215. package/bin/_internal/tzdata/zoneinfo/Africa/Porto-Novo +0 -0
  216. package/bin/_internal/tzdata/zoneinfo/Africa/Sao_Tome +0 -0
  217. package/bin/_internal/tzdata/zoneinfo/Africa/Timbuktu +0 -0
  218. package/bin/_internal/tzdata/zoneinfo/Africa/Tripoli +0 -0
  219. package/bin/_internal/tzdata/zoneinfo/Africa/Tunis +0 -0
  220. package/bin/_internal/tzdata/zoneinfo/Africa/Windhoek +0 -0
  221. package/bin/_internal/tzdata/zoneinfo/America/Adak +0 -0
  222. package/bin/_internal/tzdata/zoneinfo/America/Anchorage +0 -0
  223. package/bin/_internal/tzdata/zoneinfo/America/Anguilla +0 -0
  224. package/bin/_internal/tzdata/zoneinfo/America/Antigua +0 -0
  225. package/bin/_internal/tzdata/zoneinfo/America/Araguaina +0 -0
  226. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Buenos_Aires +0 -0
  227. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Catamarca +0 -0
  228. package/bin/_internal/tzdata/zoneinfo/America/Argentina/ComodRivadavia +0 -0
  229. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Cordoba +0 -0
  230. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Jujuy +0 -0
  231. package/bin/_internal/tzdata/zoneinfo/America/Argentina/La_Rioja +0 -0
  232. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Mendoza +0 -0
  233. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Rio_Gallegos +0 -0
  234. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Salta +0 -0
  235. package/bin/_internal/tzdata/zoneinfo/America/Argentina/San_Juan +0 -0
  236. package/bin/_internal/tzdata/zoneinfo/America/Argentina/San_Luis +0 -0
  237. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Tucuman +0 -0
  238. package/bin/_internal/tzdata/zoneinfo/America/Argentina/Ushuaia +0 -0
  239. package/bin/_internal/tzdata/zoneinfo/America/Aruba +0 -0
  240. package/bin/_internal/tzdata/zoneinfo/America/Asuncion +0 -0
  241. package/bin/_internal/tzdata/zoneinfo/America/Atikokan +0 -0
  242. package/bin/_internal/tzdata/zoneinfo/America/Atka +0 -0
  243. package/bin/_internal/tzdata/zoneinfo/America/Bahia +0 -0
  244. package/bin/_internal/tzdata/zoneinfo/America/Bahia_Banderas +0 -0
  245. package/bin/_internal/tzdata/zoneinfo/America/Barbados +0 -0
  246. package/bin/_internal/tzdata/zoneinfo/America/Belem +0 -0
  247. package/bin/_internal/tzdata/zoneinfo/America/Belize +0 -0
  248. package/bin/_internal/tzdata/zoneinfo/America/Blanc-Sablon +0 -0
  249. package/bin/_internal/tzdata/zoneinfo/America/Boa_Vista +0 -0
  250. package/bin/_internal/tzdata/zoneinfo/America/Bogota +0 -0
  251. package/bin/_internal/tzdata/zoneinfo/America/Boise +0 -0
  252. package/bin/_internal/tzdata/zoneinfo/America/Buenos_Aires +0 -0
  253. package/bin/_internal/tzdata/zoneinfo/America/Cambridge_Bay +0 -0
  254. package/bin/_internal/tzdata/zoneinfo/America/Campo_Grande +0 -0
  255. package/bin/_internal/tzdata/zoneinfo/America/Cancun +0 -0
  256. package/bin/_internal/tzdata/zoneinfo/America/Caracas +0 -0
  257. package/bin/_internal/tzdata/zoneinfo/America/Catamarca +0 -0
  258. package/bin/_internal/tzdata/zoneinfo/America/Cayenne +0 -0
  259. package/bin/_internal/tzdata/zoneinfo/America/Cayman +0 -0
  260. package/bin/_internal/tzdata/zoneinfo/America/Chicago +0 -0
  261. package/bin/_internal/tzdata/zoneinfo/America/Chihuahua +0 -0
  262. package/bin/_internal/tzdata/zoneinfo/America/Ciudad_Juarez +0 -0
  263. package/bin/_internal/tzdata/zoneinfo/America/Coral_Harbour +0 -0
  264. package/bin/_internal/tzdata/zoneinfo/America/Cordoba +0 -0
  265. package/bin/_internal/tzdata/zoneinfo/America/Costa_Rica +0 -0
  266. package/bin/_internal/tzdata/zoneinfo/America/Coyhaique +0 -0
  267. package/bin/_internal/tzdata/zoneinfo/America/Creston +0 -0
  268. package/bin/_internal/tzdata/zoneinfo/America/Cuiaba +0 -0
  269. package/bin/_internal/tzdata/zoneinfo/America/Curacao +0 -0
  270. package/bin/_internal/tzdata/zoneinfo/America/Danmarkshavn +0 -0
  271. package/bin/_internal/tzdata/zoneinfo/America/Dawson +0 -0
  272. package/bin/_internal/tzdata/zoneinfo/America/Dawson_Creek +0 -0
  273. package/bin/_internal/tzdata/zoneinfo/America/Denver +0 -0
  274. package/bin/_internal/tzdata/zoneinfo/America/Detroit +0 -0
  275. package/bin/_internal/tzdata/zoneinfo/America/Dominica +0 -0
  276. package/bin/_internal/tzdata/zoneinfo/America/Edmonton +0 -0
  277. package/bin/_internal/tzdata/zoneinfo/America/Eirunepe +0 -0
  278. package/bin/_internal/tzdata/zoneinfo/America/El_Salvador +0 -0
  279. package/bin/_internal/tzdata/zoneinfo/America/Ensenada +0 -0
  280. package/bin/_internal/tzdata/zoneinfo/America/Fort_Nelson +0 -0
  281. package/bin/_internal/tzdata/zoneinfo/America/Fort_Wayne +0 -0
  282. package/bin/_internal/tzdata/zoneinfo/America/Fortaleza +0 -0
  283. package/bin/_internal/tzdata/zoneinfo/America/Glace_Bay +0 -0
  284. package/bin/_internal/tzdata/zoneinfo/America/Godthab +0 -0
  285. package/bin/_internal/tzdata/zoneinfo/America/Goose_Bay +0 -0
  286. package/bin/_internal/tzdata/zoneinfo/America/Grand_Turk +0 -0
  287. package/bin/_internal/tzdata/zoneinfo/America/Grenada +0 -0
  288. package/bin/_internal/tzdata/zoneinfo/America/Guadeloupe +0 -0
  289. package/bin/_internal/tzdata/zoneinfo/America/Guatemala +0 -0
  290. package/bin/_internal/tzdata/zoneinfo/America/Guayaquil +0 -0
  291. package/bin/_internal/tzdata/zoneinfo/America/Guyana +0 -0
  292. package/bin/_internal/tzdata/zoneinfo/America/Halifax +0 -0
  293. package/bin/_internal/tzdata/zoneinfo/America/Havana +0 -0
  294. package/bin/_internal/tzdata/zoneinfo/America/Hermosillo +0 -0
  295. package/bin/_internal/tzdata/zoneinfo/America/Indiana/Indianapolis +0 -0
  296. package/bin/_internal/tzdata/zoneinfo/America/Indiana/Knox +0 -0
  297. package/bin/_internal/tzdata/zoneinfo/America/Indiana/Marengo +0 -0
  298. package/bin/_internal/tzdata/zoneinfo/America/Indiana/Petersburg +0 -0
  299. package/bin/_internal/tzdata/zoneinfo/America/Indiana/Tell_City +0 -0
  300. package/bin/_internal/tzdata/zoneinfo/America/Indiana/Vevay +0 -0
  301. package/bin/_internal/tzdata/zoneinfo/America/Indiana/Vincennes +0 -0
  302. package/bin/_internal/tzdata/zoneinfo/America/Indiana/Winamac +0 -0
  303. package/bin/_internal/tzdata/zoneinfo/America/Indianapolis +0 -0
  304. package/bin/_internal/tzdata/zoneinfo/America/Inuvik +0 -0
  305. package/bin/_internal/tzdata/zoneinfo/America/Iqaluit +0 -0
  306. package/bin/_internal/tzdata/zoneinfo/America/Jamaica +0 -0
  307. package/bin/_internal/tzdata/zoneinfo/America/Jujuy +0 -0
  308. package/bin/_internal/tzdata/zoneinfo/America/Juneau +0 -0
  309. package/bin/_internal/tzdata/zoneinfo/America/Kentucky/Louisville +0 -0
  310. package/bin/_internal/tzdata/zoneinfo/America/Kentucky/Monticello +0 -0
  311. package/bin/_internal/tzdata/zoneinfo/America/Knox_IN +0 -0
  312. package/bin/_internal/tzdata/zoneinfo/America/Kralendijk +0 -0
  313. package/bin/_internal/tzdata/zoneinfo/America/La_Paz +0 -0
  314. package/bin/_internal/tzdata/zoneinfo/America/Lima +0 -0
  315. package/bin/_internal/tzdata/zoneinfo/America/Los_Angeles +0 -0
  316. package/bin/_internal/tzdata/zoneinfo/America/Louisville +0 -0
  317. package/bin/_internal/tzdata/zoneinfo/America/Lower_Princes +0 -0
  318. package/bin/_internal/tzdata/zoneinfo/America/Maceio +0 -0
  319. package/bin/_internal/tzdata/zoneinfo/America/Managua +0 -0
  320. package/bin/_internal/tzdata/zoneinfo/America/Manaus +0 -0
  321. package/bin/_internal/tzdata/zoneinfo/America/Marigot +0 -0
  322. package/bin/_internal/tzdata/zoneinfo/America/Martinique +0 -0
  323. package/bin/_internal/tzdata/zoneinfo/America/Matamoros +0 -0
  324. package/bin/_internal/tzdata/zoneinfo/America/Mazatlan +0 -0
  325. package/bin/_internal/tzdata/zoneinfo/America/Mendoza +0 -0
  326. package/bin/_internal/tzdata/zoneinfo/America/Menominee +0 -0
  327. package/bin/_internal/tzdata/zoneinfo/America/Merida +0 -0
  328. package/bin/_internal/tzdata/zoneinfo/America/Metlakatla +0 -0
  329. package/bin/_internal/tzdata/zoneinfo/America/Mexico_City +0 -0
  330. package/bin/_internal/tzdata/zoneinfo/America/Miquelon +0 -0
  331. package/bin/_internal/tzdata/zoneinfo/America/Moncton +0 -0
  332. package/bin/_internal/tzdata/zoneinfo/America/Monterrey +0 -0
  333. package/bin/_internal/tzdata/zoneinfo/America/Montevideo +0 -0
  334. package/bin/_internal/tzdata/zoneinfo/America/Montreal +0 -0
  335. package/bin/_internal/tzdata/zoneinfo/America/Montserrat +0 -0
  336. package/bin/_internal/tzdata/zoneinfo/America/Nassau +0 -0
  337. package/bin/_internal/tzdata/zoneinfo/America/New_York +0 -0
  338. package/bin/_internal/tzdata/zoneinfo/America/Nipigon +0 -0
  339. package/bin/_internal/tzdata/zoneinfo/America/Nome +0 -0
  340. package/bin/_internal/tzdata/zoneinfo/America/Noronha +0 -0
  341. package/bin/_internal/tzdata/zoneinfo/America/North_Dakota/Beulah +0 -0
  342. package/bin/_internal/tzdata/zoneinfo/America/North_Dakota/Center +0 -0
  343. package/bin/_internal/tzdata/zoneinfo/America/North_Dakota/New_Salem +0 -0
  344. package/bin/_internal/tzdata/zoneinfo/America/Nuuk +0 -0
  345. package/bin/_internal/tzdata/zoneinfo/America/Ojinaga +0 -0
  346. package/bin/_internal/tzdata/zoneinfo/America/Panama +0 -0
  347. package/bin/_internal/tzdata/zoneinfo/America/Pangnirtung +0 -0
  348. package/bin/_internal/tzdata/zoneinfo/America/Paramaribo +0 -0
  349. package/bin/_internal/tzdata/zoneinfo/America/Phoenix +0 -0
  350. package/bin/_internal/tzdata/zoneinfo/America/Port-au-Prince +0 -0
  351. package/bin/_internal/tzdata/zoneinfo/America/Port_of_Spain +0 -0
  352. package/bin/_internal/tzdata/zoneinfo/America/Porto_Acre +0 -0
  353. package/bin/_internal/tzdata/zoneinfo/America/Porto_Velho +0 -0
  354. package/bin/_internal/tzdata/zoneinfo/America/Puerto_Rico +0 -0
  355. package/bin/_internal/tzdata/zoneinfo/America/Punta_Arenas +0 -0
  356. package/bin/_internal/tzdata/zoneinfo/America/Rainy_River +0 -0
  357. package/bin/_internal/tzdata/zoneinfo/America/Rankin_Inlet +0 -0
  358. package/bin/_internal/tzdata/zoneinfo/America/Recife +0 -0
  359. package/bin/_internal/tzdata/zoneinfo/America/Regina +0 -0
  360. package/bin/_internal/tzdata/zoneinfo/America/Resolute +0 -0
  361. package/bin/_internal/tzdata/zoneinfo/America/Rio_Branco +0 -0
  362. package/bin/_internal/tzdata/zoneinfo/America/Rosario +0 -0
  363. package/bin/_internal/tzdata/zoneinfo/America/Santa_Isabel +0 -0
  364. package/bin/_internal/tzdata/zoneinfo/America/Santarem +0 -0
  365. package/bin/_internal/tzdata/zoneinfo/America/Santiago +0 -0
  366. package/bin/_internal/tzdata/zoneinfo/America/Santo_Domingo +0 -0
  367. package/bin/_internal/tzdata/zoneinfo/America/Sao_Paulo +0 -0
  368. package/bin/_internal/tzdata/zoneinfo/America/Scoresbysund +0 -0
  369. package/bin/_internal/tzdata/zoneinfo/America/Shiprock +0 -0
  370. package/bin/_internal/tzdata/zoneinfo/America/Sitka +0 -0
  371. package/bin/_internal/tzdata/zoneinfo/America/St_Barthelemy +0 -0
  372. package/bin/_internal/tzdata/zoneinfo/America/St_Johns +0 -0
  373. package/bin/_internal/tzdata/zoneinfo/America/St_Kitts +0 -0
  374. package/bin/_internal/tzdata/zoneinfo/America/St_Lucia +0 -0
  375. package/bin/_internal/tzdata/zoneinfo/America/St_Thomas +0 -0
  376. package/bin/_internal/tzdata/zoneinfo/America/St_Vincent +0 -0
  377. package/bin/_internal/tzdata/zoneinfo/America/Swift_Current +0 -0
  378. package/bin/_internal/tzdata/zoneinfo/America/Tegucigalpa +0 -0
  379. package/bin/_internal/tzdata/zoneinfo/America/Thule +0 -0
  380. package/bin/_internal/tzdata/zoneinfo/America/Thunder_Bay +0 -0
  381. package/bin/_internal/tzdata/zoneinfo/America/Tijuana +0 -0
  382. package/bin/_internal/tzdata/zoneinfo/America/Toronto +0 -0
  383. package/bin/_internal/tzdata/zoneinfo/America/Tortola +0 -0
  384. package/bin/_internal/tzdata/zoneinfo/America/Vancouver +0 -0
  385. package/bin/_internal/tzdata/zoneinfo/America/Virgin +0 -0
  386. package/bin/_internal/tzdata/zoneinfo/America/Whitehorse +0 -0
  387. package/bin/_internal/tzdata/zoneinfo/America/Winnipeg +0 -0
  388. package/bin/_internal/tzdata/zoneinfo/America/Yakutat +0 -0
  389. package/bin/_internal/tzdata/zoneinfo/America/Yellowknife +0 -0
  390. package/bin/_internal/tzdata/zoneinfo/Antarctica/Casey +0 -0
  391. package/bin/_internal/tzdata/zoneinfo/Antarctica/Davis +0 -0
  392. package/bin/_internal/tzdata/zoneinfo/Antarctica/DumontDUrville +0 -0
  393. package/bin/_internal/tzdata/zoneinfo/Antarctica/Macquarie +0 -0
  394. package/bin/_internal/tzdata/zoneinfo/Antarctica/Mawson +0 -0
  395. package/bin/_internal/tzdata/zoneinfo/Antarctica/McMurdo +0 -0
  396. package/bin/_internal/tzdata/zoneinfo/Antarctica/Palmer +0 -0
  397. package/bin/_internal/tzdata/zoneinfo/Antarctica/Rothera +0 -0
  398. package/bin/_internal/tzdata/zoneinfo/Antarctica/South_Pole +0 -0
  399. package/bin/_internal/tzdata/zoneinfo/Antarctica/Syowa +0 -0
  400. package/bin/_internal/tzdata/zoneinfo/Antarctica/Troll +0 -0
  401. package/bin/_internal/tzdata/zoneinfo/Antarctica/Vostok +0 -0
  402. package/bin/_internal/tzdata/zoneinfo/Arctic/Longyearbyen +0 -0
  403. package/bin/_internal/tzdata/zoneinfo/Asia/Aden +0 -0
  404. package/bin/_internal/tzdata/zoneinfo/Asia/Almaty +0 -0
  405. package/bin/_internal/tzdata/zoneinfo/Asia/Amman +0 -0
  406. package/bin/_internal/tzdata/zoneinfo/Asia/Anadyr +0 -0
  407. package/bin/_internal/tzdata/zoneinfo/Asia/Aqtau +0 -0
  408. package/bin/_internal/tzdata/zoneinfo/Asia/Aqtobe +0 -0
  409. package/bin/_internal/tzdata/zoneinfo/Asia/Ashgabat +0 -0
  410. package/bin/_internal/tzdata/zoneinfo/Asia/Ashkhabad +0 -0
  411. package/bin/_internal/tzdata/zoneinfo/Asia/Atyrau +0 -0
  412. package/bin/_internal/tzdata/zoneinfo/Asia/Baghdad +0 -0
  413. package/bin/_internal/tzdata/zoneinfo/Asia/Bahrain +0 -0
  414. package/bin/_internal/tzdata/zoneinfo/Asia/Baku +0 -0
  415. package/bin/_internal/tzdata/zoneinfo/Asia/Bangkok +0 -0
  416. package/bin/_internal/tzdata/zoneinfo/Asia/Barnaul +0 -0
  417. package/bin/_internal/tzdata/zoneinfo/Asia/Beirut +0 -0
  418. package/bin/_internal/tzdata/zoneinfo/Asia/Bishkek +0 -0
  419. package/bin/_internal/tzdata/zoneinfo/Asia/Brunei +0 -0
  420. package/bin/_internal/tzdata/zoneinfo/Asia/Calcutta +0 -0
  421. package/bin/_internal/tzdata/zoneinfo/Asia/Chita +0 -0
  422. package/bin/_internal/tzdata/zoneinfo/Asia/Choibalsan +0 -0
  423. package/bin/_internal/tzdata/zoneinfo/Asia/Chongqing +0 -0
  424. package/bin/_internal/tzdata/zoneinfo/Asia/Chungking +0 -0
  425. package/bin/_internal/tzdata/zoneinfo/Asia/Colombo +0 -0
  426. package/bin/_internal/tzdata/zoneinfo/Asia/Dacca +0 -0
  427. package/bin/_internal/tzdata/zoneinfo/Asia/Damascus +0 -0
  428. package/bin/_internal/tzdata/zoneinfo/Asia/Dhaka +0 -0
  429. package/bin/_internal/tzdata/zoneinfo/Asia/Dili +0 -0
  430. package/bin/_internal/tzdata/zoneinfo/Asia/Dubai +0 -0
  431. package/bin/_internal/tzdata/zoneinfo/Asia/Dushanbe +0 -0
  432. package/bin/_internal/tzdata/zoneinfo/Asia/Famagusta +0 -0
  433. package/bin/_internal/tzdata/zoneinfo/Asia/Gaza +0 -0
  434. package/bin/_internal/tzdata/zoneinfo/Asia/Harbin +0 -0
  435. package/bin/_internal/tzdata/zoneinfo/Asia/Hebron +0 -0
  436. package/bin/_internal/tzdata/zoneinfo/Asia/Ho_Chi_Minh +0 -0
  437. package/bin/_internal/tzdata/zoneinfo/Asia/Hong_Kong +0 -0
  438. package/bin/_internal/tzdata/zoneinfo/Asia/Hovd +0 -0
  439. package/bin/_internal/tzdata/zoneinfo/Asia/Irkutsk +0 -0
  440. package/bin/_internal/tzdata/zoneinfo/Asia/Istanbul +0 -0
  441. package/bin/_internal/tzdata/zoneinfo/Asia/Jakarta +0 -0
  442. package/bin/_internal/tzdata/zoneinfo/Asia/Jayapura +0 -0
  443. package/bin/_internal/tzdata/zoneinfo/Asia/Jerusalem +0 -0
  444. package/bin/_internal/tzdata/zoneinfo/Asia/Kabul +0 -0
  445. package/bin/_internal/tzdata/zoneinfo/Asia/Kamchatka +0 -0
  446. package/bin/_internal/tzdata/zoneinfo/Asia/Karachi +0 -0
  447. package/bin/_internal/tzdata/zoneinfo/Asia/Kashgar +0 -0
  448. package/bin/_internal/tzdata/zoneinfo/Asia/Kathmandu +0 -0
  449. package/bin/_internal/tzdata/zoneinfo/Asia/Katmandu +0 -0
  450. package/bin/_internal/tzdata/zoneinfo/Asia/Khandyga +0 -0
  451. package/bin/_internal/tzdata/zoneinfo/Asia/Kolkata +0 -0
  452. package/bin/_internal/tzdata/zoneinfo/Asia/Krasnoyarsk +0 -0
  453. package/bin/_internal/tzdata/zoneinfo/Asia/Kuala_Lumpur +0 -0
  454. package/bin/_internal/tzdata/zoneinfo/Asia/Kuching +0 -0
  455. package/bin/_internal/tzdata/zoneinfo/Asia/Kuwait +0 -0
  456. package/bin/_internal/tzdata/zoneinfo/Asia/Macao +0 -0
  457. package/bin/_internal/tzdata/zoneinfo/Asia/Macau +0 -0
  458. package/bin/_internal/tzdata/zoneinfo/Asia/Magadan +0 -0
  459. package/bin/_internal/tzdata/zoneinfo/Asia/Makassar +0 -0
  460. package/bin/_internal/tzdata/zoneinfo/Asia/Manila +0 -0
  461. package/bin/_internal/tzdata/zoneinfo/Asia/Muscat +0 -0
  462. package/bin/_internal/tzdata/zoneinfo/Asia/Nicosia +0 -0
  463. package/bin/_internal/tzdata/zoneinfo/Asia/Novokuznetsk +0 -0
  464. package/bin/_internal/tzdata/zoneinfo/Asia/Novosibirsk +0 -0
  465. package/bin/_internal/tzdata/zoneinfo/Asia/Omsk +0 -0
  466. package/bin/_internal/tzdata/zoneinfo/Asia/Oral +0 -0
  467. package/bin/_internal/tzdata/zoneinfo/Asia/Phnom_Penh +0 -0
  468. package/bin/_internal/tzdata/zoneinfo/Asia/Pontianak +0 -0
  469. package/bin/_internal/tzdata/zoneinfo/Asia/Pyongyang +0 -0
  470. package/bin/_internal/tzdata/zoneinfo/Asia/Qatar +0 -0
  471. package/bin/_internal/tzdata/zoneinfo/Asia/Qostanay +0 -0
  472. package/bin/_internal/tzdata/zoneinfo/Asia/Qyzylorda +0 -0
  473. package/bin/_internal/tzdata/zoneinfo/Asia/Rangoon +0 -0
  474. package/bin/_internal/tzdata/zoneinfo/Asia/Riyadh +0 -0
  475. package/bin/_internal/tzdata/zoneinfo/Asia/Saigon +0 -0
  476. package/bin/_internal/tzdata/zoneinfo/Asia/Sakhalin +0 -0
  477. package/bin/_internal/tzdata/zoneinfo/Asia/Samarkand +0 -0
  478. package/bin/_internal/tzdata/zoneinfo/Asia/Seoul +0 -0
  479. package/bin/_internal/tzdata/zoneinfo/Asia/Shanghai +0 -0
  480. package/bin/_internal/tzdata/zoneinfo/Asia/Singapore +0 -0
  481. package/bin/_internal/tzdata/zoneinfo/Asia/Srednekolymsk +0 -0
  482. package/bin/_internal/tzdata/zoneinfo/Asia/Taipei +0 -0
  483. package/bin/_internal/tzdata/zoneinfo/Asia/Tashkent +0 -0
  484. package/bin/_internal/tzdata/zoneinfo/Asia/Tbilisi +0 -0
  485. package/bin/_internal/tzdata/zoneinfo/Asia/Tehran +0 -0
  486. package/bin/_internal/tzdata/zoneinfo/Asia/Tel_Aviv +0 -0
  487. package/bin/_internal/tzdata/zoneinfo/Asia/Thimbu +0 -0
  488. package/bin/_internal/tzdata/zoneinfo/Asia/Thimphu +0 -0
  489. package/bin/_internal/tzdata/zoneinfo/Asia/Tokyo +0 -0
  490. package/bin/_internal/tzdata/zoneinfo/Asia/Tomsk +0 -0
  491. package/bin/_internal/tzdata/zoneinfo/Asia/Ujung_Pandang +0 -0
  492. package/bin/_internal/tzdata/zoneinfo/Asia/Ulaanbaatar +0 -0
  493. package/bin/_internal/tzdata/zoneinfo/Asia/Ulan_Bator +0 -0
  494. package/bin/_internal/tzdata/zoneinfo/Asia/Urumqi +0 -0
  495. package/bin/_internal/tzdata/zoneinfo/Asia/Ust-Nera +0 -0
  496. package/bin/_internal/tzdata/zoneinfo/Asia/Vientiane +0 -0
  497. package/bin/_internal/tzdata/zoneinfo/Asia/Vladivostok +0 -0
  498. package/bin/_internal/tzdata/zoneinfo/Asia/Yakutsk +0 -0
  499. package/bin/_internal/tzdata/zoneinfo/Asia/Yangon +0 -0
  500. package/bin/_internal/tzdata/zoneinfo/Asia/Yekaterinburg +0 -0
  501. package/bin/_internal/tzdata/zoneinfo/Asia/Yerevan +0 -0
  502. package/bin/_internal/tzdata/zoneinfo/Atlantic/Azores +0 -0
  503. package/bin/_internal/tzdata/zoneinfo/Atlantic/Bermuda +0 -0
  504. package/bin/_internal/tzdata/zoneinfo/Atlantic/Canary +0 -0
  505. package/bin/_internal/tzdata/zoneinfo/Atlantic/Cape_Verde +0 -0
  506. package/bin/_internal/tzdata/zoneinfo/Atlantic/Faeroe +0 -0
  507. package/bin/_internal/tzdata/zoneinfo/Atlantic/Faroe +0 -0
  508. package/bin/_internal/tzdata/zoneinfo/Atlantic/Jan_Mayen +0 -0
  509. package/bin/_internal/tzdata/zoneinfo/Atlantic/Madeira +0 -0
  510. package/bin/_internal/tzdata/zoneinfo/Atlantic/Reykjavik +0 -0
  511. package/bin/_internal/tzdata/zoneinfo/Atlantic/South_Georgia +0 -0
  512. package/bin/_internal/tzdata/zoneinfo/Atlantic/St_Helena +0 -0
  513. package/bin/_internal/tzdata/zoneinfo/Atlantic/Stanley +0 -0
  514. package/bin/_internal/tzdata/zoneinfo/Australia/ACT +0 -0
  515. package/bin/_internal/tzdata/zoneinfo/Australia/Adelaide +0 -0
  516. package/bin/_internal/tzdata/zoneinfo/Australia/Brisbane +0 -0
  517. package/bin/_internal/tzdata/zoneinfo/Australia/Broken_Hill +0 -0
  518. package/bin/_internal/tzdata/zoneinfo/Australia/Canberra +0 -0
  519. package/bin/_internal/tzdata/zoneinfo/Australia/Currie +0 -0
  520. package/bin/_internal/tzdata/zoneinfo/Australia/Darwin +0 -0
  521. package/bin/_internal/tzdata/zoneinfo/Australia/Eucla +0 -0
  522. package/bin/_internal/tzdata/zoneinfo/Australia/Hobart +0 -0
  523. package/bin/_internal/tzdata/zoneinfo/Australia/LHI +0 -0
  524. package/bin/_internal/tzdata/zoneinfo/Australia/Lindeman +0 -0
  525. package/bin/_internal/tzdata/zoneinfo/Australia/Lord_Howe +0 -0
  526. package/bin/_internal/tzdata/zoneinfo/Australia/Melbourne +0 -0
  527. package/bin/_internal/tzdata/zoneinfo/Australia/NSW +0 -0
  528. package/bin/_internal/tzdata/zoneinfo/Australia/North +0 -0
  529. package/bin/_internal/tzdata/zoneinfo/Australia/Perth +0 -0
  530. package/bin/_internal/tzdata/zoneinfo/Australia/Queensland +0 -0
  531. package/bin/_internal/tzdata/zoneinfo/Australia/South +0 -0
  532. package/bin/_internal/tzdata/zoneinfo/Australia/Sydney +0 -0
  533. package/bin/_internal/tzdata/zoneinfo/Australia/Tasmania +0 -0
  534. package/bin/_internal/tzdata/zoneinfo/Australia/Victoria +0 -0
  535. package/bin/_internal/tzdata/zoneinfo/Australia/West +0 -0
  536. package/bin/_internal/tzdata/zoneinfo/Australia/Yancowinna +0 -0
  537. package/bin/_internal/tzdata/zoneinfo/Brazil/Acre +0 -0
  538. package/bin/_internal/tzdata/zoneinfo/Brazil/DeNoronha +0 -0
  539. package/bin/_internal/tzdata/zoneinfo/Brazil/East +0 -0
  540. package/bin/_internal/tzdata/zoneinfo/Brazil/West +0 -0
  541. package/bin/_internal/tzdata/zoneinfo/CET +0 -0
  542. package/bin/_internal/tzdata/zoneinfo/CST6CDT +0 -0
  543. package/bin/_internal/tzdata/zoneinfo/Canada/Atlantic +0 -0
  544. package/bin/_internal/tzdata/zoneinfo/Canada/Central +0 -0
  545. package/bin/_internal/tzdata/zoneinfo/Canada/Eastern +0 -0
  546. package/bin/_internal/tzdata/zoneinfo/Canada/Mountain +0 -0
  547. package/bin/_internal/tzdata/zoneinfo/Canada/Newfoundland +0 -0
  548. package/bin/_internal/tzdata/zoneinfo/Canada/Pacific +0 -0
  549. package/bin/_internal/tzdata/zoneinfo/Canada/Saskatchewan +0 -0
  550. package/bin/_internal/tzdata/zoneinfo/Canada/Yukon +0 -0
  551. package/bin/_internal/tzdata/zoneinfo/Chile/Continental +0 -0
  552. package/bin/_internal/tzdata/zoneinfo/Chile/EasterIsland +0 -0
  553. package/bin/_internal/tzdata/zoneinfo/Cuba +0 -0
  554. package/bin/_internal/tzdata/zoneinfo/EET +0 -0
  555. package/bin/_internal/tzdata/zoneinfo/EST +0 -0
  556. package/bin/_internal/tzdata/zoneinfo/EST5EDT +0 -0
  557. package/bin/_internal/tzdata/zoneinfo/Egypt +0 -0
  558. package/bin/_internal/tzdata/zoneinfo/Eire +0 -0
  559. package/bin/_internal/tzdata/zoneinfo/Etc/GMT +0 -0
  560. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+0 +0 -0
  561. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+1 +0 -0
  562. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+10 +0 -0
  563. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+11 +0 -0
  564. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+12 +0 -0
  565. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+2 +0 -0
  566. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+3 +0 -0
  567. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+4 +0 -0
  568. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+5 +0 -0
  569. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+6 +0 -0
  570. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+7 +0 -0
  571. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+8 +0 -0
  572. package/bin/_internal/tzdata/zoneinfo/Etc/GMT+9 +0 -0
  573. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-0 +0 -0
  574. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-1 +0 -0
  575. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-10 +0 -0
  576. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-11 +0 -0
  577. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-12 +0 -0
  578. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-13 +0 -0
  579. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-14 +0 -0
  580. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-2 +0 -0
  581. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-3 +0 -0
  582. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-4 +0 -0
  583. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-5 +0 -0
  584. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-6 +0 -0
  585. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-7 +0 -0
  586. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-8 +0 -0
  587. package/bin/_internal/tzdata/zoneinfo/Etc/GMT-9 +0 -0
  588. package/bin/_internal/tzdata/zoneinfo/Etc/GMT0 +0 -0
  589. package/bin/_internal/tzdata/zoneinfo/Etc/Greenwich +0 -0
  590. package/bin/_internal/tzdata/zoneinfo/Etc/UCT +0 -0
  591. package/bin/_internal/tzdata/zoneinfo/Etc/UTC +0 -0
  592. package/bin/_internal/tzdata/zoneinfo/Etc/Universal +0 -0
  593. package/bin/_internal/tzdata/zoneinfo/Etc/Zulu +0 -0
  594. package/bin/_internal/tzdata/zoneinfo/Europe/Amsterdam +0 -0
  595. package/bin/_internal/tzdata/zoneinfo/Europe/Andorra +0 -0
  596. package/bin/_internal/tzdata/zoneinfo/Europe/Astrakhan +0 -0
  597. package/bin/_internal/tzdata/zoneinfo/Europe/Athens +0 -0
  598. package/bin/_internal/tzdata/zoneinfo/Europe/Belfast +0 -0
  599. package/bin/_internal/tzdata/zoneinfo/Europe/Belgrade +0 -0
  600. package/bin/_internal/tzdata/zoneinfo/Europe/Berlin +0 -0
  601. package/bin/_internal/tzdata/zoneinfo/Europe/Bratislava +0 -0
  602. package/bin/_internal/tzdata/zoneinfo/Europe/Brussels +0 -0
  603. package/bin/_internal/tzdata/zoneinfo/Europe/Bucharest +0 -0
  604. package/bin/_internal/tzdata/zoneinfo/Europe/Budapest +0 -0
  605. package/bin/_internal/tzdata/zoneinfo/Europe/Busingen +0 -0
  606. package/bin/_internal/tzdata/zoneinfo/Europe/Chisinau +0 -0
  607. package/bin/_internal/tzdata/zoneinfo/Europe/Copenhagen +0 -0
  608. package/bin/_internal/tzdata/zoneinfo/Europe/Dublin +0 -0
  609. package/bin/_internal/tzdata/zoneinfo/Europe/Gibraltar +0 -0
  610. package/bin/_internal/tzdata/zoneinfo/Europe/Guernsey +0 -0
  611. package/bin/_internal/tzdata/zoneinfo/Europe/Helsinki +0 -0
  612. package/bin/_internal/tzdata/zoneinfo/Europe/Isle_of_Man +0 -0
  613. package/bin/_internal/tzdata/zoneinfo/Europe/Istanbul +0 -0
  614. package/bin/_internal/tzdata/zoneinfo/Europe/Jersey +0 -0
  615. package/bin/_internal/tzdata/zoneinfo/Europe/Kaliningrad +0 -0
  616. package/bin/_internal/tzdata/zoneinfo/Europe/Kiev +0 -0
  617. package/bin/_internal/tzdata/zoneinfo/Europe/Kirov +0 -0
  618. package/bin/_internal/tzdata/zoneinfo/Europe/Kyiv +0 -0
  619. package/bin/_internal/tzdata/zoneinfo/Europe/Lisbon +0 -0
  620. package/bin/_internal/tzdata/zoneinfo/Europe/Ljubljana +0 -0
  621. package/bin/_internal/tzdata/zoneinfo/Europe/London +0 -0
  622. package/bin/_internal/tzdata/zoneinfo/Europe/Luxembourg +0 -0
  623. package/bin/_internal/tzdata/zoneinfo/Europe/Madrid +0 -0
  624. package/bin/_internal/tzdata/zoneinfo/Europe/Malta +0 -0
  625. package/bin/_internal/tzdata/zoneinfo/Europe/Mariehamn +0 -0
  626. package/bin/_internal/tzdata/zoneinfo/Europe/Minsk +0 -0
  627. package/bin/_internal/tzdata/zoneinfo/Europe/Monaco +0 -0
  628. package/bin/_internal/tzdata/zoneinfo/Europe/Moscow +0 -0
  629. package/bin/_internal/tzdata/zoneinfo/Europe/Nicosia +0 -0
  630. package/bin/_internal/tzdata/zoneinfo/Europe/Oslo +0 -0
  631. package/bin/_internal/tzdata/zoneinfo/Europe/Paris +0 -0
  632. package/bin/_internal/tzdata/zoneinfo/Europe/Podgorica +0 -0
  633. package/bin/_internal/tzdata/zoneinfo/Europe/Prague +0 -0
  634. package/bin/_internal/tzdata/zoneinfo/Europe/Riga +0 -0
  635. package/bin/_internal/tzdata/zoneinfo/Europe/Rome +0 -0
  636. package/bin/_internal/tzdata/zoneinfo/Europe/Samara +0 -0
  637. package/bin/_internal/tzdata/zoneinfo/Europe/San_Marino +0 -0
  638. package/bin/_internal/tzdata/zoneinfo/Europe/Sarajevo +0 -0
  639. package/bin/_internal/tzdata/zoneinfo/Europe/Saratov +0 -0
  640. package/bin/_internal/tzdata/zoneinfo/Europe/Simferopol +0 -0
  641. package/bin/_internal/tzdata/zoneinfo/Europe/Skopje +0 -0
  642. package/bin/_internal/tzdata/zoneinfo/Europe/Sofia +0 -0
  643. package/bin/_internal/tzdata/zoneinfo/Europe/Stockholm +0 -0
  644. package/bin/_internal/tzdata/zoneinfo/Europe/Tallinn +0 -0
  645. package/bin/_internal/tzdata/zoneinfo/Europe/Tirane +0 -0
  646. package/bin/_internal/tzdata/zoneinfo/Europe/Tiraspol +0 -0
  647. package/bin/_internal/tzdata/zoneinfo/Europe/Ulyanovsk +0 -0
  648. package/bin/_internal/tzdata/zoneinfo/Europe/Uzhgorod +0 -0
  649. package/bin/_internal/tzdata/zoneinfo/Europe/Vaduz +0 -0
  650. package/bin/_internal/tzdata/zoneinfo/Europe/Vatican +0 -0
  651. package/bin/_internal/tzdata/zoneinfo/Europe/Vienna +0 -0
  652. package/bin/_internal/tzdata/zoneinfo/Europe/Vilnius +0 -0
  653. package/bin/_internal/tzdata/zoneinfo/Europe/Volgograd +0 -0
  654. package/bin/_internal/tzdata/zoneinfo/Europe/Warsaw +0 -0
  655. package/bin/_internal/tzdata/zoneinfo/Europe/Zagreb +0 -0
  656. package/bin/_internal/tzdata/zoneinfo/Europe/Zaporozhye +0 -0
  657. package/bin/_internal/tzdata/zoneinfo/Europe/Zurich +0 -0
  658. package/bin/_internal/tzdata/zoneinfo/Factory +0 -0
  659. package/bin/_internal/tzdata/zoneinfo/GB +0 -0
  660. package/bin/_internal/tzdata/zoneinfo/GB-Eire +0 -0
  661. package/bin/_internal/tzdata/zoneinfo/GMT +0 -0
  662. package/bin/_internal/tzdata/zoneinfo/GMT+0 +0 -0
  663. package/bin/_internal/tzdata/zoneinfo/GMT-0 +0 -0
  664. package/bin/_internal/tzdata/zoneinfo/GMT0 +0 -0
  665. package/bin/_internal/tzdata/zoneinfo/Greenwich +0 -0
  666. package/bin/_internal/tzdata/zoneinfo/HST +0 -0
  667. package/bin/_internal/tzdata/zoneinfo/Hongkong +0 -0
  668. package/bin/_internal/tzdata/zoneinfo/Iceland +0 -0
  669. package/bin/_internal/tzdata/zoneinfo/Indian/Antananarivo +0 -0
  670. package/bin/_internal/tzdata/zoneinfo/Indian/Chagos +0 -0
  671. package/bin/_internal/tzdata/zoneinfo/Indian/Christmas +0 -0
  672. package/bin/_internal/tzdata/zoneinfo/Indian/Cocos +0 -0
  673. package/bin/_internal/tzdata/zoneinfo/Indian/Comoro +0 -0
  674. package/bin/_internal/tzdata/zoneinfo/Indian/Kerguelen +0 -0
  675. package/bin/_internal/tzdata/zoneinfo/Indian/Mahe +0 -0
  676. package/bin/_internal/tzdata/zoneinfo/Indian/Maldives +0 -0
  677. package/bin/_internal/tzdata/zoneinfo/Indian/Mauritius +0 -0
  678. package/bin/_internal/tzdata/zoneinfo/Indian/Mayotte +0 -0
  679. package/bin/_internal/tzdata/zoneinfo/Indian/Reunion +0 -0
  680. package/bin/_internal/tzdata/zoneinfo/Iran +0 -0
  681. package/bin/_internal/tzdata/zoneinfo/Israel +0 -0
  682. package/bin/_internal/tzdata/zoneinfo/Jamaica +0 -0
  683. package/bin/_internal/tzdata/zoneinfo/Japan +0 -0
  684. package/bin/_internal/tzdata/zoneinfo/Kwajalein +0 -0
  685. package/bin/_internal/tzdata/zoneinfo/Libya +0 -0
  686. package/bin/_internal/tzdata/zoneinfo/MET +0 -0
  687. package/bin/_internal/tzdata/zoneinfo/MST +0 -0
  688. package/bin/_internal/tzdata/zoneinfo/MST7MDT +0 -0
  689. package/bin/_internal/tzdata/zoneinfo/Mexico/BajaNorte +0 -0
  690. package/bin/_internal/tzdata/zoneinfo/Mexico/BajaSur +0 -0
  691. package/bin/_internal/tzdata/zoneinfo/Mexico/General +0 -0
  692. package/bin/_internal/tzdata/zoneinfo/NZ +0 -0
  693. package/bin/_internal/tzdata/zoneinfo/NZ-CHAT +0 -0
  694. package/bin/_internal/tzdata/zoneinfo/Navajo +0 -0
  695. package/bin/_internal/tzdata/zoneinfo/PRC +0 -0
  696. package/bin/_internal/tzdata/zoneinfo/PST8PDT +0 -0
  697. package/bin/_internal/tzdata/zoneinfo/Pacific/Apia +0 -0
  698. package/bin/_internal/tzdata/zoneinfo/Pacific/Auckland +0 -0
  699. package/bin/_internal/tzdata/zoneinfo/Pacific/Bougainville +0 -0
  700. package/bin/_internal/tzdata/zoneinfo/Pacific/Chatham +0 -0
  701. package/bin/_internal/tzdata/zoneinfo/Pacific/Chuuk +0 -0
  702. package/bin/_internal/tzdata/zoneinfo/Pacific/Easter +0 -0
  703. package/bin/_internal/tzdata/zoneinfo/Pacific/Efate +0 -0
  704. package/bin/_internal/tzdata/zoneinfo/Pacific/Enderbury +0 -0
  705. package/bin/_internal/tzdata/zoneinfo/Pacific/Fakaofo +0 -0
  706. package/bin/_internal/tzdata/zoneinfo/Pacific/Fiji +0 -0
  707. package/bin/_internal/tzdata/zoneinfo/Pacific/Funafuti +0 -0
  708. package/bin/_internal/tzdata/zoneinfo/Pacific/Galapagos +0 -0
  709. package/bin/_internal/tzdata/zoneinfo/Pacific/Gambier +0 -0
  710. package/bin/_internal/tzdata/zoneinfo/Pacific/Guadalcanal +0 -0
  711. package/bin/_internal/tzdata/zoneinfo/Pacific/Guam +0 -0
  712. package/bin/_internal/tzdata/zoneinfo/Pacific/Honolulu +0 -0
  713. package/bin/_internal/tzdata/zoneinfo/Pacific/Johnston +0 -0
  714. package/bin/_internal/tzdata/zoneinfo/Pacific/Kanton +0 -0
  715. package/bin/_internal/tzdata/zoneinfo/Pacific/Kiritimati +0 -0
  716. package/bin/_internal/tzdata/zoneinfo/Pacific/Kosrae +0 -0
  717. package/bin/_internal/tzdata/zoneinfo/Pacific/Kwajalein +0 -0
  718. package/bin/_internal/tzdata/zoneinfo/Pacific/Majuro +0 -0
  719. package/bin/_internal/tzdata/zoneinfo/Pacific/Marquesas +0 -0
  720. package/bin/_internal/tzdata/zoneinfo/Pacific/Midway +0 -0
  721. package/bin/_internal/tzdata/zoneinfo/Pacific/Nauru +0 -0
  722. package/bin/_internal/tzdata/zoneinfo/Pacific/Niue +0 -0
  723. package/bin/_internal/tzdata/zoneinfo/Pacific/Norfolk +0 -0
  724. package/bin/_internal/tzdata/zoneinfo/Pacific/Noumea +0 -0
  725. package/bin/_internal/tzdata/zoneinfo/Pacific/Pago_Pago +0 -0
  726. package/bin/_internal/tzdata/zoneinfo/Pacific/Palau +0 -0
  727. package/bin/_internal/tzdata/zoneinfo/Pacific/Pitcairn +0 -0
  728. package/bin/_internal/tzdata/zoneinfo/Pacific/Pohnpei +0 -0
  729. package/bin/_internal/tzdata/zoneinfo/Pacific/Ponape +0 -0
  730. package/bin/_internal/tzdata/zoneinfo/Pacific/Port_Moresby +0 -0
  731. package/bin/_internal/tzdata/zoneinfo/Pacific/Rarotonga +0 -0
  732. package/bin/_internal/tzdata/zoneinfo/Pacific/Saipan +0 -0
  733. package/bin/_internal/tzdata/zoneinfo/Pacific/Samoa +0 -0
  734. package/bin/_internal/tzdata/zoneinfo/Pacific/Tahiti +0 -0
  735. package/bin/_internal/tzdata/zoneinfo/Pacific/Tarawa +0 -0
  736. package/bin/_internal/tzdata/zoneinfo/Pacific/Tongatapu +0 -0
  737. package/bin/_internal/tzdata/zoneinfo/Pacific/Truk +0 -0
  738. package/bin/_internal/tzdata/zoneinfo/Pacific/Wake +0 -0
  739. package/bin/_internal/tzdata/zoneinfo/Pacific/Wallis +0 -0
  740. package/bin/_internal/tzdata/zoneinfo/Pacific/Yap +0 -0
  741. package/bin/_internal/tzdata/zoneinfo/Poland +0 -0
  742. package/bin/_internal/tzdata/zoneinfo/Portugal +0 -0
  743. package/bin/_internal/tzdata/zoneinfo/ROC +0 -0
  744. package/bin/_internal/tzdata/zoneinfo/ROK +0 -0
  745. package/bin/_internal/tzdata/zoneinfo/Singapore +0 -0
  746. package/bin/_internal/tzdata/zoneinfo/Turkey +0 -0
  747. package/bin/_internal/tzdata/zoneinfo/UCT +0 -0
  748. package/bin/_internal/tzdata/zoneinfo/US/Alaska +0 -0
  749. package/bin/_internal/tzdata/zoneinfo/US/Aleutian +0 -0
  750. package/bin/_internal/tzdata/zoneinfo/US/Arizona +0 -0
  751. package/bin/_internal/tzdata/zoneinfo/US/Central +0 -0
  752. package/bin/_internal/tzdata/zoneinfo/US/East-Indiana +0 -0
  753. package/bin/_internal/tzdata/zoneinfo/US/Eastern +0 -0
  754. package/bin/_internal/tzdata/zoneinfo/US/Hawaii +0 -0
  755. package/bin/_internal/tzdata/zoneinfo/US/Indiana-Starke +0 -0
  756. package/bin/_internal/tzdata/zoneinfo/US/Michigan +0 -0
  757. package/bin/_internal/tzdata/zoneinfo/US/Mountain +0 -0
  758. package/bin/_internal/tzdata/zoneinfo/US/Pacific +0 -0
  759. package/bin/_internal/tzdata/zoneinfo/US/Samoa +0 -0
  760. package/bin/_internal/tzdata/zoneinfo/UTC +0 -0
  761. package/bin/_internal/tzdata/zoneinfo/Universal +0 -0
  762. package/bin/_internal/tzdata/zoneinfo/W-SU +0 -0
  763. package/bin/_internal/tzdata/zoneinfo/WET +0 -0
  764. package/bin/_internal/tzdata/zoneinfo/Zulu +0 -0
  765. package/bin/_internal/tzdata/zoneinfo/iso3166.tab +279 -0
  766. package/bin/_internal/tzdata/zoneinfo/leapseconds +86 -0
  767. package/bin/_internal/tzdata/zoneinfo/tzdata.zi +4180 -0
  768. package/bin/_internal/tzdata/zoneinfo/zone.tab +448 -0
  769. package/bin/_internal/tzdata/zoneinfo/zone1970.tab +375 -0
  770. package/bin/_internal/tzdata/zoneinfo/zonenow.tab +299 -0
  771. package/bin/_internal/tzdata/zones +598 -0
  772. package/bin/_internal/unicodedata.pyd +0 -0
  773. package/bin/exchange-cli.exe +0 -0
  774. package/package.json +20 -0
@@ -0,0 +1,102 @@
1
+ import logging
2
+
3
+ from ..errors import EWSError, InvalidTypeError
4
+ from ..properties import Notification
5
+ from ..util import MNS, DocumentYielder, DummyResponse, create_element, get_xml_attr, get_xml_attrs
6
+ from .common import EWSAccountService, add_xml_child
7
+
8
+ log = logging.getLogger(__name__)
9
+ xml_log = logging.getLogger(f"{__name__}.xml")
10
+
11
+
12
+ class GetStreamingEvents(EWSAccountService):
13
+ """MSDN:
14
+ https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/getstreamingevents-operation
15
+ """
16
+
17
+ SERVICE_NAME = "GetStreamingEvents"
18
+ element_container_name = f"{{{MNS}}}Notifications"
19
+ prefer_affinity = True
20
+
21
+ # Connection status values
22
+ OK = "OK"
23
+ CLOSED = "Closed"
24
+
25
+ def __init__(self, *args, **kwargs):
26
+ # These values are set each time call() is consumed
27
+ self.connection_status = None
28
+ super().__init__(*args, **kwargs)
29
+ self.streaming = True
30
+
31
+ def call(self, subscription_ids, connection_timeout):
32
+ if not isinstance(connection_timeout, int):
33
+ raise InvalidTypeError("connection_timeout", connection_timeout, int)
34
+ if connection_timeout < 1:
35
+ raise ValueError(f"'connection_timeout' {connection_timeout} must be a positive integer")
36
+ # Add 60 seconds to the timeout, to allow us to always get the final message containing ConnectionStatus=Closed
37
+ self.timeout = connection_timeout * 60 + 60
38
+ return self._elems_to_objs(
39
+ self._get_elements(
40
+ payload=self.get_payload(
41
+ subscription_ids=subscription_ids,
42
+ connection_timeout=connection_timeout,
43
+ )
44
+ )
45
+ )
46
+
47
+ def _elem_to_obj(self, elem):
48
+ return Notification.from_xml(elem=elem, account=None)
49
+
50
+ @classmethod
51
+ def _get_soap_parts(cls, response):
52
+ # Pass the response unaltered. We want to use our custom document yielder
53
+ return None, response
54
+
55
+ def _get_soap_messages(self, body):
56
+ # 'body' is actually the raw response passed on by '_get_soap_parts'. We want to continuously read the content,
57
+ # looking for complete XML documents. When we have a full document, we want to parse it as if it was a normal
58
+ # XML response.
59
+ r = body
60
+ for i, doc in enumerate(DocumentYielder(r.iter_content()), start=1):
61
+ xml_log.debug("Response XML (docs counter: %(i)s): %(xml_response)s", dict(i=i, xml_response=doc))
62
+ response = DummyResponse(content=doc)
63
+ try:
64
+ _, body = super()._get_soap_parts(response=response)
65
+ except Exception:
66
+ r.close() # Release memory
67
+ raise
68
+ # TODO: We're skipping ._update_api_version() here because we don't have access to the 'api_version' used.
69
+ # TODO: We should be doing a lot of error handling for ._get_soap_messages().
70
+ yield from super()._get_soap_messages(body=body)
71
+ if self.connection_status == self.CLOSED:
72
+ # Don't wait for the TCP connection to timeout
73
+ break
74
+
75
+ def _get_element_container(self, message, name=None):
76
+ error_ids_elem = message.find(f"{{{MNS}}}ErrorSubscriptionIds")
77
+ error_ids = [] if error_ids_elem is None else get_xml_attrs(error_ids_elem, f"{{{MNS}}}SubscriptionId")
78
+ self.connection_status = get_xml_attr(message, f"{{{MNS}}}ConnectionStatus") # Either 'OK' or 'Closed'
79
+ log.debug("Connection status is: %s", self.connection_status)
80
+ # Upstream normally expects to find a 'name' tag but our response does not always have it. We still want to
81
+ # call upstream, to have exceptions raised. Return an empty list if there is no 'name' tag and no errors.
82
+ if message.find(name) is None:
83
+ name = None
84
+ try:
85
+ res = super()._get_element_container(message=message, name=name)
86
+ except EWSError as e:
87
+ # When the request contains a combination of good and failing subscription IDs, notifications for the good
88
+ # subscriptions seem to never be returned even though the XML spec allows it. This means there's no point in
89
+ # trying to collect any notifications here and delivering a combination of errors and return values.
90
+ if error_ids:
91
+ e.value += f" (subscription IDs: {error_ids})"
92
+ raise e
93
+ return [] if name is None else res
94
+
95
+ def get_payload(self, subscription_ids, connection_timeout):
96
+ payload = create_element(f"m:{self.SERVICE_NAME}")
97
+ subscriptions_elem = create_element("m:SubscriptionIds")
98
+ for subscription_id in subscription_ids:
99
+ add_xml_child(subscriptions_elem, "t:SubscriptionId", subscription_id)
100
+ payload.append(subscriptions_elem)
101
+ add_xml_child(payload, "m:ConnectionTimeout", connection_timeout)
102
+ return payload
@@ -0,0 +1,67 @@
1
+ from collections import namedtuple
2
+
3
+ from ..properties import FreeBusyView
4
+ from ..util import MNS, create_element, set_xml_value
5
+ from .common import EWSService
6
+
7
+
8
+ class GetUserAvailability(EWSService):
9
+ """Get detailed availability information for a list of users.
10
+ MSDN:
11
+ https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/getuseravailability-operation
12
+ """
13
+
14
+ SERVICE_NAME = "GetUserAvailability"
15
+
16
+ def __init__(self, *args, **kwargs):
17
+ super().__init__(*args, **kwargs)
18
+ self.tzinfo = None
19
+
20
+ def call(self, tzinfo, mailbox_data, timezone, free_busy_view_options):
21
+ # TODO: Also supports SuggestionsViewOptions, see
22
+ # https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/suggestionsviewoptions
23
+ self.tzinfo = tzinfo
24
+ return self._elems_to_objs(
25
+ self._chunked_get_elements(
26
+ self.get_payload,
27
+ items=mailbox_data,
28
+ timezone=timezone,
29
+ free_busy_view_options=free_busy_view_options,
30
+ )
31
+ )
32
+
33
+ @property
34
+ def _timezone(self):
35
+ return self.tzinfo
36
+
37
+ def _elem_to_obj(self, elem):
38
+ fake_account = namedtuple("Account", ["default_timezone"])(default_timezone=self.tzinfo)
39
+ return FreeBusyView.from_xml(elem=elem, account=fake_account)
40
+
41
+ def get_payload(self, mailbox_data, timezone, free_busy_view_options):
42
+ payload = create_element(f"m:{self.SERVICE_NAME}Request")
43
+ set_xml_value(payload, timezone, version=self.protocol.version)
44
+ mailbox_data_array = create_element("m:MailboxDataArray")
45
+ set_xml_value(mailbox_data_array, mailbox_data, version=self.protocol.version)
46
+ payload.append(mailbox_data_array)
47
+ return set_xml_value(payload, free_busy_view_options, version=self.protocol.version)
48
+
49
+ @staticmethod
50
+ def _response_messages_tag():
51
+ return f"{{{MNS}}}FreeBusyResponseArray"
52
+
53
+ @classmethod
54
+ def _response_message_tag(cls):
55
+ return f"{{{MNS}}}FreeBusyResponse"
56
+
57
+ def _get_elements_in_response(self, response):
58
+ for msg in response:
59
+ container_or_exc = self._get_element_container(message=msg.find(f"{{{MNS}}}ResponseMessage"))
60
+ if isinstance(container_or_exc, Exception):
61
+ yield container_or_exc
62
+ else:
63
+ yield from self._get_elements_in_container(container=msg)
64
+
65
+ @classmethod
66
+ def _get_elements_in_container(cls, container):
67
+ return [container.find(f"{{{MNS}}}FreeBusyView")]
@@ -0,0 +1,43 @@
1
+ from ..errors import InvalidEnumValue
2
+ from ..properties import UserConfiguration
3
+ from ..util import create_element, set_xml_value
4
+ from .common import EWSAccountService
5
+
6
+ ID = "Id"
7
+ DICTIONARY = "Dictionary"
8
+ XML_DATA = "XmlData"
9
+ BINARY_DATA = "BinaryData"
10
+ ALL = "All"
11
+ PROPERTIES_CHOICES = (ID, DICTIONARY, XML_DATA, BINARY_DATA, ALL)
12
+
13
+
14
+ class GetUserConfiguration(EWSAccountService):
15
+ """MSDN:
16
+ https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/getuserconfiguration-operation
17
+ """
18
+
19
+ SERVICE_NAME = "GetUserConfiguration"
20
+
21
+ def call(self, user_configuration_name, properties):
22
+ if properties not in PROPERTIES_CHOICES:
23
+ raise InvalidEnumValue("properties", properties, PROPERTIES_CHOICES)
24
+ return self._elems_to_objs(
25
+ self._get_elements(
26
+ payload=self.get_payload(user_configuration_name=user_configuration_name, properties=properties)
27
+ )
28
+ )
29
+
30
+ def _elem_to_obj(self, elem):
31
+ return UserConfiguration.from_xml(elem=elem, account=self.account)
32
+
33
+ @classmethod
34
+ def _get_elements_in_container(cls, container):
35
+ return container.findall(UserConfiguration.response_tag())
36
+
37
+ def get_payload(self, user_configuration_name, properties):
38
+ payload = create_element(f"m:{self.SERVICE_NAME}")
39
+ set_xml_value(payload, user_configuration_name, version=self.account.version)
40
+ payload.append(
41
+ set_xml_value(create_element("m:UserConfigurationProperties"), properties, version=self.account.version)
42
+ )
43
+ return payload
@@ -0,0 +1,40 @@
1
+ from ..properties import AvailabilityMailbox
2
+ from ..settings import OofSettings
3
+ from ..util import MNS, TNS, create_element, set_xml_value
4
+ from .common import EWSAccountService
5
+
6
+
7
+ class GetUserOofSettings(EWSAccountService):
8
+ """Get automatic reply settings for the specified mailbox.
9
+ MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/getuseroofsettings-operation
10
+ """
11
+
12
+ SERVICE_NAME = "GetUserOofSettings"
13
+ element_container_name = f"{{{TNS}}}OofSettings"
14
+
15
+ def call(self, mailbox):
16
+ return self._elems_to_objs(self._get_elements(payload=self.get_payload(mailbox=mailbox)))
17
+
18
+ def _elem_to_obj(self, elem):
19
+ return OofSettings.from_xml(elem=elem, account=self.account)
20
+
21
+ def get_payload(self, mailbox):
22
+ return set_xml_value(
23
+ create_element(f"m:{self.SERVICE_NAME}Request"),
24
+ AvailabilityMailbox.from_mailbox(mailbox),
25
+ version=self.account.version,
26
+ )
27
+
28
+ @classmethod
29
+ def _get_elements_in_container(cls, container):
30
+ # This service only returns one result, directly in 'container'
31
+ return [container]
32
+
33
+ def _get_element_container(self, message, name=None):
34
+ # This service returns the result container outside the response message
35
+ super()._get_element_container(message=message.find(self._response_message_tag()), name=None)
36
+ return message.find(name)
37
+
38
+ @classmethod
39
+ def _response_message_tag(cls):
40
+ return f"{{{MNS}}}ResponseMessage"
@@ -0,0 +1,87 @@
1
+ import logging
2
+
3
+ from ..errors import MalformedResponseError
4
+ from ..properties import UserResponse
5
+ from ..transport import DEFAULT_ENCODING
6
+ from ..util import ANS, add_xml_child, create_element, ns_translation, set_xml_value, xml_to_str
7
+ from ..version import EXCHANGE_2010
8
+ from .common import EWSService
9
+
10
+ log = logging.getLogger(__name__)
11
+
12
+
13
+ class GetUserSettings(EWSService):
14
+ """Take a list of users and requested Autodiscover settings for these users. Returns the requested settings values.
15
+
16
+ MSDN:
17
+ https://learn.microsoft.com/en-us/exchange/client-developer/web-service-reference/getusersettings-operation-soap
18
+ """
19
+
20
+ SERVICE_NAME = "GetUserSettings"
21
+ NS_MAP = {k: v for k, v in ns_translation.items() if k in ("s", "t", "a", "wsa", "xsi")}
22
+ element_container_name = f"{{{ANS}}}UserResponses"
23
+ supported_from = EXCHANGE_2010
24
+
25
+ def call(self, users, settings):
26
+ return self._elems_to_objs(self._get_elements(self.get_payload(users=users, settings=settings)))
27
+
28
+ def wrap(self, content, api_version=None):
29
+ envelope = create_element("s:Envelope", nsmap=self.NS_MAP)
30
+ header = create_element("s:Header")
31
+ if api_version:
32
+ add_xml_child(header, "a:RequestedServerVersion", api_version)
33
+ action = f"http://schemas.microsoft.com/exchange/2010/Autodiscover/Autodiscover/{self.SERVICE_NAME}"
34
+ add_xml_child(header, "wsa:Action", action)
35
+ add_xml_child(header, "wsa:To", self.protocol.service_endpoint)
36
+ identity = self._account_to_impersonate
37
+ if identity:
38
+ add_xml_child(header, "t:ExchangeImpersonation", identity)
39
+ envelope.append(header)
40
+ body = create_element("s:Body")
41
+ body.append(content)
42
+ envelope.append(body)
43
+ return xml_to_str(envelope, encoding=DEFAULT_ENCODING, xml_declaration=True)
44
+
45
+ def _elem_to_obj(self, elem):
46
+ return UserResponse.from_xml(elem=elem, account=None)
47
+
48
+ def get_payload(self, users, settings):
49
+ payload = create_element(f"a:{self.SERVICE_NAME}RequestMessage")
50
+ request = create_element("a:Request")
51
+ users_elem = create_element("a:Users")
52
+ for user in users:
53
+ mailbox = create_element("a:Mailbox")
54
+ set_xml_value(mailbox, user)
55
+ add_xml_child(users_elem, "a:User", mailbox)
56
+ request.append(users_elem)
57
+ requested_settings = create_element("a:RequestedSettings")
58
+ for setting in settings:
59
+ add_xml_child(requested_settings, "a:Setting", UserResponse.SETTINGS_MAP[setting])
60
+ request.append(requested_settings)
61
+ payload.append(request)
62
+ return payload
63
+
64
+ @classmethod
65
+ def _response_tag(cls):
66
+ """Return the name of the element containing the service response."""
67
+ return f"{{{ANS}}}{cls.SERVICE_NAME}ResponseMessage"
68
+
69
+ def _get_element_container(self, message, name=None):
70
+ response = message.find(f"{{{ANS}}}Response")
71
+ # ErrorCode: See
72
+ # https://learn.microsoft.com/en-us/exchange/client-developer/web-service-reference/errorcode-soap
73
+ # There are two 'ErrorCode' elements in the response; one is a child of the 'Response' element, the other is a
74
+ # child of the 'UserResponse' element. Let's handle both with the same code.
75
+ res = UserResponse.parse_elem(response)
76
+ if isinstance(res, Exception):
77
+ raise res
78
+ if res.error_code == "NoError":
79
+ container = response.find(name)
80
+ if container is None:
81
+ raise MalformedResponseError(f"No {name} elements in ResponseMessage ({xml_to_str(response)})")
82
+ return container
83
+ # Raise any non-acceptable errors in the container, or return the acceptable exception instance
84
+ try:
85
+ raise self._get_exception(code=res.error_code, text=res.error_message)
86
+ except self.ERRORS_TO_CATCH_IN_RESPONSE as e:
87
+ return e
@@ -0,0 +1,104 @@
1
+ from typing import Any, Generator, Optional, Union
2
+
3
+ from ..errors import ErrorInvalidOperation
4
+ from ..properties import CreateRuleOperation, DeleteRuleOperation, InboxRules, Operations, Rule, SetRuleOperation
5
+ from ..util import MNS, add_xml_child, create_element, get_xml_attr, set_xml_value
6
+ from .common import EWSAccountService
7
+
8
+
9
+ class GetInboxRules(EWSAccountService):
10
+ """
11
+ MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/getinboxrules-operation
12
+
13
+ The GetInboxRules operation uses Exchange Web Services to retrieve Inbox rules in the identified user's mailbox.
14
+ """
15
+
16
+ SERVICE_NAME = "GetInboxRules"
17
+ element_container_name = InboxRules.response_tag()
18
+ ERRORS_TO_CATCH_IN_RESPONSE = EWSAccountService.ERRORS_TO_CATCH_IN_RESPONSE + (ErrorInvalidOperation,)
19
+
20
+ def call(self, mailbox: Optional[str] = None) -> Generator[Union[Rule, Exception, None], Any, None]:
21
+ if not mailbox:
22
+ mailbox = self.account.primary_smtp_address
23
+ payload = self.get_payload(mailbox=mailbox)
24
+ elements = self._get_elements(payload=payload)
25
+ return self._elems_to_objs(elements)
26
+
27
+ def _elem_to_obj(self, elem):
28
+ return Rule.from_xml(elem=elem, account=self.account)
29
+
30
+ def get_payload(self, mailbox):
31
+ payload = create_element(f"m:{self.SERVICE_NAME}")
32
+ add_xml_child(payload, "m:MailboxSmtpAddress", mailbox)
33
+ return payload
34
+
35
+ def _get_element_container(self, message, name=None):
36
+ if name:
37
+ response_class = message.get("ResponseClass")
38
+ response_code = get_xml_attr(message, f"{{{MNS}}}ResponseCode")
39
+ if response_class == "Success" and response_code == "NoError" and message.find(name) is None:
40
+ return []
41
+ return super()._get_element_container(message, name)
42
+
43
+
44
+ class UpdateInboxRules(EWSAccountService):
45
+ """
46
+ MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/updateinboxrules-operation
47
+
48
+ The UpdateInboxRules operation updates the authenticated user's Inbox rules by applying the specified operations.
49
+ UpdateInboxRules is used to create an Inbox rule, to set an Inbox rule, or to delete an Inbox rule.
50
+
51
+ When you use the UpdateInboxRules operation, Exchange Web Services deletes client-side send rules.
52
+ Client-side send rules are stored on the client in the rule Folder Associated Information (FAI) Message and nowhere
53
+ else. EWS deletes this rule FAI message by default, based on the expectation that Outlook will recreate it.
54
+ However, Outlook can't recreate rules that don't also exist as an extended rule, and client-side send rules don't
55
+ exist as extended rules. As a result, these rules are lost. We suggest you consider this when designing your
56
+ solution.
57
+ """
58
+
59
+ SERVICE_NAME = "UpdateInboxRules"
60
+ ERRORS_TO_CATCH_IN_RESPONSE = EWSAccountService.ERRORS_TO_CATCH_IN_RESPONSE + (ErrorInvalidOperation,)
61
+
62
+ def call(self, rule: Rule, remove_outlook_rule_blob: bool = True):
63
+ payload = self.get_payload(rule=rule, remove_outlook_rule_blob=remove_outlook_rule_blob)
64
+ return self._get_elements(payload=payload)
65
+
66
+ def _get_operation(self, rule):
67
+ raise NotImplementedError()
68
+
69
+ def get_payload(self, rule: Rule, remove_outlook_rule_blob: bool = True):
70
+ payload = create_element(f"m:{self.SERVICE_NAME}")
71
+ add_xml_child(payload, "m:RemoveOutlookRuleBlob", remove_outlook_rule_blob)
72
+ operations = self._get_operation(rule)
73
+ set_xml_value(payload, operations, version=self.account.version)
74
+ return payload
75
+
76
+
77
+ class CreateInboxRule(UpdateInboxRules):
78
+ """
79
+ MSDN:
80
+ https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/updateinboxrules-operation#updateinboxrules-create-rule-request-example
81
+ """
82
+
83
+ def _get_operation(self, rule):
84
+ return Operations(create_rule_operation=CreateRuleOperation(rule=rule))
85
+
86
+
87
+ class SetInboxRule(UpdateInboxRules):
88
+ """
89
+ MSDN:
90
+ https://learn.microsoft.com/en-us/exchange/client-developer/web-service-reference/updateinboxrules-operation#updateinboxrules-set-rule-request-example
91
+ """
92
+
93
+ def _get_operation(self, rule):
94
+ return Operations(set_rule_operation=SetRuleOperation(rule=rule))
95
+
96
+
97
+ class DeleteInboxRule(UpdateInboxRules):
98
+ """
99
+ MSDN:
100
+ https://learn.microsoft.com/en-us/exchange/client-developer/web-service-reference/updateinboxrules-operation#updateinboxrules-delete-rule-request-example
101
+ """
102
+
103
+ def _get_operation(self, rule):
104
+ return Operations(delete_rule_operation=DeleteRuleOperation(id=rule.id))
@@ -0,0 +1,27 @@
1
+ from ..properties import MovedItemId
2
+ from ..util import create_element
3
+ from .common import EWSAccountService, item_ids_element
4
+
5
+
6
+ class MarkAsJunk(EWSAccountService):
7
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/markasjunk-operation"""
8
+
9
+ SERVICE_NAME = "MarkAsJunk"
10
+
11
+ def call(self, items, is_junk, move_item):
12
+ return self._elems_to_objs(
13
+ self._chunked_get_elements(self.get_payload, items=items, is_junk=is_junk, move_item=move_item)
14
+ )
15
+
16
+ def _elem_to_obj(self, elem):
17
+ return MovedItemId.id_from_xml(elem)
18
+
19
+ @classmethod
20
+ def _get_elements_in_container(cls, container):
21
+ return container.findall(MovedItemId.response_tag())
22
+
23
+ def get_payload(self, items, is_junk, move_item):
24
+ # Takes a list of items and returns either success or raises an error message
25
+ payload = create_element(f"m:{self.SERVICE_NAME}", attrs=dict(IsJunk=is_junk, MoveItem=move_item))
26
+ payload.append(item_ids_element(items=items, version=self.account.version))
27
+ return payload
@@ -0,0 +1,27 @@
1
+ from ..errors import InvalidTypeError
2
+ from ..folders import BaseFolder
3
+ from ..properties import FolderId
4
+ from ..util import MNS, create_element
5
+ from .common import EWSAccountService, folder_ids_element
6
+
7
+
8
+ class MoveFolder(EWSAccountService):
9
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/movefolder-operation"""
10
+
11
+ SERVICE_NAME = "MoveFolder"
12
+ element_container_name = f"{{{MNS}}}Folders"
13
+
14
+ def call(self, folders, to_folder):
15
+ if not isinstance(to_folder, (BaseFolder, FolderId)):
16
+ raise InvalidTypeError("to_folder", to_folder, (BaseFolder, FolderId))
17
+ return self._elems_to_objs(self._chunked_get_elements(self.get_payload, items=folders, to_folder=to_folder))
18
+
19
+ def _elem_to_obj(self, elem):
20
+ return FolderId.from_xml(elem=elem.find(FolderId.response_tag()), account=self.account)
21
+
22
+ def get_payload(self, folders, to_folder):
23
+ # Takes a list of folders and returns their new folder IDs
24
+ payload = create_element(f"m:{self.SERVICE_NAME}")
25
+ payload.append(folder_ids_element(folders=[to_folder], version=self.account.version, tag="m:ToFolderId"))
26
+ payload.append(folder_ids_element(folders=folders, version=self.account.version))
27
+ return payload
@@ -0,0 +1,28 @@
1
+ from ..errors import InvalidTypeError
2
+ from ..folders import BaseFolder
3
+ from ..items import Item
4
+ from ..properties import FolderId
5
+ from ..util import MNS, create_element
6
+ from .common import EWSAccountService, folder_ids_element, item_ids_element
7
+
8
+
9
+ class MoveItem(EWSAccountService):
10
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/moveitem-operation"""
11
+
12
+ SERVICE_NAME = "MoveItem"
13
+ element_container_name = f"{{{MNS}}}Items"
14
+
15
+ def call(self, items, to_folder):
16
+ if not isinstance(to_folder, (BaseFolder, FolderId)):
17
+ raise InvalidTypeError("to_folder", to_folder, (BaseFolder, FolderId))
18
+ return self._elems_to_objs(self._chunked_get_elements(self.get_payload, items=items, to_folder=to_folder))
19
+
20
+ def _elem_to_obj(self, elem):
21
+ return Item.id_from_xml(elem)
22
+
23
+ def get_payload(self, items, to_folder):
24
+ # Takes a list of items and returns their new item IDs
25
+ payload = create_element(f"m:{self.SERVICE_NAME}")
26
+ payload.append(folder_ids_element(folders=[to_folder], version=self.account.version, tag="m:ToFolderId"))
27
+ payload.append(item_ids_element(items=items, version=self.account.version))
28
+ return payload
@@ -0,0 +1,104 @@
1
+ import logging
2
+ import warnings
3
+
4
+ from ..errors import ErrorNameResolutionMultipleResults, ErrorNameResolutionNoResults, InvalidEnumValue
5
+ from ..items import SEARCH_SCOPE_CHOICES, SHAPE_CHOICES, Contact
6
+ from ..properties import Mailbox
7
+ from ..util import MNS, add_xml_child, create_element
8
+ from ..version import EXCHANGE_2010_SP2
9
+ from .common import EWSService, folder_ids_element
10
+
11
+ log = logging.getLogger(__name__)
12
+
13
+
14
+ class ResolveNames(EWSService):
15
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/resolvenames-operation"""
16
+
17
+ SERVICE_NAME = "ResolveNames"
18
+ element_container_name = f"{{{MNS}}}ResolutionSet"
19
+ ERRORS_TO_CATCH_IN_RESPONSE = ErrorNameResolutionNoResults
20
+ WARNINGS_TO_IGNORE_IN_RESPONSE = ErrorNameResolutionMultipleResults
21
+
22
+ # According to the 'Remarks' section of the MSDN documentation referenced above, at most 100 candidates are
23
+ # returned for a lookup.
24
+ # Note: paging information is returned as attrs on the 'ResolutionSet' element, but this service does not
25
+ # support the 'IndexedPageItemView' element, so it's not really a paging service.
26
+ candidates_limit = 100
27
+
28
+ def __init__(self, *args, **kwargs):
29
+ super().__init__(*args, **kwargs)
30
+ self.return_full_contact_data = False # A hack to communicate parsing args to _elems_to_objs()
31
+
32
+ def call(
33
+ self,
34
+ unresolved_entries,
35
+ parent_folders=None,
36
+ return_full_contact_data=False,
37
+ search_scope=None,
38
+ contact_data_shape=None,
39
+ ):
40
+ if self.chunk_size > 100:
41
+ raise ValueError(
42
+ f"Chunk size {self.chunk_size} is too high. {self.SERVICE_NAME} supports returning at most 100 "
43
+ f"candidates for a lookup",
44
+ )
45
+ if search_scope and search_scope not in SEARCH_SCOPE_CHOICES:
46
+ raise InvalidEnumValue("search_scope", search_scope, SEARCH_SCOPE_CHOICES)
47
+ if contact_data_shape and contact_data_shape not in SHAPE_CHOICES:
48
+ raise InvalidEnumValue("contact_data_shape", contact_data_shape, SHAPE_CHOICES)
49
+ self.return_full_contact_data = return_full_contact_data
50
+ return self._elems_to_objs(
51
+ self._chunked_get_elements(
52
+ self.get_payload,
53
+ items=unresolved_entries,
54
+ parent_folders=parent_folders,
55
+ return_full_contact_data=return_full_contact_data,
56
+ search_scope=search_scope,
57
+ contact_data_shape=contact_data_shape,
58
+ )
59
+ )
60
+
61
+ def _get_element_container(self, message, name=None):
62
+ container_or_exc = super()._get_element_container(message=message, name=name)
63
+ if isinstance(container_or_exc, Exception):
64
+ return container_or_exc
65
+ is_last_page = container_or_exc.get("IncludesLastItemInRange").lower() in ("true", "0")
66
+ log.debug("Includes last item in range: %s", is_last_page)
67
+ if not is_last_page:
68
+ warnings.warn(
69
+ f"The {self.__class__.__name__} service returns at most {self.candidates_limit} candidates and does "
70
+ f"not support paging. You have reached this limit and have not received the exhaustive list of "
71
+ f"candidates."
72
+ )
73
+ return container_or_exc
74
+
75
+ def _elem_to_obj(self, elem):
76
+ if self.return_full_contact_data:
77
+ mailbox_elem = elem.find(Mailbox.response_tag())
78
+ contact_elem = elem.find(Contact.response_tag())
79
+ return (
80
+ None if mailbox_elem is None else Mailbox.from_xml(elem=mailbox_elem, account=None),
81
+ None if contact_elem is None else Contact.from_xml(elem=contact_elem, account=None),
82
+ )
83
+ return Mailbox.from_xml(elem=elem.find(Mailbox.response_tag()), account=None)
84
+
85
+ def get_payload(
86
+ self, unresolved_entries, parent_folders, return_full_contact_data, search_scope, contact_data_shape
87
+ ):
88
+ attrs = dict(ReturnFullContactData=return_full_contact_data)
89
+ if search_scope:
90
+ attrs["SearchScope"] = search_scope
91
+ if contact_data_shape:
92
+ if self.protocol.version.build < EXCHANGE_2010_SP2:
93
+ raise NotImplementedError(
94
+ "'contact_data_shape' is only supported for Exchange 2010 SP2 servers and later"
95
+ )
96
+ attrs["ContactDataShape"] = contact_data_shape
97
+ payload = create_element(f"m:{self.SERVICE_NAME}", attrs=attrs)
98
+ if parent_folders:
99
+ payload.append(
100
+ folder_ids_element(folders=parent_folders, version=self.protocol.version, tag="m:ParentFolderIds")
101
+ )
102
+ for entry in unresolved_entries:
103
+ add_xml_child(payload, "m:UnresolvedEntry", entry)
104
+ return payload
@@ -0,0 +1,26 @@
1
+ from ..errors import InvalidTypeError
2
+ from ..folders import BaseFolder
3
+ from ..properties import FolderId
4
+ from ..util import create_element
5
+ from .common import EWSAccountService, folder_ids_element, item_ids_element
6
+
7
+
8
+ class SendItem(EWSAccountService):
9
+ """MSDN: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/senditem-operation"""
10
+
11
+ SERVICE_NAME = "SendItem"
12
+ returns_elements = False
13
+
14
+ def call(self, items, saved_item_folder):
15
+ if saved_item_folder and not isinstance(saved_item_folder, (BaseFolder, FolderId)):
16
+ raise InvalidTypeError("saved_item_folder", saved_item_folder, (BaseFolder, FolderId))
17
+ return self._chunked_get_elements(self.get_payload, items=items, saved_item_folder=saved_item_folder)
18
+
19
+ def get_payload(self, items, saved_item_folder):
20
+ payload = create_element(f"m:{self.SERVICE_NAME}", attrs=dict(SaveItemToFolder=bool(saved_item_folder)))
21
+ payload.append(item_ids_element(items=items, version=self.account.version))
22
+ if saved_item_folder:
23
+ payload.append(
24
+ folder_ids_element(folders=[saved_item_folder], version=self.account.version, tag="m:SavedItemFolderId")
25
+ )
26
+ return payload