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.com-1.4.87 → Files.com-1.4.90}/Files.com.egg-info/PKG-INFO +1 -1
- Files.com-1.4.90/Files.com.egg-info/requires.txt +3 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/PKG-INFO +1 -1
- {Files.com-1.4.87 → Files.com-1.4.90}/README.md +1 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/__init__.py +22 -2
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/api.py +8 -5
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/api_client.py +13 -2
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/file.py +2 -2
- {Files.com-1.4.87 → Files.com-1.4.90}/setup.py +3 -1
- Files.com-1.4.87/Files.com.egg-info/requires.txt +0 -3
- {Files.com-1.4.87 → Files.com-1.4.90}/Files.com.egg-info/SOURCES.txt +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/Files.com.egg-info/dependency_links.txt +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/Files.com.egg-info/top_level.txt +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/error.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/list_obj.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/__init__.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/account_line_item.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/action.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/action_notification_export.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/action_notification_export_result.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/action_webhook_failure.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/api_key.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/api_request_log.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/app.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/as2_incoming_message.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/as2_outgoing_message.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/as2_partner.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/as2_station.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/auto.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/automation.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/automation_log.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/automation_run.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/bandwidth_snapshot.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/behavior.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/bundle.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/bundle_action.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/bundle_download.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/bundle_notification.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/bundle_path.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/bundle_recipient.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/bundle_registration.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/clickwrap.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/dns_record.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/email_incoming_message.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/email_log.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/errors.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/exavault_api_request_log.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/external_event.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/file_action.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/file_comment.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/file_comment_reaction.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/file_migration.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/file_migration_log.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/file_upload_part.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/folder.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/form_field.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/form_field_set.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/ftp_action_log.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/gpg_key.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/group.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/group_user.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/history.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/history_export.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/history_export_result.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/image.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/inbox_recipient.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/inbox_registration.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/inbox_upload.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/invoice.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/invoice_line_item.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/ip_address.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/lock.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/message.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/message_comment.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/message_comment_reaction.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/message_reaction.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/notification.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/payment.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/payment_line_item.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/permission.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/preview.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/priority.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/project.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/public_ip_address.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/public_key.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/remote_bandwidth_snapshot.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/remote_server.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/remote_server_configuration_file.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/request.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/session.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/settings_change.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/sftp_action_log.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/sftp_host_key.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/share_group.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/share_group_member.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/site.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/snapshot.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/sso_strategy.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/status.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/style.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/sync_log.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/usage_daily_snapshot.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/usage_snapshot.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/user.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/user_cipher_use.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/user_request.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/models/webhook_test.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/path_util.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/files_sdk/util.py +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/pyproject.toml +0 -0
- {Files.com-1.4.87 → Files.com-1.4.90}/setup.cfg +0 -0
|
@@ -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.
|
|
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
|
|
10
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
|
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={
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|