Files.com 1.6.480__tar.gz → 1.6.482__tar.gz

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 (319) hide show
  1. {files_com-1.6.480/files_com.egg-info → files_com-1.6.482}/PKG-INFO +1 -1
  2. files_com-1.6.482/_VERSION +1 -0
  3. {files_com-1.6.480 → files_com-1.6.482/files_com.egg-info}/PKG-INFO +1 -1
  4. {files_com-1.6.480 → files_com-1.6.482}/files_com.egg-info/SOURCES.txt +1 -0
  5. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/__init__.py +1 -1
  6. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/api_client.py +27 -2
  7. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/bundle.py +5 -4
  8. {files_com-1.6.480 → files_com-1.6.482}/pyproject.toml +1 -1
  9. files_com-1.6.482/tests/test_redirect_auth.py +92 -0
  10. files_com-1.6.480/_VERSION +0 -1
  11. {files_com-1.6.480 → files_com-1.6.482}/LICENSE +0 -0
  12. {files_com-1.6.480 → files_com-1.6.482}/README.md +0 -0
  13. {files_com-1.6.480 → files_com-1.6.482}/files_com.egg-info/dependency_links.txt +0 -0
  14. {files_com-1.6.480 → files_com-1.6.482}/files_com.egg-info/requires.txt +0 -0
  15. {files_com-1.6.480 → files_com-1.6.482}/files_com.egg-info/top_level.txt +0 -0
  16. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/api.py +0 -0
  17. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/error.py +0 -0
  18. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/list_obj.py +0 -0
  19. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/__init__.py +0 -0
  20. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/account_line_item.py +0 -0
  21. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/action.py +0 -0
  22. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/action_log.py +0 -0
  23. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/action_notification_export.py +0 -0
  24. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/action_notification_export_result.py +0 -0
  25. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/agent_node.py +0 -0
  26. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/agent_node_connection.py +0 -0
  27. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/agent_node_instance.py +0 -0
  28. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/agent_push_update.py +0 -0
  29. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/ai_assistant_personality.py +0 -0
  30. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/ai_task.py +0 -0
  31. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/api_key.py +0 -0
  32. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/api_request_log.py +0 -0
  33. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/app.py +0 -0
  34. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/as2_incoming_message.py +0 -0
  35. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/as2_outgoing_message.py +0 -0
  36. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/as2_partner.py +0 -0
  37. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/as2_station.py +0 -0
  38. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/auto.py +0 -0
  39. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/automation.py +0 -0
  40. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/automation_authoring_schema.py +0 -0
  41. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/automation_execution_node.py +0 -0
  42. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/automation_log.py +0 -0
  43. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/automation_run.py +0 -0
  44. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/bandwidth_snapshot.py +0 -0
  45. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/behavior.py +0 -0
  46. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/bundle_action.py +0 -0
  47. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/bundle_download.py +0 -0
  48. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/bundle_notification.py +0 -0
  49. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/bundle_path.py +0 -0
  50. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/bundle_recipient.py +0 -0
  51. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/bundle_registration.py +0 -0
  52. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/chat_message.py +0 -0
  53. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/chat_session.py +0 -0
  54. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/child_site_management_policy.py +0 -0
  55. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/clickwrap.py +0 -0
  56. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/custom_domain.py +0 -0
  57. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/desktop_configuration_profile.py +0 -0
  58. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/direct_connection_info.py +0 -0
  59. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/dns_record.py +0 -0
  60. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/email_incoming_message.py +0 -0
  61. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/email_log.py +0 -0
  62. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/errors.py +0 -0
  63. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/event_channel.py +0 -0
  64. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/event_delivery_attempt.py +0 -0
  65. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/event_record.py +0 -0
  66. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/event_subscription.py +0 -0
  67. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/event_target.py +0 -0
  68. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/exavault_api_request_log.py +0 -0
  69. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/expectation.py +0 -0
  70. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/expectation_evaluation.py +0 -0
  71. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/expectation_incident.py +0 -0
  72. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/external_event.py +0 -0
  73. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/file.py +0 -0
  74. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/file_action.py +0 -0
  75. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/file_comment.py +0 -0
  76. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/file_comment_reaction.py +0 -0
  77. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/file_migration.py +0 -0
  78. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/file_migration_log.py +0 -0
  79. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/file_upload_part.py +0 -0
  80. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/folder.py +0 -0
  81. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/form_field.py +0 -0
  82. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/form_field_set.py +0 -0
  83. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/ftp_action_log.py +0 -0
  84. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/gpg_key.py +0 -0
  85. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/group.py +0 -0
  86. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/group_user.py +0 -0
  87. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/history.py +0 -0
  88. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/history_export.py +0 -0
  89. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/history_export_result.py +0 -0
  90. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/holiday_calendar.py +0 -0
  91. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/holiday_region.py +0 -0
  92. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/image.py +0 -0
  93. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/inbound_s3_log.py +0 -0
  94. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/inbox_recipient.py +0 -0
  95. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/inbox_registration.py +0 -0
  96. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/inbox_upload.py +0 -0
  97. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/integration_centric_profile.py +0 -0
  98. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/invoice.py +0 -0
  99. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/invoice_line_item.py +0 -0
  100. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/ip_address.py +0 -0
  101. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/key_lifecycle_rule.py +0 -0
  102. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/lock.py +0 -0
  103. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/metadata_category.py +0 -0
  104. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/notification.py +0 -0
  105. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/outbound_connection_log.py +0 -0
  106. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/partner.py +0 -0
  107. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/partner_channel.py +0 -0
  108. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/partner_channel_template.py +0 -0
  109. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/partner_connection.py +0 -0
  110. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/partner_site.py +0 -0
  111. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/partner_site_request.py +0 -0
  112. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/payment.py +0 -0
  113. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/payment_line_item.py +0 -0
  114. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/pending_work_event.py +0 -0
  115. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/permission.py +0 -0
  116. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/preview.py +0 -0
  117. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/public_hosting_request_log.py +0 -0
  118. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/public_ip_address.py +0 -0
  119. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/public_key.py +0 -0
  120. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/remote_bandwidth_snapshot.py +0 -0
  121. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/remote_mount_backend.py +0 -0
  122. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/remote_server.py +0 -0
  123. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/remote_server_configuration_file.py +0 -0
  124. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/remote_server_credential.py +0 -0
  125. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/request.py +0 -0
  126. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/restore.py +0 -0
  127. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/schedule.py +0 -0
  128. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/scheduled_export.py +0 -0
  129. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/scim_log.py +0 -0
  130. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/secret.py +0 -0
  131. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/session.py +0 -0
  132. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/settings_change.py +0 -0
  133. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/sftp_action_log.py +0 -0
  134. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/sftp_host_key.py +0 -0
  135. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/share_group.py +0 -0
  136. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/share_group_member.py +0 -0
  137. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/siem_http_destination.py +0 -0
  138. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/siem_http_destination_event.py +0 -0
  139. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/site.py +0 -0
  140. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/site_subdomain_redirect.py +0 -0
  141. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/snapshot.py +0 -0
  142. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/sso_event.py +0 -0
  143. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/sso_strategy.py +0 -0
  144. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/status.py +0 -0
  145. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/style.py +0 -0
  146. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/sync.py +0 -0
  147. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/sync_log.py +0 -0
  148. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/sync_run.py +0 -0
  149. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/sync_run_live_transfer.py +0 -0
  150. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/usage_by_top_level_dir.py +0 -0
  151. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/usage_daily_snapshot.py +0 -0
  152. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/usage_snapshot.py +0 -0
  153. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/user.py +0 -0
  154. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/user_additional_email_recipient.py +0 -0
  155. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/user_cipher_use.py +0 -0
  156. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/user_lifecycle_rule.py +0 -0
  157. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/user_request.py +0 -0
  158. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/user_security_event.py +0 -0
  159. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/user_sftp_client_use.py +0 -0
  160. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/web_dav_action_log.py +0 -0
  161. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/webhook_test.py +0 -0
  162. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/workspace.py +0 -0
  163. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/models/zip_list_entry.py +0 -0
  164. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/path_util.py +0 -0
  165. {files_com-1.6.480 → files_com-1.6.482}/files_sdk/util.py +0 -0
  166. {files_com-1.6.480 → files_com-1.6.482}/setup.cfg +0 -0
  167. {files_com-1.6.480 → files_com-1.6.482}/tests/test_account_line_item.py +0 -0
  168. {files_com-1.6.480 → files_com-1.6.482}/tests/test_action.py +0 -0
  169. {files_com-1.6.480 → files_com-1.6.482}/tests/test_action_log.py +0 -0
  170. {files_com-1.6.480 → files_com-1.6.482}/tests/test_action_notification_export.py +0 -0
  171. {files_com-1.6.480 → files_com-1.6.482}/tests/test_action_notification_export_result.py +0 -0
  172. {files_com-1.6.480 → files_com-1.6.482}/tests/test_agent_node.py +0 -0
  173. {files_com-1.6.480 → files_com-1.6.482}/tests/test_agent_node_connection.py +0 -0
  174. {files_com-1.6.480 → files_com-1.6.482}/tests/test_agent_node_instance.py +0 -0
  175. {files_com-1.6.480 → files_com-1.6.482}/tests/test_agent_push_update.py +0 -0
  176. {files_com-1.6.480 → files_com-1.6.482}/tests/test_ai_assistant_personality.py +0 -0
  177. {files_com-1.6.480 → files_com-1.6.482}/tests/test_ai_task.py +0 -0
  178. {files_com-1.6.480 → files_com-1.6.482}/tests/test_api_errors.py +0 -0
  179. {files_com-1.6.480 → files_com-1.6.482}/tests/test_api_key.py +0 -0
  180. {files_com-1.6.480 → files_com-1.6.482}/tests/test_api_request_log.py +0 -0
  181. {files_com-1.6.480 → files_com-1.6.482}/tests/test_app.py +0 -0
  182. {files_com-1.6.480 → files_com-1.6.482}/tests/test_as2_incoming_message.py +0 -0
  183. {files_com-1.6.480 → files_com-1.6.482}/tests/test_as2_outgoing_message.py +0 -0
  184. {files_com-1.6.480 → files_com-1.6.482}/tests/test_as2_partner.py +0 -0
  185. {files_com-1.6.480 → files_com-1.6.482}/tests/test_as2_station.py +0 -0
  186. {files_com-1.6.480 → files_com-1.6.482}/tests/test_auto.py +0 -0
  187. {files_com-1.6.480 → files_com-1.6.482}/tests/test_automation.py +0 -0
  188. {files_com-1.6.480 → files_com-1.6.482}/tests/test_automation_authoring_schema.py +0 -0
  189. {files_com-1.6.480 → files_com-1.6.482}/tests/test_automation_execution_node.py +0 -0
  190. {files_com-1.6.480 → files_com-1.6.482}/tests/test_automation_log.py +0 -0
  191. {files_com-1.6.480 → files_com-1.6.482}/tests/test_automation_run.py +0 -0
  192. {files_com-1.6.480 → files_com-1.6.482}/tests/test_bandwidth_snapshot.py +0 -0
  193. {files_com-1.6.480 → files_com-1.6.482}/tests/test_behavior.py +0 -0
  194. {files_com-1.6.480 → files_com-1.6.482}/tests/test_bundle.py +0 -0
  195. {files_com-1.6.480 → files_com-1.6.482}/tests/test_bundle_action.py +0 -0
  196. {files_com-1.6.480 → files_com-1.6.482}/tests/test_bundle_download.py +0 -0
  197. {files_com-1.6.480 → files_com-1.6.482}/tests/test_bundle_notification.py +0 -0
  198. {files_com-1.6.480 → files_com-1.6.482}/tests/test_bundle_path.py +0 -0
  199. {files_com-1.6.480 → files_com-1.6.482}/tests/test_bundle_recipient.py +0 -0
  200. {files_com-1.6.480 → files_com-1.6.482}/tests/test_bundle_registration.py +0 -0
  201. {files_com-1.6.480 → files_com-1.6.482}/tests/test_chat_message.py +0 -0
  202. {files_com-1.6.480 → files_com-1.6.482}/tests/test_chat_session.py +0 -0
  203. {files_com-1.6.480 → files_com-1.6.482}/tests/test_child_site_management_policy.py +0 -0
  204. {files_com-1.6.480 → files_com-1.6.482}/tests/test_clickwrap.py +0 -0
  205. {files_com-1.6.480 → files_com-1.6.482}/tests/test_connection_adapter.py +0 -0
  206. {files_com-1.6.480 → files_com-1.6.482}/tests/test_custom_domain.py +0 -0
  207. {files_com-1.6.480 → files_com-1.6.482}/tests/test_decimal_contract.py +0 -0
  208. {files_com-1.6.480 → files_com-1.6.482}/tests/test_desktop_configuration_profile.py +0 -0
  209. {files_com-1.6.480 → files_com-1.6.482}/tests/test_direct_connection_info.py +0 -0
  210. {files_com-1.6.480 → files_com-1.6.482}/tests/test_dns_record.py +0 -0
  211. {files_com-1.6.480 → files_com-1.6.482}/tests/test_email_incoming_message.py +0 -0
  212. {files_com-1.6.480 → files_com-1.6.482}/tests/test_email_log.py +0 -0
  213. {files_com-1.6.480 → files_com-1.6.482}/tests/test_errors.py +0 -0
  214. {files_com-1.6.480 → files_com-1.6.482}/tests/test_event_channel.py +0 -0
  215. {files_com-1.6.480 → files_com-1.6.482}/tests/test_event_delivery_attempt.py +0 -0
  216. {files_com-1.6.480 → files_com-1.6.482}/tests/test_event_record.py +0 -0
  217. {files_com-1.6.480 → files_com-1.6.482}/tests/test_event_subscription.py +0 -0
  218. {files_com-1.6.480 → files_com-1.6.482}/tests/test_event_target.py +0 -0
  219. {files_com-1.6.480 → files_com-1.6.482}/tests/test_exavault_api_request_log.py +0 -0
  220. {files_com-1.6.480 → files_com-1.6.482}/tests/test_expectation.py +0 -0
  221. {files_com-1.6.480 → files_com-1.6.482}/tests/test_expectation_evaluation.py +0 -0
  222. {files_com-1.6.480 → files_com-1.6.482}/tests/test_expectation_incident.py +0 -0
  223. {files_com-1.6.480 → files_com-1.6.482}/tests/test_external_event.py +0 -0
  224. {files_com-1.6.480 → files_com-1.6.482}/tests/test_file.py +0 -0
  225. {files_com-1.6.480 → files_com-1.6.482}/tests/test_file_action.py +0 -0
  226. {files_com-1.6.480 → files_com-1.6.482}/tests/test_file_comment.py +0 -0
  227. {files_com-1.6.480 → files_com-1.6.482}/tests/test_file_comment_reaction.py +0 -0
  228. {files_com-1.6.480 → files_com-1.6.482}/tests/test_file_migration.py +0 -0
  229. {files_com-1.6.480 → files_com-1.6.482}/tests/test_file_migration_log.py +0 -0
  230. {files_com-1.6.480 → files_com-1.6.482}/tests/test_file_underscore_destinations.py +0 -0
  231. {files_com-1.6.480 → files_com-1.6.482}/tests/test_file_upload_part.py +0 -0
  232. {files_com-1.6.480 → files_com-1.6.482}/tests/test_folder.py +0 -0
  233. {files_com-1.6.480 → files_com-1.6.482}/tests/test_form_field.py +0 -0
  234. {files_com-1.6.480 → files_com-1.6.482}/tests/test_form_field_set.py +0 -0
  235. {files_com-1.6.480 → files_com-1.6.482}/tests/test_ftp_action_log.py +0 -0
  236. {files_com-1.6.480 → files_com-1.6.482}/tests/test_gpg_key.py +0 -0
  237. {files_com-1.6.480 → files_com-1.6.482}/tests/test_group.py +0 -0
  238. {files_com-1.6.480 → files_com-1.6.482}/tests/test_group_user.py +0 -0
  239. {files_com-1.6.480 → files_com-1.6.482}/tests/test_history.py +0 -0
  240. {files_com-1.6.480 → files_com-1.6.482}/tests/test_history_export.py +0 -0
  241. {files_com-1.6.480 → files_com-1.6.482}/tests/test_history_export_result.py +0 -0
  242. {files_com-1.6.480 → files_com-1.6.482}/tests/test_holiday_calendar.py +0 -0
  243. {files_com-1.6.480 → files_com-1.6.482}/tests/test_holiday_region.py +0 -0
  244. {files_com-1.6.480 → files_com-1.6.482}/tests/test_image.py +0 -0
  245. {files_com-1.6.480 → files_com-1.6.482}/tests/test_inbound_s3_log.py +0 -0
  246. {files_com-1.6.480 → files_com-1.6.482}/tests/test_inbox_recipient.py +0 -0
  247. {files_com-1.6.480 → files_com-1.6.482}/tests/test_inbox_registration.py +0 -0
  248. {files_com-1.6.480 → files_com-1.6.482}/tests/test_inbox_upload.py +0 -0
  249. {files_com-1.6.480 → files_com-1.6.482}/tests/test_integration_centric_profile.py +0 -0
  250. {files_com-1.6.480 → files_com-1.6.482}/tests/test_invoice.py +0 -0
  251. {files_com-1.6.480 → files_com-1.6.482}/tests/test_invoice_line_item.py +0 -0
  252. {files_com-1.6.480 → files_com-1.6.482}/tests/test_ip_address.py +0 -0
  253. {files_com-1.6.480 → files_com-1.6.482}/tests/test_key_lifecycle_rule.py +0 -0
  254. {files_com-1.6.480 → files_com-1.6.482}/tests/test_lock.py +0 -0
  255. {files_com-1.6.480 → files_com-1.6.482}/tests/test_metadata_category.py +0 -0
  256. {files_com-1.6.480 → files_com-1.6.482}/tests/test_notification.py +0 -0
  257. {files_com-1.6.480 → files_com-1.6.482}/tests/test_outbound_connection_log.py +0 -0
  258. {files_com-1.6.480 → files_com-1.6.482}/tests/test_partner.py +0 -0
  259. {files_com-1.6.480 → files_com-1.6.482}/tests/test_partner_channel.py +0 -0
  260. {files_com-1.6.480 → files_com-1.6.482}/tests/test_partner_channel_template.py +0 -0
  261. {files_com-1.6.480 → files_com-1.6.482}/tests/test_partner_connection.py +0 -0
  262. {files_com-1.6.480 → files_com-1.6.482}/tests/test_partner_site.py +0 -0
  263. {files_com-1.6.480 → files_com-1.6.482}/tests/test_partner_site_request.py +0 -0
  264. {files_com-1.6.480 → files_com-1.6.482}/tests/test_path_parameter_encoding.py +0 -0
  265. {files_com-1.6.480 → files_com-1.6.482}/tests/test_path_util.py +0 -0
  266. {files_com-1.6.480 → files_com-1.6.482}/tests/test_payment.py +0 -0
  267. {files_com-1.6.480 → files_com-1.6.482}/tests/test_payment_line_item.py +0 -0
  268. {files_com-1.6.480 → files_com-1.6.482}/tests/test_pending_work_event.py +0 -0
  269. {files_com-1.6.480 → files_com-1.6.482}/tests/test_permission.py +0 -0
  270. {files_com-1.6.480 → files_com-1.6.482}/tests/test_preview.py +0 -0
  271. {files_com-1.6.480 → files_com-1.6.482}/tests/test_public_hosting_request_log.py +0 -0
  272. {files_com-1.6.480 → files_com-1.6.482}/tests/test_public_ip_address.py +0 -0
  273. {files_com-1.6.480 → files_com-1.6.482}/tests/test_public_key.py +0 -0
  274. {files_com-1.6.480 → files_com-1.6.482}/tests/test_remote_bandwidth_snapshot.py +0 -0
  275. {files_com-1.6.480 → files_com-1.6.482}/tests/test_remote_mount_backend.py +0 -0
  276. {files_com-1.6.480 → files_com-1.6.482}/tests/test_remote_server.py +0 -0
  277. {files_com-1.6.480 → files_com-1.6.482}/tests/test_remote_server_configuration_file.py +0 -0
  278. {files_com-1.6.480 → files_com-1.6.482}/tests/test_remote_server_credential.py +0 -0
  279. {files_com-1.6.480 → files_com-1.6.482}/tests/test_request.py +0 -0
  280. {files_com-1.6.480 → files_com-1.6.482}/tests/test_restore.py +0 -0
  281. {files_com-1.6.480 → files_com-1.6.482}/tests/test_schedule.py +0 -0
  282. {files_com-1.6.480 → files_com-1.6.482}/tests/test_scheduled_export.py +0 -0
  283. {files_com-1.6.480 → files_com-1.6.482}/tests/test_scim_log.py +0 -0
  284. {files_com-1.6.480 → files_com-1.6.482}/tests/test_secret.py +0 -0
  285. {files_com-1.6.480 → files_com-1.6.482}/tests/test_session.py +0 -0
  286. {files_com-1.6.480 → files_com-1.6.482}/tests/test_settings_change.py +0 -0
  287. {files_com-1.6.480 → files_com-1.6.482}/tests/test_sftp_action_log.py +0 -0
  288. {files_com-1.6.480 → files_com-1.6.482}/tests/test_sftp_host_key.py +0 -0
  289. {files_com-1.6.480 → files_com-1.6.482}/tests/test_share_group.py +0 -0
  290. {files_com-1.6.480 → files_com-1.6.482}/tests/test_share_group_member.py +0 -0
  291. {files_com-1.6.480 → files_com-1.6.482}/tests/test_siem_http_destination.py +0 -0
  292. {files_com-1.6.480 → files_com-1.6.482}/tests/test_siem_http_destination_event.py +0 -0
  293. {files_com-1.6.480 → files_com-1.6.482}/tests/test_site.py +0 -0
  294. {files_com-1.6.480 → files_com-1.6.482}/tests/test_site_subdomain_redirect.py +0 -0
  295. {files_com-1.6.480 → files_com-1.6.482}/tests/test_snapshot.py +0 -0
  296. {files_com-1.6.480 → files_com-1.6.482}/tests/test_sso_event.py +0 -0
  297. {files_com-1.6.480 → files_com-1.6.482}/tests/test_sso_strategy.py +0 -0
  298. {files_com-1.6.480 → files_com-1.6.482}/tests/test_status.py +0 -0
  299. {files_com-1.6.480 → files_com-1.6.482}/tests/test_stream_download.py +0 -0
  300. {files_com-1.6.480 → files_com-1.6.482}/tests/test_style.py +0 -0
  301. {files_com-1.6.480 → files_com-1.6.482}/tests/test_sync.py +0 -0
  302. {files_com-1.6.480 → files_com-1.6.482}/tests/test_sync_log.py +0 -0
  303. {files_com-1.6.480 → files_com-1.6.482}/tests/test_sync_run.py +0 -0
  304. {files_com-1.6.480 → files_com-1.6.482}/tests/test_sync_run_live_transfer.py +0 -0
  305. {files_com-1.6.480 → files_com-1.6.482}/tests/test_usage_by_top_level_dir.py +0 -0
  306. {files_com-1.6.480 → files_com-1.6.482}/tests/test_usage_daily_snapshot.py +0 -0
  307. {files_com-1.6.480 → files_com-1.6.482}/tests/test_usage_snapshot.py +0 -0
  308. {files_com-1.6.480 → files_com-1.6.482}/tests/test_user.py +0 -0
  309. {files_com-1.6.480 → files_com-1.6.482}/tests/test_user_additional_email_recipient.py +0 -0
  310. {files_com-1.6.480 → files_com-1.6.482}/tests/test_user_cipher_use.py +0 -0
  311. {files_com-1.6.480 → files_com-1.6.482}/tests/test_user_lifecycle_rule.py +0 -0
  312. {files_com-1.6.480 → files_com-1.6.482}/tests/test_user_request.py +0 -0
  313. {files_com-1.6.480 → files_com-1.6.482}/tests/test_user_security_event.py +0 -0
  314. {files_com-1.6.480 → files_com-1.6.482}/tests/test_user_sftp_client_use.py +0 -0
  315. {files_com-1.6.480 → files_com-1.6.482}/tests/test_web_dav_action_log.py +0 -0
  316. {files_com-1.6.480 → files_com-1.6.482}/tests/test_webhook_test.py +0 -0
  317. {files_com-1.6.480 → files_com-1.6.482}/tests/test_workspace.py +0 -0
  318. {files_com-1.6.480 → files_com-1.6.482}/tests/test_workspace_id.py +0 -0
  319. {files_com-1.6.480 → files_com-1.6.482}/tests/test_zip_list_entry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: files_com
