diff --git a/packages/google-cloud-translate/google/cloud/translate/__init__.py b/packages/google-cloud-translate/google/cloud/translate/__init__.py index efcb64eff8fe..c1cd5dd440f4 100644 --- a/packages/google-cloud-translate/google/cloud/translate/__init__.py +++ b/packages/google-cloud-translate/google/cloud/translate/__init__.py @@ -14,6 +14,10 @@ """Google Cloud Translation API wrapper.""" + +from pkg_resources import get_distribution +__version__ = get_distribution('google-cloud-translate').version + from google.cloud.translate.client import BASE from google.cloud.translate.client import Client from google.cloud.translate.client import NMT diff --git a/packages/google-cloud-translate/google/cloud/translate/_http.py b/packages/google-cloud-translate/google/cloud/translate/_http.py index 25be55217e32..0c404f2a4a3b 100644 --- a/packages/google-cloud-translate/google/cloud/translate/_http.py +++ b/packages/google-cloud-translate/google/cloud/translate/_http.py @@ -16,6 +16,11 @@ from google.cloud import _http +from google.cloud.translate import __version__ + + +_CLIENT_INFO = _http.CLIENT_INFO_TEMPLATE.format(__version__) + class Connection(_http.JSONConnection): """A connection to Google Cloud Translation API via the JSON REST API. @@ -32,3 +37,7 @@ class Connection(_http.JSONConnection): API_URL_TEMPLATE = '{api_base_url}/language/translate/{api_version}{path}' """A template for the URL of a particular API call.""" + + _EXTRA_HEADERS = { + _http.CLIENT_INFO_HEADER: _CLIENT_INFO, + } diff --git a/packages/google-cloud-translate/unit_tests/test__http.py b/packages/google-cloud-translate/unit_tests/test__http.py index 031fc2f0a3bb..1d7f7b4c6c18 100644 --- a/packages/google-cloud-translate/unit_tests/test__http.py +++ b/packages/google-cloud-translate/unit_tests/test__http.py @@ -14,6 +14,8 @@ import unittest +import mock + class TestConnection(unittest.TestCase): @@ -52,3 +54,33 @@ def test_build_api_url_w_extra_query_params(self): self.assertEqual(path, expected_path) params = parse_qsl(qs) self.assertEqual(params, query_params) + + def test_extra_headers(self): + from google.cloud import _http as base_http + from google.cloud.translate import _http as MUT + + http = mock.Mock(spec=['request']) + response = mock.Mock(status=200, spec=['status']) + data = b'brent-spiner' + http.request.return_value = response, data + client = mock.Mock(_http=http, spec=['_http']) + + conn = self._make_one(client) + req_data = 'req-data-boring' + result = conn.api_request( + 'GET', '/rainbow', data=req_data, expect_json=False) + self.assertEqual(result, data) + + expected_headers = { + 'Content-Length': str(len(req_data)), + 'Accept-Encoding': 'gzip', + base_http.CLIENT_INFO_HEADER: MUT._CLIENT_INFO, + 'User-Agent': conn.USER_AGENT, + } + expected_uri = conn.build_api_url('/rainbow') + http.request.assert_called_once_with( + body=req_data, + headers=expected_headers, + method='GET', + uri=expected_uri, + )