diff --git a/packages/google-cloud-vision/google/cloud/vision/__init__.py b/packages/google-cloud-vision/google/cloud/vision/__init__.py index 8a60ee566968..036cd9c08e53 100644 --- a/packages/google-cloud-vision/google/cloud/vision/__init__.py +++ b/packages/google-cloud-vision/google/cloud/vision/__init__.py @@ -14,4 +14,8 @@ """Google Cloud Vision API package.""" + +from pkg_resources import get_distribution +__version__ = get_distribution('google-cloud-vision').version + from google.cloud.vision.client import Client diff --git a/packages/google-cloud-vision/google/cloud/vision/_http.py b/packages/google-cloud-vision/google/cloud/vision/_http.py index e3a0627c80ac..cd024e7ba3dd 100644 --- a/packages/google-cloud-vision/google/cloud/vision/_http.py +++ b/packages/google-cloud-vision/google/cloud/vision/_http.py @@ -14,12 +14,17 @@ """HTTP Client for interacting with the Google Cloud Vision API.""" + from google.cloud import _http +from google.cloud.vision import __version__ from google.cloud.vision.annotations import Annotations from google.cloud.vision.feature import Feature +_CLIENT_INFO = _http.CLIENT_INFO_TEMPLATE.format(__version__) + + class Connection(_http.JSONConnection): """A connection to Google Cloud Vision via the JSON REST API. @@ -36,6 +41,10 @@ class Connection(_http.JSONConnection): API_URL_TEMPLATE = '{api_base_url}/{api_version}{path}' """A template for the URL of a particular API call.""" + _EXTRA_HEADERS = { + _http.CLIENT_INFO_HEADER: _CLIENT_INFO, + } + class _HTTPVisionAPI(object): """Vision API for interacting with the JSON/HTTP version of Vision diff --git a/packages/google-cloud-vision/unit_tests/test__http.py b/packages/google-cloud-vision/unit_tests/test__http.py index e1fd82e57b19..92b39021fe57 100644 --- a/packages/google-cloud-vision/unit_tests/test__http.py +++ b/packages/google-cloud-vision/unit_tests/test__http.py @@ -38,6 +38,36 @@ def test_default_url(self): conn = self._make_one(client) self.assertEqual(conn._client, client) + def test_extra_headers(self): + from google.cloud import _http as base_http + from google.cloud.vision 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, + ) + class Test_HTTPVisionAPI(unittest.TestCase): def _get_target_class(self):