@backtomyfuture/exchange-cli-win32-x64 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.
- package/bin/_internal/VCRUNTIME140.dll +0 -0
- package/bin/_internal/VCRUNTIME140_1.dll +0 -0
- package/bin/_internal/_asyncio.pyd +0 -0
- package/bin/_internal/_bz2.pyd +0 -0
- package/bin/_internal/_cffi_backend.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/_ctypes.pyd +0 -0
- package/bin/_internal/_decimal.pyd +0 -0
- package/bin/_internal/_elementtree.pyd +0 -0
- package/bin/_internal/_hashlib.pyd +0 -0
- package/bin/_internal/_lzma.pyd +0 -0
- package/bin/_internal/_multiprocessing.pyd +0 -0
- package/bin/_internal/_overlapped.pyd +0 -0
- package/bin/_internal/_queue.pyd +0 -0
- package/bin/_internal/_socket.pyd +0 -0
- package/bin/_internal/_ssl.pyd +0 -0
- package/bin/_internal/_uuid.pyd +0 -0
- package/bin/_internal/_wmi.pyd +0 -0
- package/bin/_internal/_zoneinfo.pyd +0 -0
- package/bin/_internal/ada92cb5d92a588d1b93__mypyc.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/api-ms-win-core-console-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-datetime-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-debug-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-errorhandling-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-fibers-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-fibers-l1-1-1.dll +0 -0
- package/bin/_internal/api-ms-win-core-file-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-file-l1-2-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-file-l2-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-handle-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-heap-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-interlocked-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-kernel32-legacy-l1-1-1.dll +0 -0
- package/bin/_internal/api-ms-win-core-libraryloader-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-localization-l1-2-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-memory-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-namedpipe-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-processenvironment-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-processthreads-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-processthreads-l1-1-1.dll +0 -0
- package/bin/_internal/api-ms-win-core-profile-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-string-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-synch-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-synch-l1-2-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-sysinfo-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-sysinfo-l1-2-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-timezone-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-util-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-conio-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-convert-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-environment-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-filesystem-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-heap-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-locale-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-math-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-process-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-runtime-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-stdio-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-string-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-time-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-utility-l1-1-0.dll +0 -0
- package/bin/_internal/base_library.zip +0 -0
- package/bin/_internal/certifi/cacert.pem +3959 -0
- package/bin/_internal/certifi/py.typed +0 -0
- package/bin/_internal/charset_normalizer/cd.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/charset_normalizer/md.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/click-8.4.2.dist-info/INSTALLER +1 -0
- package/bin/_internal/click-8.4.2.dist-info/METADATA +84 -0
- package/bin/_internal/click-8.4.2.dist-info/RECORD +40 -0
- package/bin/_internal/click-8.4.2.dist-info/WHEEL +4 -0
- package/bin/_internal/click-8.4.2.dist-info/licenses/LICENSE.txt +28 -0
- package/bin/_internal/cryptography/hazmat/bindings/_rust.pyd +0 -0
- package/bin/_internal/cryptography-48.0.1.dist-info/INSTALLER +1 -0
- package/bin/_internal/cryptography-48.0.1.dist-info/METADATA +110 -0
- package/bin/_internal/cryptography-48.0.1.dist-info/RECORD +195 -0
- package/bin/_internal/cryptography-48.0.1.dist-info/WHEEL +4 -0
- package/bin/_internal/cryptography-48.0.1.dist-info/licenses/LICENSE +3 -0
- package/bin/_internal/cryptography-48.0.1.dist-info/licenses/LICENSE.APACHE +202 -0
- package/bin/_internal/cryptography-48.0.1.dist-info/licenses/LICENSE.BSD +27 -0
- package/bin/_internal/cryptography-48.0.1.dist-info/sboms/cryptography-rust.cyclonedx.json +1362 -0
- package/bin/_internal/cryptography-48.0.1.dist-info/sboms/sbom.json +43 -0
- package/bin/_internal/exchangelib/__init__.py +120 -0
- package/bin/_internal/exchangelib/account.py +896 -0
- package/bin/_internal/exchangelib/attachments.py +268 -0
- package/bin/_internal/exchangelib/autodiscover/__init__.py +24 -0
- package/bin/_internal/exchangelib/autodiscover/cache.py +150 -0
- package/bin/_internal/exchangelib/autodiscover/discovery.py +491 -0
- package/bin/_internal/exchangelib/autodiscover/protocol.py +58 -0
- package/bin/_internal/exchangelib/configuration.py +106 -0
- package/bin/_internal/exchangelib/credentials.py +319 -0
- package/bin/_internal/exchangelib/errors.py +1710 -0
- package/bin/_internal/exchangelib/ewsdatetime.py +309 -0
- package/bin/_internal/exchangelib/extended_properties.py +311 -0
- package/bin/_internal/exchangelib/fields.py +1842 -0
- package/bin/_internal/exchangelib/folders/__init__.py +249 -0
- package/bin/_internal/exchangelib/folders/base.py +954 -0
- package/bin/_internal/exchangelib/folders/collections.py +576 -0
- package/bin/_internal/exchangelib/folders/known_folders.py +856 -0
- package/bin/_internal/exchangelib/folders/queryset.py +187 -0
- package/bin/_internal/exchangelib/folders/roots.py +390 -0
- package/bin/_internal/exchangelib/indexed_properties.py +96 -0
- package/bin/_internal/exchangelib/items/__init__.py +147 -0
- package/bin/_internal/exchangelib/items/base.py +241 -0
- package/bin/_internal/exchangelib/items/calendar_item.py +466 -0
- package/bin/_internal/exchangelib/items/contact.py +263 -0
- package/bin/_internal/exchangelib/items/item.py +413 -0
- package/bin/_internal/exchangelib/items/message.py +201 -0
- package/bin/_internal/exchangelib/items/post.py +38 -0
- package/bin/_internal/exchangelib/items/task.py +139 -0
- package/bin/_internal/exchangelib/properties.py +2364 -0
- package/bin/_internal/exchangelib/protocol.py +823 -0
- package/bin/_internal/exchangelib/queryset.py +691 -0
- package/bin/_internal/exchangelib/recurrence.py +349 -0
- package/bin/_internal/exchangelib/restriction.py +568 -0
- package/bin/_internal/exchangelib/services/__init__.py +117 -0
- package/bin/_internal/exchangelib/services/archive_item.py +33 -0
- package/bin/_internal/exchangelib/services/common.py +983 -0
- package/bin/_internal/exchangelib/services/convert_id.py +45 -0
- package/bin/_internal/exchangelib/services/copy_item.py +7 -0
- package/bin/_internal/exchangelib/services/create_attachment.py +34 -0
- package/bin/_internal/exchangelib/services/create_folder.py +45 -0
- package/bin/_internal/exchangelib/services/create_item.py +97 -0
- package/bin/_internal/exchangelib/services/create_user_configuration.py +19 -0
- package/bin/_internal/exchangelib/services/delete_attachment.py +28 -0
- package/bin/_internal/exchangelib/services/delete_folder.py +21 -0
- package/bin/_internal/exchangelib/services/delete_item.py +51 -0
- package/bin/_internal/exchangelib/services/delete_user_configuration.py +19 -0
- package/bin/_internal/exchangelib/services/empty_folder.py +25 -0
- package/bin/_internal/exchangelib/services/expand_dl.py +21 -0
- package/bin/_internal/exchangelib/services/export_items.py +27 -0
- package/bin/_internal/exchangelib/services/find_folder.py +80 -0
- package/bin/_internal/exchangelib/services/find_item.py +112 -0
- package/bin/_internal/exchangelib/services/find_people.py +106 -0
- package/bin/_internal/exchangelib/services/get_attachment.py +117 -0
- package/bin/_internal/exchangelib/services/get_delegate.py +45 -0
- package/bin/_internal/exchangelib/services/get_events.py +39 -0
- package/bin/_internal/exchangelib/services/get_folder.py +65 -0
- package/bin/_internal/exchangelib/services/get_item.py +41 -0
- package/bin/_internal/exchangelib/services/get_mail_tips.py +43 -0
- package/bin/_internal/exchangelib/services/get_persona.py +31 -0
- package/bin/_internal/exchangelib/services/get_room_lists.py +21 -0
- package/bin/_internal/exchangelib/services/get_rooms.py +21 -0
- package/bin/_internal/exchangelib/services/get_searchable_mailboxes.py +48 -0
- package/bin/_internal/exchangelib/services/get_server_time_zones.py +39 -0
- package/bin/_internal/exchangelib/services/get_streaming_events.py +102 -0
- package/bin/_internal/exchangelib/services/get_user_availability.py +67 -0
- package/bin/_internal/exchangelib/services/get_user_configuration.py +43 -0
- package/bin/_internal/exchangelib/services/get_user_oof_settings.py +40 -0
- package/bin/_internal/exchangelib/services/get_user_settings.py +87 -0
- package/bin/_internal/exchangelib/services/inbox_rules.py +104 -0
- package/bin/_internal/exchangelib/services/mark_as_junk.py +27 -0
- package/bin/_internal/exchangelib/services/move_folder.py +27 -0
- package/bin/_internal/exchangelib/services/move_item.py +28 -0
- package/bin/_internal/exchangelib/services/resolve_names.py +104 -0
- package/bin/_internal/exchangelib/services/send_item.py +26 -0
- package/bin/_internal/exchangelib/services/send_notification.py +43 -0
- package/bin/_internal/exchangelib/services/set_user_oof_settings.py +34 -0
- package/bin/_internal/exchangelib/services/subscribe.py +125 -0
- package/bin/_internal/exchangelib/services/sync_folder_hierarchy.py +95 -0
- package/bin/_internal/exchangelib/services/sync_folder_items.py +77 -0
- package/bin/_internal/exchangelib/services/unsubscribe.py +21 -0
- package/bin/_internal/exchangelib/services/update_folder.py +158 -0
- package/bin/_internal/exchangelib/services/update_item.py +113 -0
- package/bin/_internal/exchangelib/services/update_user_configuration.py +17 -0
- package/bin/_internal/exchangelib/services/upload_items.py +47 -0
- package/bin/_internal/exchangelib/settings.py +88 -0
- package/bin/_internal/exchangelib/transport.py +214 -0
- package/bin/_internal/exchangelib/util.py +894 -0
- package/bin/_internal/exchangelib/version.py +320 -0
- package/bin/_internal/exchangelib/winzone.py +662 -0
- package/bin/_internal/exchangelib-5.6.0.dist-info/INSTALLER +1 -0
- package/bin/_internal/exchangelib-5.6.0.dist-info/METADATA +77 -0
- package/bin/_internal/exchangelib-5.6.0.dist-info/RECORD +184 -0
- package/bin/_internal/exchangelib-5.6.0.dist-info/WHEEL +5 -0
- package/bin/_internal/exchangelib-5.6.0.dist-info/licenses/LICENSE +21 -0
- package/bin/_internal/exchangelib-5.6.0.dist-info/top_level.txt +1 -0
- package/bin/_internal/libcrypto-3.dll +0 -0
- package/bin/_internal/libffi-8.dll +0 -0
- package/bin/_internal/libssl-3.dll +0 -0
- package/bin/_internal/lxml/_elementpath.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/lxml/builder.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/lxml/etree.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/lxml/html/_difflib.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/lxml/html/diff.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/lxml/isoschematron/resources/rng/iso-schematron.rng +709 -0
- package/bin/_internal/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl +75 -0
- package/bin/_internal/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl +77 -0
- package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl +313 -0
- package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl +1160 -0
- package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl +55 -0
- package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl +1796 -0
- package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl +588 -0
- package/bin/_internal/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt +84 -0
- package/bin/_internal/lxml/objectify.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/lxml/sax.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/pyexpat.pyd +0 -0
- package/bin/_internal/python3.dll +0 -0
- package/bin/_internal/python312.dll +0 -0
- package/bin/_internal/select.pyd +0 -0
- package/bin/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt +2 -0
- package/bin/_internal/sspilib/raw/_context_attributes.pyd +0 -0
- package/bin/_internal/sspilib/raw/_credential.pyd +0 -0
- package/bin/_internal/sspilib/raw/_credential_attributes.pyd +0 -0
- package/bin/_internal/sspilib/raw/_message.pyd +0 -0
- package/bin/_internal/sspilib/raw/_ntstatus.pyd +0 -0
- package/bin/_internal/sspilib/raw/_security_buffer.pyd +0 -0
- package/bin/_internal/sspilib/raw/_security_context.pyd +0 -0
- package/bin/_internal/sspilib/raw/_security_package.pyd +0 -0
- package/bin/_internal/sspilib/raw/_text.pyd +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Abidjan +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Accra +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Addis_Ababa +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Algiers +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Asmara +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Asmera +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Bamako +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Bangui +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Banjul +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Bissau +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Blantyre +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Brazzaville +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Bujumbura +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Cairo +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Casablanca +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Ceuta +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Conakry +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Dakar +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Dar_es_Salaam +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Djibouti +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Douala +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/El_Aaiun +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Freetown +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Gaborone +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Harare +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Johannesburg +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Juba +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Kampala +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Khartoum +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Kigali +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Kinshasa +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Lagos +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Libreville +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Lome +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Luanda +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Lubumbashi +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Lusaka +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Malabo +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Maputo +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Maseru +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Mbabane +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Mogadishu +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Monrovia +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Nairobi +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Ndjamena +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Niamey +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Nouakchott +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Ouagadougou +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Porto-Novo +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Sao_Tome +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Timbuktu +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Tripoli +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Tunis +0 -0
- package/bin/_internal/tzdata/zoneinfo/Africa/Windhoek +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Adak +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Anchorage +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Anguilla +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Antigua +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Araguaina +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Argentina/Buenos_Aires +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Argentina/Catamarca +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Argentina/ComodRivadavia +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Argentina/Cordoba +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Argentina/Jujuy +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Argentina/La_Rioja +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Argentina/Mendoza +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Argentina/Rio_Gallegos +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Argentina/Salta +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Argentina/San_Juan +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Argentina/San_Luis +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Argentina/Tucuman +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Argentina/Ushuaia +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Aruba +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Asuncion +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Atikokan +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Atka +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Bahia +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Bahia_Banderas +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Barbados +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Belem +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Belize +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Blanc-Sablon +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Boa_Vista +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Bogota +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Boise +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Buenos_Aires +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Cambridge_Bay +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Campo_Grande +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Cancun +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Caracas +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Catamarca +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Cayenne +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Cayman +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Chicago +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Chihuahua +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Ciudad_Juarez +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Coral_Harbour +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Cordoba +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Costa_Rica +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Coyhaique +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Creston +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Cuiaba +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Curacao +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Danmarkshavn +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Dawson +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Dawson_Creek +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Denver +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Detroit +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Dominica +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Edmonton +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Eirunepe +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/El_Salvador +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Ensenada +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Fort_Nelson +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Fort_Wayne +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Fortaleza +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Glace_Bay +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Godthab +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Goose_Bay +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Grand_Turk +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Grenada +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Guadeloupe +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Guatemala +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Guayaquil +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Guyana +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Halifax +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Havana +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Hermosillo +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Indiana/Indianapolis +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Indiana/Knox +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Indiana/Marengo +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Indiana/Petersburg +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Indiana/Tell_City +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Indiana/Vevay +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Indiana/Vincennes +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Indiana/Winamac +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Indianapolis +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Inuvik +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Iqaluit +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Jamaica +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Jujuy +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Juneau +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Kentucky/Louisville +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Kentucky/Monticello +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Knox_IN +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Kralendijk +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/La_Paz +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Lima +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Los_Angeles +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Louisville +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Lower_Princes +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Maceio +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Managua +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Manaus +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Marigot +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Martinique +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Matamoros +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Mazatlan +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Mendoza +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Menominee +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Merida +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Metlakatla +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Mexico_City +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Miquelon +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Moncton +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Monterrey +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Montevideo +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Montreal +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Montserrat +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Nassau +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/New_York +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Nipigon +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Nome +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Noronha +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/North_Dakota/Beulah +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/North_Dakota/Center +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/North_Dakota/New_Salem +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Nuuk +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Ojinaga +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Panama +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Pangnirtung +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Paramaribo +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Phoenix +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Port-au-Prince +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Port_of_Spain +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Porto_Acre +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Porto_Velho +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Puerto_Rico +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Punta_Arenas +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Rainy_River +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Rankin_Inlet +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Recife +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Regina +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Resolute +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Rio_Branco +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Rosario +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Santa_Isabel +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Santarem +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Santiago +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Santo_Domingo +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Sao_Paulo +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Scoresbysund +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Shiprock +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Sitka +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/St_Barthelemy +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/St_Johns +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/St_Kitts +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/St_Lucia +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/St_Thomas +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/St_Vincent +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Swift_Current +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Tegucigalpa +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Thule +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Thunder_Bay +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Tijuana +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Toronto +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Tortola +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Vancouver +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Virgin +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Whitehorse +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Winnipeg +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Yakutat +0 -0
- package/bin/_internal/tzdata/zoneinfo/America/Yellowknife +0 -0
- package/bin/_internal/tzdata/zoneinfo/Antarctica/Casey +0 -0
- package/bin/_internal/tzdata/zoneinfo/Antarctica/Davis +0 -0
- package/bin/_internal/tzdata/zoneinfo/Antarctica/DumontDUrville +0 -0
- package/bin/_internal/tzdata/zoneinfo/Antarctica/Macquarie +0 -0
- package/bin/_internal/tzdata/zoneinfo/Antarctica/Mawson +0 -0
- package/bin/_internal/tzdata/zoneinfo/Antarctica/McMurdo +0 -0
- package/bin/_internal/tzdata/zoneinfo/Antarctica/Palmer +0 -0
- package/bin/_internal/tzdata/zoneinfo/Antarctica/Rothera +0 -0
- package/bin/_internal/tzdata/zoneinfo/Antarctica/South_Pole +0 -0
- package/bin/_internal/tzdata/zoneinfo/Antarctica/Syowa +0 -0
- package/bin/_internal/tzdata/zoneinfo/Antarctica/Troll +0 -0
- package/bin/_internal/tzdata/zoneinfo/Antarctica/Vostok +0 -0
- package/bin/_internal/tzdata/zoneinfo/Arctic/Longyearbyen +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Aden +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Almaty +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Amman +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Anadyr +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Aqtau +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Aqtobe +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Ashgabat +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Ashkhabad +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Atyrau +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Baghdad +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Bahrain +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Baku +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Bangkok +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Barnaul +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Beirut +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Bishkek +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Brunei +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Calcutta +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Chita +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Choibalsan +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Chongqing +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Chungking +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Colombo +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Dacca +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Damascus +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Dhaka +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Dili +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Dubai +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Dushanbe +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Famagusta +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Gaza +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Harbin +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Hebron +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Ho_Chi_Minh +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Hong_Kong +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Hovd +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Irkutsk +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Istanbul +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Jakarta +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Jayapura +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Jerusalem +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Kabul +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Kamchatka +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Karachi +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Kashgar +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Kathmandu +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Katmandu +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Khandyga +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Kolkata +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Krasnoyarsk +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Kuala_Lumpur +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Kuching +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Kuwait +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Macao +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Macau +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Magadan +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Makassar +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Manila +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Muscat +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Nicosia +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Novokuznetsk +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Novosibirsk +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Omsk +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Oral +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Phnom_Penh +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Pontianak +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Pyongyang +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Qatar +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Qostanay +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Qyzylorda +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Rangoon +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Riyadh +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Saigon +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Sakhalin +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Samarkand +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Seoul +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Shanghai +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Singapore +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Srednekolymsk +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Taipei +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Tashkent +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Tbilisi +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Tehran +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Tel_Aviv +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Thimbu +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Thimphu +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Tokyo +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Tomsk +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Ujung_Pandang +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Ulaanbaatar +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Ulan_Bator +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Urumqi +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Ust-Nera +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Vientiane +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Vladivostok +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Yakutsk +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Yangon +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Yekaterinburg +0 -0
- package/bin/_internal/tzdata/zoneinfo/Asia/Yerevan +0 -0
- package/bin/_internal/tzdata/zoneinfo/Atlantic/Azores +0 -0
- package/bin/_internal/tzdata/zoneinfo/Atlantic/Bermuda +0 -0
- package/bin/_internal/tzdata/zoneinfo/Atlantic/Canary +0 -0
- package/bin/_internal/tzdata/zoneinfo/Atlantic/Cape_Verde +0 -0
- package/bin/_internal/tzdata/zoneinfo/Atlantic/Faeroe +0 -0
- package/bin/_internal/tzdata/zoneinfo/Atlantic/Faroe +0 -0
- package/bin/_internal/tzdata/zoneinfo/Atlantic/Jan_Mayen +0 -0
- package/bin/_internal/tzdata/zoneinfo/Atlantic/Madeira +0 -0
- package/bin/_internal/tzdata/zoneinfo/Atlantic/Reykjavik +0 -0
- package/bin/_internal/tzdata/zoneinfo/Atlantic/South_Georgia +0 -0
- package/bin/_internal/tzdata/zoneinfo/Atlantic/St_Helena +0 -0
- package/bin/_internal/tzdata/zoneinfo/Atlantic/Stanley +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/ACT +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Adelaide +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Brisbane +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Broken_Hill +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Canberra +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Currie +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Darwin +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Eucla +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Hobart +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/LHI +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Lindeman +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Lord_Howe +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Melbourne +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/NSW +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/North +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Perth +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Queensland +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/South +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Sydney +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Tasmania +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Victoria +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/West +0 -0
- package/bin/_internal/tzdata/zoneinfo/Australia/Yancowinna +0 -0
- package/bin/_internal/tzdata/zoneinfo/Brazil/Acre +0 -0
- package/bin/_internal/tzdata/zoneinfo/Brazil/DeNoronha +0 -0
- package/bin/_internal/tzdata/zoneinfo/Brazil/East +0 -0
- package/bin/_internal/tzdata/zoneinfo/Brazil/West +0 -0
- package/bin/_internal/tzdata/zoneinfo/CET +0 -0
- package/bin/_internal/tzdata/zoneinfo/CST6CDT +0 -0
- package/bin/_internal/tzdata/zoneinfo/Canada/Atlantic +0 -0
- package/bin/_internal/tzdata/zoneinfo/Canada/Central +0 -0
- package/bin/_internal/tzdata/zoneinfo/Canada/Eastern +0 -0
- package/bin/_internal/tzdata/zoneinfo/Canada/Mountain +0 -0
- package/bin/_internal/tzdata/zoneinfo/Canada/Newfoundland +0 -0
- package/bin/_internal/tzdata/zoneinfo/Canada/Pacific +0 -0
- package/bin/_internal/tzdata/zoneinfo/Canada/Saskatchewan +0 -0
- package/bin/_internal/tzdata/zoneinfo/Canada/Yukon +0 -0
- package/bin/_internal/tzdata/zoneinfo/Chile/Continental +0 -0
- package/bin/_internal/tzdata/zoneinfo/Chile/EasterIsland +0 -0
- package/bin/_internal/tzdata/zoneinfo/Cuba +0 -0
- package/bin/_internal/tzdata/zoneinfo/EET +0 -0
- package/bin/_internal/tzdata/zoneinfo/EST +0 -0
- package/bin/_internal/tzdata/zoneinfo/EST5EDT +0 -0
- package/bin/_internal/tzdata/zoneinfo/Egypt +0 -0
- package/bin/_internal/tzdata/zoneinfo/Eire +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT+0 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT+1 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT+10 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT+11 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT+12 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT+2 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT+3 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT+4 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT+5 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT+6 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT+7 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT+8 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT+9 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT-0 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT-1 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT-10 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT-11 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT-12 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT-13 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT-14 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT-2 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT-3 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT-4 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT-5 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT-6 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT-7 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT-8 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT-9 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/GMT0 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/Greenwich +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/UCT +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/UTC +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/Universal +0 -0
- package/bin/_internal/tzdata/zoneinfo/Etc/Zulu +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Amsterdam +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Andorra +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Astrakhan +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Athens +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Belfast +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Belgrade +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Berlin +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Bratislava +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Brussels +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Bucharest +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Budapest +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Busingen +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Chisinau +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Copenhagen +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Dublin +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Gibraltar +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Guernsey +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Helsinki +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Isle_of_Man +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Istanbul +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Jersey +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Kaliningrad +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Kiev +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Kirov +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Kyiv +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Lisbon +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Ljubljana +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/London +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Luxembourg +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Madrid +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Malta +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Mariehamn +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Minsk +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Monaco +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Moscow +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Nicosia +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Oslo +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Paris +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Podgorica +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Prague +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Riga +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Rome +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Samara +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/San_Marino +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Sarajevo +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Saratov +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Simferopol +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Skopje +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Sofia +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Stockholm +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Tallinn +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Tirane +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Tiraspol +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Ulyanovsk +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Uzhgorod +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Vaduz +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Vatican +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Vienna +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Vilnius +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Volgograd +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Warsaw +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Zagreb +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Zaporozhye +0 -0
- package/bin/_internal/tzdata/zoneinfo/Europe/Zurich +0 -0
- package/bin/_internal/tzdata/zoneinfo/Factory +0 -0
- package/bin/_internal/tzdata/zoneinfo/GB +0 -0
- package/bin/_internal/tzdata/zoneinfo/GB-Eire +0 -0
- package/bin/_internal/tzdata/zoneinfo/GMT +0 -0
- package/bin/_internal/tzdata/zoneinfo/GMT+0 +0 -0
- package/bin/_internal/tzdata/zoneinfo/GMT-0 +0 -0
- package/bin/_internal/tzdata/zoneinfo/GMT0 +0 -0
- package/bin/_internal/tzdata/zoneinfo/Greenwich +0 -0
- package/bin/_internal/tzdata/zoneinfo/HST +0 -0
- package/bin/_internal/tzdata/zoneinfo/Hongkong +0 -0
- package/bin/_internal/tzdata/zoneinfo/Iceland +0 -0
- package/bin/_internal/tzdata/zoneinfo/Indian/Antananarivo +0 -0
- package/bin/_internal/tzdata/zoneinfo/Indian/Chagos +0 -0
- package/bin/_internal/tzdata/zoneinfo/Indian/Christmas +0 -0
- package/bin/_internal/tzdata/zoneinfo/Indian/Cocos +0 -0
- package/bin/_internal/tzdata/zoneinfo/Indian/Comoro +0 -0
- package/bin/_internal/tzdata/zoneinfo/Indian/Kerguelen +0 -0
- package/bin/_internal/tzdata/zoneinfo/Indian/Mahe +0 -0
- package/bin/_internal/tzdata/zoneinfo/Indian/Maldives +0 -0
- package/bin/_internal/tzdata/zoneinfo/Indian/Mauritius +0 -0
- package/bin/_internal/tzdata/zoneinfo/Indian/Mayotte +0 -0
- package/bin/_internal/tzdata/zoneinfo/Indian/Reunion +0 -0
- package/bin/_internal/tzdata/zoneinfo/Iran +0 -0
- package/bin/_internal/tzdata/zoneinfo/Israel +0 -0
- package/bin/_internal/tzdata/zoneinfo/Jamaica +0 -0
- package/bin/_internal/tzdata/zoneinfo/Japan +0 -0
- package/bin/_internal/tzdata/zoneinfo/Kwajalein +0 -0
- package/bin/_internal/tzdata/zoneinfo/Libya +0 -0
- package/bin/_internal/tzdata/zoneinfo/MET +0 -0
- package/bin/_internal/tzdata/zoneinfo/MST +0 -0
- package/bin/_internal/tzdata/zoneinfo/MST7MDT +0 -0
- package/bin/_internal/tzdata/zoneinfo/Mexico/BajaNorte +0 -0
- package/bin/_internal/tzdata/zoneinfo/Mexico/BajaSur +0 -0
- package/bin/_internal/tzdata/zoneinfo/Mexico/General +0 -0
- package/bin/_internal/tzdata/zoneinfo/NZ +0 -0
- package/bin/_internal/tzdata/zoneinfo/NZ-CHAT +0 -0
- package/bin/_internal/tzdata/zoneinfo/Navajo +0 -0
- package/bin/_internal/tzdata/zoneinfo/PRC +0 -0
- package/bin/_internal/tzdata/zoneinfo/PST8PDT +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Apia +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Auckland +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Bougainville +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Chatham +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Chuuk +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Easter +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Efate +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Enderbury +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Fakaofo +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Fiji +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Funafuti +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Galapagos +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Gambier +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Guadalcanal +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Guam +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Honolulu +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Johnston +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Kanton +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Kiritimati +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Kosrae +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Kwajalein +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Majuro +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Marquesas +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Midway +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Nauru +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Niue +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Norfolk +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Noumea +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Pago_Pago +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Palau +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Pitcairn +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Pohnpei +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Ponape +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Port_Moresby +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Rarotonga +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Saipan +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Samoa +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Tahiti +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Tarawa +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Tongatapu +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Truk +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Wake +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Wallis +0 -0
- package/bin/_internal/tzdata/zoneinfo/Pacific/Yap +0 -0
- package/bin/_internal/tzdata/zoneinfo/Poland +0 -0
- package/bin/_internal/tzdata/zoneinfo/Portugal +0 -0
- package/bin/_internal/tzdata/zoneinfo/ROC +0 -0
- package/bin/_internal/tzdata/zoneinfo/ROK +0 -0
- package/bin/_internal/tzdata/zoneinfo/Singapore +0 -0
- package/bin/_internal/tzdata/zoneinfo/Turkey +0 -0
- package/bin/_internal/tzdata/zoneinfo/UCT +0 -0
- package/bin/_internal/tzdata/zoneinfo/US/Alaska +0 -0
- package/bin/_internal/tzdata/zoneinfo/US/Aleutian +0 -0
- package/bin/_internal/tzdata/zoneinfo/US/Arizona +0 -0
- package/bin/_internal/tzdata/zoneinfo/US/Central +0 -0
- package/bin/_internal/tzdata/zoneinfo/US/East-Indiana +0 -0
- package/bin/_internal/tzdata/zoneinfo/US/Eastern +0 -0
- package/bin/_internal/tzdata/zoneinfo/US/Hawaii +0 -0
- package/bin/_internal/tzdata/zoneinfo/US/Indiana-Starke +0 -0
- package/bin/_internal/tzdata/zoneinfo/US/Michigan +0 -0
- package/bin/_internal/tzdata/zoneinfo/US/Mountain +0 -0
- package/bin/_internal/tzdata/zoneinfo/US/Pacific +0 -0
- package/bin/_internal/tzdata/zoneinfo/US/Samoa +0 -0
- package/bin/_internal/tzdata/zoneinfo/UTC +0 -0
- package/bin/_internal/tzdata/zoneinfo/Universal +0 -0
- package/bin/_internal/tzdata/zoneinfo/W-SU +0 -0
- package/bin/_internal/tzdata/zoneinfo/WET +0 -0
- package/bin/_internal/tzdata/zoneinfo/Zulu +0 -0
- package/bin/_internal/tzdata/zoneinfo/iso3166.tab +279 -0
- package/bin/_internal/tzdata/zoneinfo/leapseconds +86 -0
- package/bin/_internal/tzdata/zoneinfo/tzdata.zi +4180 -0
- package/bin/_internal/tzdata/zoneinfo/zone.tab +448 -0
- package/bin/_internal/tzdata/zoneinfo/zone1970.tab +375 -0
- package/bin/_internal/tzdata/zoneinfo/zonenow.tab +299 -0
- package/bin/_internal/tzdata/zones +598 -0
- package/bin/_internal/ucrtbase.dll +0 -0
- package/bin/_internal/unicodedata.pyd +0 -0
- package/bin/exchange-cli.exe +0 -0
- 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
|