Skip to content

Commit d21272b

Browse files
committed
Add user_agent_comment option and set to "OpenCage CLI" for CLI requests
1 parent b253462 commit d21272b

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

opencage/batch.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ async def geocode(self, csv_input, csv_output):
7474

7575
async def test_request(self):
7676
try:
77-
async with OpenCageGeocode(self.options.api_key, domain=self.options.api_domain, sslcontext=self.sslcontext) as geocoder:
77+
async with OpenCageGeocode(self.options.api_key, domain=self.options.api_domain, sslcontext=self.sslcontext, user_agent_comment='OpenCage CLI') as geocoder:
7878
result = await geocoder.geocode_async('Kendall Sq, Cambridge, MA', raw_response=True)
7979

8080
free = False
@@ -170,7 +170,7 @@ def on_backoff(details):
170170
max_tries=self.options.retries,
171171
on_backoff=on_backoff)
172172
async def _geocode_one_address():
173-
async with OpenCageGeocode(self.options.api_key, domain=self.options.api_domain, sslcontext=self.sslcontext) as geocoder:
173+
async with OpenCageGeocode(self.options.api_key, domain=self.options.api_domain, sslcontext=self.sslcontext, user_agent_comment='OpenCage CLI') as geocoder:
174174
geocoding_results = None
175175
params = { 'no_annotations': 1, **self.options.optional_api_params }
176176

opencage/geocoder.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ class OpenCageGeocode:
131131

132132
session = None
133133

134-
def __init__(self, key, protocol='https', domain=DEFAULT_DOMAIN, sslcontext=None):
134+
def __init__(self, key, protocol='https', domain=DEFAULT_DOMAIN, sslcontext=None, user_agent_comment=None):
135135
"""Constructor."""
136136
self.key = key
137137

@@ -142,6 +142,8 @@ def __init__(self, key, protocol='https', domain=DEFAULT_DOMAIN, sslcontext=None
142142
# https://docs.aiohttp.org/en/stable/client_advanced.html#ssl-control-for-tcp-sockets
143143
self.sslcontext = sslcontext
144144

145+
self.user_agent_comment = user_agent_comment
146+
145147
def __enter__(self):
146148
self.session = requests.Session()
147149
return self
@@ -290,8 +292,13 @@ def _opencage_headers(self, client):
290292
client_version = aiohttp.__version__
291293

292294
py_version = '.'.join(str(x) for x in sys.version_info[0:3])
295+
296+
comment = ''
297+
if self.user_agent_comment:
298+
comment = f" ({self.user_agent_comment})"
299+
293300
return {
294-
'User-Agent': f"opencage-python/{__version__} Python/{py_version} {client}/{client_version}"
301+
'User-Agent': f"opencage-python/{__version__} Python/{py_version} {client}/{client_version}{comment}"
295302
}
296303

297304
async def _opencage_async_request(self, params):

test/test_headers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
# reduce maximum backoff retry time from 120s to 1s
1313
os.environ['BACKOFF_MAX_TIME'] = '1'
1414

15-
geocoder = OpenCageGeocode('abcde')
15+
geocoder = OpenCageGeocode('abcde', user_agent_comment='OpenCage Test')
1616

17-
user_agent_format = re.compile(r'^opencage-python/[\d\.]+ Python/[\d\.]+ (requests|aiohttp)/[\d\.]+$')
17+
user_agent_format = re.compile(r'^opencage-python/[\d\.]+ Python/[\d\.]+ (requests|aiohttp)/[\d\.]+ \(OpenCage Test\)$')
1818

1919
@httprettified
2020
def test_sync():

0 commit comments

Comments
 (0)