3
- Version: 1.6.480
3
+ Version: 1.6.482
4
4
  Summary: Python bindings for the Files.com API
5
5
  License: MIT
6
6
  Requires-Python: >=3.5
@@ -0,0 +1 @@
1
+ 1.6.482
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: files_com
3
- Version: 1.6.480
3
+ Version: 1.6.482
4
4
  Summary: Python bindings for the Files.com API
5
5
  License: MIT
6
6
  Requires-Python: >=3.5
@@ -268,6 +268,7 @@ tests/test_preview.py
268
268
  tests/test_public_hosting_request_log.py
269
269
  tests/test_public_ip_address.py
270
270
  tests/test_public_key.py
271
+ tests/test_redirect_auth.py
271
272
  tests/test_remote_bandwidth_snapshot.py
272
273
  tests/test_remote_mount_backend.py
273
274
  tests/test_remote_server.py
@@ -320,7 +320,7 @@ source_ip = None
320
320
  workspace_id = None
321
321
  base_url = "https://app.files.com"
322
322
  base_path = "api/rest/v1"
323
- version = "1.6.480"
323
+ version = "1.6.482"
324
324
 
325
325
  __version__ = version
326
326
 
@@ -2,7 +2,7 @@ import json
2
2
  import random
3
3
  import requests
