Skip to content

Commit 3925800

Browse files
Add a python-digitalocean specific user agent to requests.
1 parent dae6e73 commit 3925800

2 files changed

Lines changed: 40 additions & 3 deletions

File tree

digitalocean/baseapi.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import json
44
import logging
55
import requests
6+
from . import __name__, __version__
67
try:
78
import urlparse
89
except ImportError:
@@ -51,13 +52,13 @@ def __init__(self, *args, **kwargs):
5152

5253
for attr in kwargs.keys():
5354
setattr(self, attr, kwargs[attr])
54-
55+
5556
def __getstate__(self):
5657
state = self.__dict__.copy()
5758
# The logger is not pickleable due to using thread.lock
5859
del state['_log']
5960
return state
60-
61+
6162
def __setstate__(self, state):
6263
self.__dict__ = state
6364
self._log = logging.getLogger(__name__)
@@ -93,7 +94,12 @@ def __perform_request(self, url, type=GET, params=None):
9394
}
9495

9596
requests_method, headers, payload, transform = lookup[type]
96-
headers.update({'Authorization': 'Bearer ' + self.token})
97+
agent = "{0}/{1} {2}/{3}".format('python-digitalocean',
98+
__version__,
99+
requests.__name__,
100+
requests.__version__)
101+
headers.update({'Authorization': 'Bearer ' + self.token,
102+
'User-Agent': agent})
97103
kwargs = {'headers': headers, payload: transform(params)}
98104

99105
timeout = self.get_timeout()

digitalocean/tests/test_baseapi.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import responses
2+
import requests
3+
import digitalocean
4+
5+
from .BaseTest import BaseTest
6+
7+
8+
class TestBaseAPI(BaseTest):
9+
10+
def setUp(self):
11+
super(TestBaseAPI, self).setUp()
12+
self.manager = digitalocean.Manager(token=self.token)
13+
self.user_agent = "{0}/{1} {2}/{3}".format('python-digitalocean',
14+
digitalocean.__version__,
15+
requests.__name__,
16+
requests.__version__)
17+
18+
@responses.activate
19+
def test_user_agent(self):
20+
data = self.load_from_file('account/account.json')
21+
22+
url = self.base_url + 'account/'
23+
responses.add(responses.GET, url,
24+
body=data,
25+
status=200,
26+
content_type='application/json')
27+
28+
self.manager.get_account()
29+
30+
self.assertEqual(responses.calls[0].request.headers['User-Agent'],
31+
self.user_agent)

0 commit comments

Comments
 (0)