Files.com 1.4.87__tar.gz → 1.4.90__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 (111) hide show
  1. {Files.com-1.4.87 → Files.com-1.4.90}/Files.com.egg-info/PKG-INFO +1 -1
  2. Files.com-1.4.90/Files.com.egg-info/requires.txt +3 -0
  3. {Files.com-1.4.87 → Files.com-1.4.90}/PKG-INFO +1 -1
  4. {Files.com-1.4.87 → Files.com-1.4.90}/README.md +1 -0
  5. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/__init__.py +22 -2
  6. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/api.py +8 -5
  7. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/api_client.py +13 -2
  8. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/file.py +2 -2
  9. {Files.com-1.4.87 → Files.com-1.4.90}/setup.py +3 -1
  10. Files.com-1.4.87/Files.com.egg-info/requires.txt +0 -3
  11. {Files.com-1.4.87 → Files.com-1.4.90}/Files.com.egg-info/SOURCES.txt +0 -0
  12. {Files.com-1.4.87 → Files.com-1.4.90}/Files.com.egg-info/dependency_links.txt +0 -0
  13. {Files.com-1.4.87 → Files.com-1.4.90}/Files.com.egg-info/top_level.txt +0 -0
  14. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/error.py +0 -0
  15. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/list_obj.py +0 -0
  16. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/__init__.py +0 -0
  17. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/account_line_item.py +0 -0
  18. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/action.py +0 -0
  19. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/action_notification_export.py +0 -0
  20. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/action_notification_export_result.py +0 -0
  21. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/action_webhook_failure.py +0 -0
  22. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/api_key.py +0 -0
  23. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/api_request_log.py +0 -0
  24. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/app.py +0 -0
  25. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/as2_incoming_message.py +0 -0
  26. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/as2_outgoing_message.py +0 -0
  27. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/as2_partner.py +0 -0
  28. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/as2_station.py +0 -0
  29. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/auto.py +0 -0
  30. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/automation.py +0 -0
  31. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/automation_log.py +0 -0
  32. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/automation_run.py +0 -0
  33. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/bandwidth_snapshot.py +0 -0
  34. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/behavior.py +0 -0
  35. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/bundle.py +0 -0
  36. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/bundle_action.py +0 -0
  37. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/bundle_download.py +0 -0
  38. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/bundle_notification.py +0 -0
  39. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/bundle_path.py +0 -0
  40. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/bundle_recipient.py +0 -0
  41. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/bundle_registration.py +0 -0
  42. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/clickwrap.py +0 -0
  43. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/dns_record.py +0 -0
  44. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/email_incoming_message.py +0 -0
  45. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/email_log.py +0 -0
  46. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/errors.py +0 -0
  47. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/exavault_api_request_log.py +0 -0
  48. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/external_event.py +0 -0
  49. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/file_action.py +0 -0
  50. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/file_comment.py +0 -0
  51. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/file_comment_reaction.py +0 -0
  52. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/file_migration.py +0 -0
  53. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/file_migration_log.py +0 -0
  54. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/file_upload_part.py +0 -0
  55. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/folder.py +0 -0
  56. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/form_field.py +0 -0
  57. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/form_field_set.py +0 -0
  58. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/ftp_action_log.py +0 -0
  59. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/gpg_key.py +0 -0
  60. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/group.py +0 -0
  61. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/group_user.py +0 -0
  62. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/history.py +0 -0
  63. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/history_export.py +0 -0
  64. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/history_export_result.py +0 -0
  65. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/image.py +0 -0
  66. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/inbox_recipient.py +0 -0
  67. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/inbox_registration.py +0 -0
  68. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/inbox_upload.py +0 -0
  69. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/invoice.py +0 -0
  70. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/invoice_line_item.py +0 -0
  71. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/ip_address.py +0 -0
  72. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/lock.py +0 -0
  73. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/message.py +0 -0
  74. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/message_comment.py +0 -0
  75. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/message_comment_reaction.py +0 -0
  76. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/message_reaction.py +0 -0
  77. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/notification.py +0 -0
  78. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/payment.py +0 -0
  79. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/payment_line_item.py +0 -0
  80. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/permission.py +0 -0
  81. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/preview.py +0 -0
  82. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/priority.py +0 -0
  83. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/project.py +0 -0
  84. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/public_ip_address.py +0 -0
  85. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/public_key.py +0 -0
  86. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/remote_bandwidth_snapshot.py +0 -0
  87. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/remote_server.py +0 -0
  88. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/remote_server_configuration_file.py +0 -0
  89. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/request.py +0 -0
  90. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/session.py +0 -0
  91. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/settings_change.py +0 -0
  92. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/sftp_action_log.py +0 -0
  93. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/sftp_host_key.py +0 -0
  94. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/share_group.py +0 -0
  95. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/share_group_member.py +0 -0
  96. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/site.py +0 -0
  97. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/snapshot.py +0 -0
  98. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/sso_strategy.py +0 -0
  99. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/status.py +0 -0
  100. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/style.py +0 -0
  101. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/sync_log.py +0 -0
  102. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/usage_daily_snapshot.py +0 -0
  103. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/usage_snapshot.py +0 -0
  104. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/user.py +0 -0
  105. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/user_cipher_use.py +0 -0
  106. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/user_request.py +0 -0
  107. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/webhook_test.py +0 -0
  108. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/path_util.py +0 -0
  109. {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/util.py +0 -0
  110. {Files.com-1.4.87 → Files.com-1.4.90}/pyproject.toml +0 -0
  111. {Files.com-1.4.87 → Files.com-1.4.90}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: Files.com
3
- Version: 1.4.87
3
+ Version: 1.4.90
4
4
  Summary: Python bindings for the Files.com API
5
5
  Home-page: UNKNOWN
6
6
  License: MIT
@@ -0,0 +1,3 @@
1
+ python_version>=3.0
2
+ requests-toolbelt>=1.0.0
3
+ requests>=2.20
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: Files.com
3
- Version: 1.4.87
3
+ Version: 1.4.90
4
4
  Summary: Python bindings for the Files.com API
5
5
  Home-page: UNKNOWN
6
6
  License: MIT
@@ -64,6 +64,7 @@ Or use if for all subsequent API calls globally like this:
64
64
 
65
65
  You can set the following global options directly on the `files_sdk` module:
66
66
 
67
+ * `files_sdk.source_ip` - the source IP from which to send requests from (local bind)
67
68
  * `files_sdk.open_timeout` - open timeout in seconds (default: 30)
68
69
  * `files_sdk.read_timeout` - read timeout in seconds (default: 80)
69
70
  * `files_sdk.initial_network_retry_delay` - initial retry delay in seconds (default: 0.5)
@@ -192,12 +192,15 @@ from files_sdk.models.user_request import UserRequest
192
192
  from files_sdk.models.webhook_test import WebhookTest
193
193
 
194
194
  import files_sdk.path_util
195
+ import socket
196
+ from urllib.parse import urlparse
195
197
 
196
198
  the_api_key = ""
197
199
  session_id = None
200
+ source_ip = None
198
201
  base_url = "https://app.files.com"
199
202
  base_path = "api/rest/v1"
200
- version = "1.4.87"
203
+ version = "1.4.90"
201
204
 
202
205
  __version__ = version
203
206
 
@@ -209,7 +212,7 @@ max_network_retries = 3
209
212
 
210
213
  console_log_level = "none"
211
214
 
212
- OPTS = ("api_key", "client", "session_id")
215
+ OPTS = ("api_key", "client", "session_id", "source_ip")
213
216
 
214
217
 
215
218
  def set_api_key(_api_key):
@@ -229,6 +232,23 @@ def set_session(_session):
229
232
  session_id = _session.id
230
233
 
231
234
 
235
+ def set_source_ip(_source_ip):
236
+ global source_ip
237
+ source_ip = _source_ip
238
+
239
+
240
+ def get_source_ip():
241
+ global source_ip
242
+ if source_ip is None:
243
+ parsed_url = urlparse(base_url)
244
+ addrs = socket.getaddrinfo(parsed_url.hostname, parsed_url.port)
245
+ ipv4_addrs = [
246
+ addr[4][0] for addr in addrs if addr[0] == socket.AF_INET
247
+ ]
248
+ source_ip = ipv4_addrs[0]
249
+ return source_ip
250
+
251
+
232
252
  def open(*args, **kwargs):
233
253
  return file.open(*args, **kwargs)
234
254
 
@@ -5,9 +5,14 @@ from files_sdk.api_client import ApiClient
5
5
 
6
6
 
7
7
  class Api:
8
+ __singleton_instance = None
9
+
8
10
  @staticmethod
9
- def api_client():
10
- return ApiClient()
11
+ def client():
12
+ if not Api.__singleton_instance:
13
+ Api.__singleton_instance = ApiClient()
14
+
15
+ return Api.__singleton_instance
11
16
 
12
17
  @staticmethod
13
18
  def send_request(verb, path, params, options=None):
@@ -25,9 +30,7 @@ class Api:
25
30
  session.save
26
31
  session_id = str(session.id)
27
32
 
28
- client = ApiClient()
29
-
30
- response = client.send_request(
33
+ response = Api.client().send_request(
31
34
  verb, path, api_key=api_key, session_id=session_id, params=params
32
35
  )
33
36
 
@@ -12,6 +12,7 @@ from files_sdk.error import (
12
12
  Error,
13
13
  )
14
14
  import files_sdk.util as util
15
+ from requests_toolbelt.adapters import source
15
16
 
16
17
 
17
18
  class ApiClient:
@@ -19,11 +20,20 @@ class ApiClient:
19
20
  The Files.com API Client.
20
21
  """
21
22
 
22
- session = requests.Session()
23
-
24
23
  def __init__(self):
25
24
  pass
26
25
 
26
+ self.session = requests.Session()
27
+
28
+ if (
29
+ files_sdk.get_source_ip() is not None
30
+ and self.session.adapters.get(files_sdk.base_url, None) is None
31
+ ):
32
+ self.session.mount(
33
+ files_sdk.base_url,
34
+ source.SourceAddressAdapter(files_sdk.get_source_ip()),
35
+ )
36
+
27
37
  def send_remote_request(self, method, url, headers=None, body=None):
28
38
  if headers is None:
29
39
  headers = {}
@@ -134,6 +144,7 @@ class ApiClient:
134
144
  timeout=(files_sdk.open_timeout, files_sdk.read_timeout),
135
145
  **settings,
136
146
  )
147
+
137
148
  self.log_response(
138
149
  request,
139
150
  request_start,
@@ -199,7 +199,7 @@ class File:
199
199
  return self.download_uri
200
200
 
201
201
  def download_content(self, io, is_string_io=False):
202
- Api.api_client().stream_download(
202
+ Api.client().stream_download(
203
203
  self.download_uri_with_load(), io, is_string_io
204
204
  )
205
205
 
@@ -733,7 +733,7 @@ def upload_chunks(io, path, options, upload=None, etags=None, params=None):
733
733
  buf = io.read(upload.partsize)
734
734
  if buf is not None: # None means no data but io still open
735
735
  bytes_written += len(buf)
736
- response = Api.api_client().send_remote_request(
736
+ response = Api.client().send_remote_request(
737
737
  upload.http_method,
738
738
  upload.upload_uri,
739
739
  {"Content-Length": str(len(buf))},
@@ -10,7 +10,9 @@ setup(
10
10
  description="Python bindings for the Files.com API",
11
11
  packages = find_packages(exclude = ('tests', 'tests.*', 'doc')),
12
12
  install_requires=[
13
- 'requests >= 2.20; python_version >= "3.0"',
13
+ 'requests >= 2.20',
14
+ 'python_version >= 3.0',
15
+ 'requests-toolbelt >= 1.0.0',
14
16
  ],
15
17
  include_package_data=True,
16
18
  package_data={
@@ -1,3 +0,0 @@
1
-
2
- [:python_version >= "3.0"]
3
- requests>=2.20
File without changes
File without changes
File without changes