Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit ccbf62d

Browse filesBrowse files
authored
Merge pull request DomainTools#114 from DomainTools/dev
Dev
2 parents b912f65 + e8013f6 commit ccbf62d
Copy full SHA for ccbf62d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Dismiss banner
Expand file treeCollapse file tree

50 files changed

+32809
-32742
lines changed
Open diff view settings
Collapse file

‎.gitignore‎

Copy file name to clipboardExpand all lines: .gitignore
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,6 @@ venv/
7272

7373
# Cython
7474
*.c
75+
76+
# Testing folders
77+
proxyTest/
Collapse file

‎CHANGELOG.md‎

Copy file name to clipboard
+24-2Lines changed: 24 additions & 2 deletions
  • Display the source diff
  • Display the rich diff
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,87 @@
1-
Changelog
2-
=========
1+
# Changelog
2+
3+
### 1.0.1
4+
5+
- Adds support for the hourly query limit on the Account API endpoint
6+
- Fixes an issue with handling of proxies
37

48
### 1.0.0
9+
510
- Adding support for Iris Detect API endpoints
611
- Update underlying HTTP client
712
- Addition of helper functions for common tasks
813
- Documentation and example code updates
914

1015
### 0.6.2
16+
1117
- Update README with Iris trademarks
1218

1319
### 0.6.1
20+
1421
- Fix an invalid response type error for available_api_calls on CLI
1522
- Add better error messaging for users when proxy info is not set correctly
1623
- Fix typo on limit_exceeded when outputting formats other than JSON when using non-async results
1724

1825
### 0.6.0
1926

2027
### 0.3.3
28+
2129
- Python 3.5.2 installation fix
2230

2331
### 0.3.1
32+
2433
- Python 3.7.0 Python version check for async fixed
2534

2635
### 0.3.0
36+
2737
- Python 3.7 support as well as general Async fixes and improvements (Thanks @jnwatson)
2838

2939
### 0.2.4
40+
3041
- Enabled rate-limiting support for Iris API endpoints
3142

3243
### 0.2.3
44+
3345
- Added support for Iris Investigate and Enrich
3446

3547
### 0.2.2
48+
3649
- HTTP Authentication fixes
3750
- Initial proxy support
3851

3952
### 0.2.1
53+
4054
- Separated out IncompleteResponseException; enabling partial results to still be read
4155
- Fixed unknown exception handling
4256

4357
### 0.2.0
58+
4459
- Ensure connections are cleaned up
4560

4661
### 0.1.9
62+
4763
- Added support for `risk` and `risk_evidence` API calls
4864

4965
### 0.1.8
66+
5067
- Updated defaults for domain_search call
5168

5269
### 0.1.7
70+
5371
- Fixed typo in registrar information assignment
5472

5573
### 0.1.6
74+
5675
- Added support for Iris endpoint
5776

5877
### 0.1.5
78+
5979
- Made Results a subclass of both MutableMapping and MutableSequence for more natural interaction
6080

6181
### 0.1.4
82+
6283
- Wait to make account information call for rate limiting till a call is made against another API endpoint
6384

6485
### 0.0.1
86+
6587
- Initial Release
Collapse file

‎domaintools/_version.py‎

