Skip to content

Commit 49ed7eb

Browse files
committed
fix(user-agent): Add user agent header only if not set
1 parent 416dd82 commit 49ed7eb

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

ibm_cloud_sdk_core/base_service.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -276,15 +276,18 @@ def set_http_config(self, http_config):
276276
def request(self, method, url, accept_json=False, headers=None,
277277
params=None, json=None, data=None, files=None, **kwargs):
278278
full_url = self.url + url
279-
input_headers = remove_null_values(headers) if headers else {}
280-
input_headers = cleanup_values(input_headers)
281279

282-
headers = CaseInsensitiveDict(self.user_agent_header)
280+
headers = CaseInsensitiveDict(headers)
281+
headers = remove_null_values(headers)
282+
headers = cleanup_values(headers)
283+
283284
if self.default_headers is not None:
284285
headers.update(self.default_headers)
285286
if accept_json:
286287
headers['accept'] = 'application/json'
287-
headers.update(input_headers)
288+
289+
if not any(key in headers for key in ['user-agent', 'User-Agent']):
290+
headers.update(self.user_agent_header)
288291

289292
# Remove keys with None values
290293
params = remove_null_values(params)

test/test_base_service.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,8 +356,20 @@ def test_default_headers():
356356
with pytest.raises(TypeError):
357357
service.set_default_headers('xxx')
358358

359+
@responses.activate
359360
def test_user_agent_header():
360361
service = AnyServiceV1('2018-11-20', username='username', password='password')
361362
user_agent_header = service.get_user_agent_header()
362363
assert user_agent_header is not None
363364
assert user_agent_header['User-Agent'] is not None
365+
366+
responses.add(responses.GET,
367+
'https://gateway.watsonplatform.net/test/api',
368+
status=200,
369+
body=json.dumps({'foo': 'bar'}),
370+
content_type='application/json')
371+
response = service.request('GET', url='', headers={'user-agent': 'my_user_agent'})
372+
assert response.get_result().request.headers.__getitem__('user-agent') == 'my_user_agent'
373+
374+
response = service.request('GET', url='', headers=None)
375+
assert response.get_result().request.headers.__getitem__('user-agent') == user_agent_header['User-Agent']

0 commit comments

Comments
 (0)