4
4
  import time
5
- from urllib.parse import urljoin
5
+ from urllib.parse import urljoin, urlparse
6
6
  from decimal import Decimal
7
7
 
8
8
  import files_sdk
@@ -16,6 +16,31 @@ import files_sdk.util as util
16
16
  from requests_toolbelt.adapters import source
17
17
 
18
18
 
19
+ FILES_AUTH_HEADERS = (
20
+ "X-FilesAPI-Key",
21
+ "X-FilesAPI-Auth",
22
+ "X-Files-Workspace-Id",
23
+ )
24
+
25
+
26
+ def _url_origin(url):
27
+ parsed = urlparse(url)
28
+ port = parsed.port
29
+ if port is None:
30
+ port = 443 if parsed.scheme.lower() == "https" else 80
31
+ return parsed.scheme.lower(), (parsed.hostname or "").lower(), port
32
+
33
+
34
+ class FilesSession(requests.Session):
35
+ def rebuild_auth(self, prepared_request, response):
36
+ super().rebuild_auth(prepared_request, response)
37
+ if _url_origin(response.request.url) != _url_origin(
38
+ prepared_request.url
39
+ ):
40
+ for header in FILES_AUTH_HEADERS:
41
+ prepared_request.headers.pop(header, None)
42
+
43
+
19
44
  class ApiClient:
20
45
  """
21
46
  The Files.com API Client.
@@ -24,7 +49,7 @@ class ApiClient:
24
49
  def __init__(self):
25
50
  pass
26
51
 
27
- self.session = requests.Session()
52
+ self.session = FilesSession()
28
53
 
29
54
  if (
30
55
  files_sdk.get_source_ip() is not None
@@ -19,7 +19,7 @@ class Bundle:
19
19
  "color_top_text": None, # string - Top bar text color
20
20
  "url": None, # string - Public URL of Share Link
21
21
  "description": None, # string - Public description
22
- "expires_at": None, # date-time - Bundle expiration date/time
22
+ "expires_at": None, # date-time - Explicit Bundle expiration date/time. If not set, the site-wide expiration setting may apply.
23
23
  "password_protected": None, # boolean - Is this bundle password protected?
24
24
  "permissions": None, # string - Permissions that apply to Folders in this Share Link.
25
25
  "preview_only": None, # boolean
@@ -38,6 +38,7 @@ class Bundle:
38
38
  "deleted": None, # boolean - Indicates if the bundle has been deleted.
39
39
  "deleted_at": None, # date-time - Bundle deleted at date/time
40
40
  "dont_separate_submissions_by_folder": None, # boolean - Do not create subfolders for files uploaded to this share. Note: there are subtle security pitfalls with allowing anonymous uploads from multiple users to live in the same folder. We strongly discourage use of this option unless absolutely required.
41
+ "effective_expires_at": None, # date-time - Read-only expiration date/time, using the explicit expiration or the site-wide setting when applicable. Null when the Share Link does not expire.
41
42
  "max_uses": None, # int64 - Maximum number of times bundle can be accessed
42
43
  "internal_name": None, # string - Internal name for identifying this Share Link.
43
44
  "note": None, # string - Bundle internal note
@@ -133,7 +134,7 @@ class Bundle:
133
134
  # create_snapshot - boolean - If true, create a snapshot of this bundle's contents.
134
135
  # description - string - Public description
135
136
  # dont_separate_submissions_by_folder - boolean - Do not create subfolders for files uploaded to this share. Note: there are subtle security pitfalls with allowing anonymous uploads from multiple users to live in the same folder. We strongly discourage use of this option unless absolutely required.
136
- # expires_at - string - Bundle expiration date/time
137
+ # expires_at - string - Explicit Bundle expiration date/time. If not set, the site-wide expiration setting may apply.
137
138
  # finalize_snapshot - boolean - If true, finalize the snapshot of this bundle's contents. Note that `create_snapshot` must also be true.
138
139
  # inbox_id - int64 - ID of the associated inbox, if available.
139
140
  # max_uses - int64 - Maximum number of times bundle can be accessed
@@ -387,7 +388,7 @@ def get(id, params=None, options=None):
387
388
  # form_field_set_id - int64 - Id of Form Field Set to use with this bundle
388
389
  # create_snapshot - boolean - If true, create a snapshot of this bundle's contents.
389
390
  # dont_separate_submissions_by_folder - boolean - Do not create subfolders for files uploaded to this share. Note: there are subtle security pitfalls with allowing anonymous uploads from multiple users to live in the same folder. We strongly discourage use of this option unless absolutely required.
390
- # expires_at - string - Bundle expiration date/time
391
+ # expires_at - string - Explicit Bundle expiration date/time. If not set, the site-wide expiration setting may apply.
391
392
  # finalize_snapshot - boolean - If true, finalize the snapshot of this bundle's contents. Note that `create_snapshot` must also be true.
392
393
  # max_uses - int64 - Maximum number of times bundle can be accessed
393
394
  # group_id - int64 - Owning group ID. If set, members of this group can view, edit, and share this Share Link.
@@ -608,7 +609,7 @@ def share(id, params=None, options=None):
608
609
  # create_snapshot - boolean - If true, create a snapshot of this bundle's contents.
609
610
  # description - string - Public description
610
611
  # dont_separate_submissions_by_folder - boolean - Do not create subfolders for files uploaded to this share. Note: there are subtle security pitfalls with allowing anonymous uploads from multiple users to live in the same folder. We strongly discourage use of this option unless absolutely required.
611
- # expires_at - string - Bundle expiration date/time
612
+ # expires_at - string - Explicit Bundle expiration date/time. If not set, the site-wide expiration setting may apply.
612
613
  # finalize_snapshot - boolean - If true, finalize the snapshot of this bundle's contents. Note that `create_snapshot` must also be true.
613
614
  # inbox_id - int64 - ID of the associated inbox, if available.
614
615
  # max_uses - int64 - Maximum number of times bundle can be accessed
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "files_com"
7
- version = "1.6.480"
7
+ version = "1.6.482"
8
8
  description = "Python bindings for the Files.com API"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -0,0 +1,92 @@
1
+ import threading
2
+ import unittest
3
+ from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
4
+
5
+ import files_sdk
6
+ from files_sdk.api_client import ApiClient
7
+
8
+
9
+ class RedirectHandler(BaseHTTPRequestHandler):
10
+ def do_GET(self):
11
+ if self.path == "/api/rest/v1/cross-origin":
12
+ self.send_response(302)
13
+ self.send_header("Location", self.server.cross_origin_url + "/download")
14
+ self.end_headers()
15
+ return
16
+ if self.path == "/api/rest/v1/same-origin":
17
+ self.send_response(302)
18
+ self.send_header("Location", "/api/rest/v1/final")
19
+ self.end_headers()
20
+ return
21
+
22
+ self.server.received_headers.append(self.headers)
23
+ self.send_response(204)
24
+ self.end_headers()
25
+
26
+ def log_message(self, *args):
27
+ pass
28
+
29
+
30
+ class TestRedirectAuth(unittest.TestCase):
31
+ def setUp(self):
32
+ self.api_server = ThreadingHTTPServer(("127.0.0.1", 0), RedirectHandler)
33
+ self.storage_server = ThreadingHTTPServer(("127.0.0.1", 0), RedirectHandler)
34
+ self.api_server.received_headers = []
35
+ self.storage_server.received_headers = []
36
+ self.api_url = "http://127.0.0.1:{}".format(self.api_server.server_port)
37
+ self.storage_url = "http://127.0.0.1:{}".format(
38
+ self.storage_server.server_port
39
+ )
40
+ self.api_server.cross_origin_url = self.storage_url
41
+ self.storage_server.cross_origin_url = self.api_url
42
+ self.threads = [
43
+ threading.Thread(target=self.api_server.serve_forever),
44
+ threading.Thread(target=self.storage_server.serve_forever),
45
+ ]
46
+ for thread in self.threads:
47
+ thread.start()
48
+
49
+ self.original_base_url = files_sdk.base_url
50
+ files_sdk.base_url = self.api_url
51
+
52
+ def tearDown(self):
53
+ files_sdk.base_url = self.original_base_url
54
+ files_sdk.set_workspace_id(None)
55
+ for server in (self.api_server, self.storage_server):
56
+ server.shutdown()
57
+ server.server_close()
58
+ for thread in self.threads:
59
+ thread.join()
60
+
61
+ def test_cross_origin_redirect_strips_files_auth_headers(self):
62
+ client = ApiClient()
63
+ client.send_request(
64
+ "GET",
65
+ "/cross-origin",
66
+ session_id="testsession",
67
+ workspace_id=123,
68
+ params={},
69
+ )
70
+
71
+ redirected_headers = self.storage_server.received_headers[0]
72
+ self.assertNotIn("X-FilesAPI-Key", redirected_headers)
73
+ self.assertNotIn("X-FilesAPI-Auth", redirected_headers)
74
+ self.assertNotIn("X-Files-Workspace-Id", redirected_headers)
75
+
76
+ def test_same_origin_redirect_keeps_files_auth_headers(self):
77
+ client = ApiClient()
78
+ client.send_request(
79
+ "GET",
80
+ "/same-origin",
81
+ api_key="testkey",
82
+ workspace_id=123,
83
+ params={},
84
+ )
85
+
86
+ redirected_headers = self.api_server.received_headers[0]
87
+ self.assertEqual("testkey", redirected_headers["X-FilesAPI-Key"])
88
+ self.assertEqual("123", redirected_headers["X-Files-Workspace-Id"])
89
+
90
+
91
+ if __name__ == "__main__":
92
+ unittest.main()
@@ -1 +0,0 @@
1
- 1.6.480
File without changes
File without changes