Copy file name to clipboardExpand all lines: domaintools/_version.py
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,4 @@
1919
OTHER DEALINGS IN THE SOFTWARE.
2020
2121
"""
22-
current = "1.0.0"
22+
current = "1.0.1"
Collapse file

‎domaintools/api.py‎

Copy file name to clipboardExpand all lines: domaintools/api.py
+12-2Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,25 @@ def __init__(self, username, key, https=True, verify_ssl=True, rate_limit=True,
5757
raise Exception("The DomainTools API endpoints no longer support http traffic. Please make sure https=True.")
5858
if proxy_url:
5959
if isinstance(proxy_url, str):
60-
self.extra_request_params['proxies'] = {'http': proxy_url, 'https': proxy_url}
60+
self.proxy_url = {'http://': proxy_url, 'https://': proxy_url}
6161
else:
6262
raise Exception("Proxy URL must be a string. For example: '127.0.0.1:8888'")
6363

6464
def _rate_limit(self):
6565
"""Pulls in and enforces the latest rate limits for the specified user"""
6666
self.limits_set = True
6767
for product in self.account_information():
68-
self.limits[product['id']] = {'interval': timedelta(seconds=60 / float(product['per_minute_limit']))}
68+
limit_minutes = product['per_minute_limit'] or None
69+
limit_hours = product['per_hour_limit'] or None
70+
71+
default = 3600
72+
hours = limit_hours and 3600 / float(limit_hours)
73+
minutes = limit_minutes and 60 / float(limit_minutes)
74+
75+
self.limits[product['id']] = {'interval': timedelta(
76+
seconds = minutes or hours or default
77+
)
78+
}
6979

7080
def _results(self, product, path, cls=Results, **kwargs):
7181
"""Returns _results for the specified API path with the specified **kwargs parameters"""
Collapse file

‎domaintools/base_results.py‎

Copy file name to clipboardExpand all lines: domaintools/base_results.py
+2-1Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ def _wait_time(self):
5757
return wait_for
5858

5959
def _make_request(self):
60-
with Client(verify=self.api.verify_ssl, proxies=self.api.extra_request_params.get('proxies'), timeout=None) as session:
60+
61+
with Client(verify=self.api.verify_ssl, proxies=self.api.proxy_url, timeout=None) as session:
6162
if self.product in ['iris-investigate', 'iris-enrich', 'iris-detect-escalate-domains']:
6263
post_data = self.kwargs.copy()
6364
post_data.update(self.api.extra_request_params)
Collapse file

‎domaintools_async/__init__.py‎

Copy file name to clipboardExpand all lines: domaintools_async/__init__.py
+2-1Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ async def _make_async_request(self, session):
5959

6060
async def __awaitable__(self):
6161
if self._data is None:
62-
async with AsyncClient(verify=self.api.verify_ssl, proxies=self.api.extra_request_params.get('proxies'), timeout=None) as session:
62+
63+
async with AsyncClient(verify=self.api.verify_ssl, proxies=self.api.proxy_url, timeout=None) as session:
6364
wait_time = self._wait_time()
6465
if wait_time is None and self.api:
6566
try:
Collapse file

‎setup.py‎

Copy file name to clipboardExpand all lines: setup.py
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def run_tests(self):
6666
readme = ''
6767

6868
setup(name='domaintools_api',
69-
version='1.0.0',
69+
version='1.0.1',
7070
description="DomainTools Official Python API",
7171
long_description=readme,
7272
long_description_content_type="text/markdown",
Collapse file
+32-32Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
11
interactions:
2-
- request:
3-
body: ''
4-
headers:
5-
accept:
6-
- '*/*'
7-
accept-encoding:
8-
- gzip, deflate
9-
connection:
10-
- keep-alive
11-
host:
12-
- api.domaintools.com
13-
user-agent:
14-
- python-httpx/0.22.0
15-
method: GET
16-
uri: https://api.domaintools.com/v1/account?app_name=python_wrapper&app_version=1.0.0
17-
response:
18-
content: '{"response":{"account":{"api_username":"integrations_testing","active":true},"products":[{"id":"account-information","per_month_limit":"100000","per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"12"},"expiration_date":null},{"id":"iris-investigate","per_month_limit":"1000","per_minute_limit":"20","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"iris-enrich","per_month_limit":"1000","per_minute_limit":"20","absolute_limit":null,"usage":{"today":"0","month":"5"},"expiration_date":null},{"id":"iris-detect-escalate-domains","per_month_limit":"1500","per_minute_limit":"30","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"iris-detect-ignored-domains","per_month_limit":"1500","per_minute_limit":"30","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"iris-detect-manage-watchlist-domains","per_month_limit":"1500","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"iris-detect-monitors","per_month_limit":"1500","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"iris-detect-new-domains","per_month_limit":"1500","per_minute_limit":"30","absolute_limit":null,"usage":{"today":"0","month":"8"},"expiration_date":null},{"id":"iris-detect-watched-domains","per_month_limit":"1500","per_minute_limit":"30","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"phisheye","per_month_limit":"10000","per_minute_limit":"10","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"domain-profile","per_month_limit":"100000","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"domain-search","per_month_limit":"100000","per_minute_limit":"500","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"hosting-history","per_month_limit":"100000","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"ip-monitor","per_month_limit":"100000","per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"ip-registrant-monitor","per_month_limit":"100000","per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"iris","per_month_limit":"1000","per_minute_limit":"10","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"reputation","per_month_limit":"100000","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"reverse-ip","per_month_limit":"100000","per_minute_limit":"10","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"reverse-ip-whois","per_month_limit":"100000","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"risk","per_month_limit":"100000","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"risk-evidence","per_month_limit":"100000","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"reverse-name-server","per_month_limit":"100000","per_minute_limit":"10","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"reverse-whois","per_month_limit":"100000","per_minute_limit":"10","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"mark-alert","per_month_limit":"100000","per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"parsed-whois","per_month_limit":"100000","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"name-server-monitor","per_month_limit":"100000","per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"whois","per_month_limit":"100000","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"whois-history","per_month_limit":"5000","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"parsed-whois-live","per_month_limit":"120","per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"registrant-alert","per_month_limit":"100000","per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null}]}}'
19-
headers:
20-
Content-Encoding:
21-
- gzip
22-
Content-Type:
23-
- application/json;charset=utf-8
24-
Date:
25-
- Thu, 16 Jun 2022 15:01:58 GMT
26-
Transfer-Encoding:
27-
- chunked
28-
Vary:
29-
- Accept-Encoding
30-
X-TIME:
31-
- '120038'
32-
http_version: HTTP/1.1
33-
status_code: 200
2+
- request:
3+
body: ""
4+
headers:
5+
accept:
6+
- "*/*"
7+
accept-encoding:
8+
- gzip, deflate
9+
connection:
10+
- keep-alive
11+
host:
12+
- api.domaintools.com
13+
user-agent:
14+
- python-httpx/0.22.0
15+
method: GET
16+
uri: https://api.domaintools.com/v1/account?app_name=python_wrapper&app_version=1.0.1
17+
response:
18+
content: '{"response":{"account":{"api_username":"integrations_testing","active":true},"products":[{"id":"account-information","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"12"},"expiration_date":null},{"id":"iris-investigate","per_month_limit":"1000","per_hour_limit":"1","per_minute_limit":"20","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"iris-enrich","per_month_limit":"1000","per_hour_limit":"1","per_minute_limit":"20","absolute_limit":null,"usage":{"today":"0","month":"5"},"expiration_date":null},{"id":"iris-detect-escalate-domains","per_month_limit":"1500","per_hour_limit":"1","per_minute_limit":"30","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"iris-detect-ignored-domains","per_month_limit":"1500","per_hour_limit":"1","per_minute_limit":"30","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"iris-detect-manage-watchlist-domains","per_month_limit":"1500","per_hour_limit":"1","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"iris-detect-monitors","per_month_limit":"1500","per_hour_limit":"1","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"iris-detect-new-domains","per_month_limit":"1500","per_hour_limit":"1","per_minute_limit":"30","absolute_limit":null,"usage":{"today":"0","month":"8"},"expiration_date":null},{"id":"iris-detect-watched-domains","per_month_limit":"1500","per_hour_limit":"1","per_minute_limit":"30","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"phisheye","per_month_limit":"10000","per_hour_limit":"1","per_minute_limit":"10","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"domain-profile","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"domain-search","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"500","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"hosting-history","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"ip-monitor","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"ip-registrant-monitor","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"iris","per_month_limit":"1000","per_hour_limit":"1","per_minute_limit":"10","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"reputation","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"reverse-ip","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"10","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"reverse-ip-whois","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"risk","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"risk-evidence","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"reverse-name-server","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"10","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"reverse-whois","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"10","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"mark-alert","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"parsed-whois","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"name-server-monitor","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"whois","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"whois-history","per_month_limit":"5000","per_hour_limit":"1","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"parsed-whois-live","per_month_limit":"120","per_hour_limit":"1","per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"registrant-alert","per_month_limit":"100000","per_hour_limit":"1","per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null}]}}'
19+
headers:
20+
Content-Encoding:
21+
- gzip
22+
Content-Type:
23+
- application/json;charset=utf-8
24+
Date:
25+
- Thu, 16 Jun 2022 15:01:58 GMT
26+
Transfer-Encoding:
27+
- chunked
28+
Vary:
29+
- Accept-Encoding
30+
X-TIME:
31+
- "120038"
32+
http_version: HTTP/1.1
33+
status_code: 200
3434
version: 1
Collapse file

‎tests/fixtures/vcr/test_async_context_manager.yaml‎

Copy file name to clipboardExpand all lines: tests/fixtures/vcr/test_async_context_manager.yaml
+32-32Lines changed: 32 additions & 32 deletions
Large diffs are not rendered by default.
Collapse file

‎tests/fixtures/vcr/test_async_iteration.yaml‎

Copy file name to clipboardExpand all lines: tests/fixtures/vcr/test_async_iteration.yaml
+32-32Lines changed: 32 additions & 32 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.