Skip to content

Commit

Permalink
Adding GCCL header for HTTP APIs. (#3046)
Browse files Browse the repository at this point in the history
  • Loading branch information
dhermes authored and lukesneeringer committed Feb 22, 2017
1 parent af3074b commit ccbcc8d
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 0 deletions.
4 changes: 4 additions & 0 deletions google-cloud-speech/google/cloud/speech/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@

"""Google Cloud Speech API wrapper."""


from pkg_resources import get_distribution
__version__ = get_distribution('google-cloud-speech').version

from google.cloud.speech.alternative import Alternative
from google.cloud.speech.client import Client
from google.cloud.speech.encoding import Encoding
Expand Down
8 changes: 8 additions & 0 deletions google-cloud-speech/google/cloud/speech/_http.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,14 @@
from google.cloud._helpers import _to_bytes
from google.cloud import _http

from google.cloud.speech import __version__
from google.cloud.speech.result import Result
from google.cloud.speech.operation import Operation


_CLIENT_INFO = _http.CLIENT_INFO_TEMPLATE.format(__version__)


class Connection(_http.JSONConnection):
"""A connection to Google Cloud Speech JSON REST API.
Expand All @@ -40,6 +44,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 HTTPSpeechAPI(object):
"""Speech API for interacting with the HTTP version of the API.
Expand Down
32 changes: 32 additions & 0 deletions google-cloud-speech/unit_tests/test__http.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

import unittest

import mock


class TestConnection(unittest.TestCase):

Expand All @@ -36,3 +38,33 @@ def test_build_api_url(self):
])

self.assertEqual(conn.build_api_url(method), uri)

def test_extra_headers(self):
from google.cloud import _http as base_http
from google.cloud.speech 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,
)

0 comments on commit ccbcc8d

Please sign in to comment.