diff --git a/docs/language-client.rst b/docs/language-client.rst index 2ef8384af0421..00f3e813727d7 100644 --- a/docs/language-client.rst +++ b/docs/language-client.rst @@ -1,3 +1,10 @@ +Natural Language Client +======================= + +.. automodule:: gcloud.language.client + :members: + :show-inheritance: + Connection ~~~~~~~~~~ diff --git a/gcloud/language/__init__.py b/gcloud/language/__init__.py index 5d9eeda58f495..180c4993a5b2f 100644 --- a/gcloud/language/__init__.py +++ b/gcloud/language/__init__.py @@ -13,3 +13,5 @@ # limitations under the License. """Client library for Google Cloud Natural Language API.""" + +from gcloud.language.client import Client diff --git a/gcloud/language/client.py b/gcloud/language/client.py new file mode 100644 index 0000000000000..08695e358fffc --- /dev/null +++ b/gcloud/language/client.py @@ -0,0 +1,42 @@ +# Copyright 2016 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Basic client for Google Cloud Natural Language API.""" + + +from gcloud.client import JSONClient +from gcloud.language.connection import Connection + + +class Client(JSONClient): + """Client to bundle configuration needed for API requests. + + :type project: str + :param project: the project which the client acts on behalf of. If not + passed, falls back to the default inferred from the + environment. + + :type credentials: :class:`~oauth2client.client.OAuth2Credentials` + :param credentials: (Optional) The OAuth2 Credentials to use for the + connection owned by this client. If not passed (and + if no ``http`` object is passed), falls back to the + default inferred from the environment. + + :type http: :class:`httplib2.Http` or class that defines ``request()``. + :param http: An optional HTTP object to make requests. If not passed, an + ``http`` object is created that is bound to the + ``credentials`` for the current object. + """ + + _connection_class = Connection diff --git a/gcloud/language/test_client.py b/gcloud/language/test_client.py new file mode 100644 index 0000000000000..5b25a5d083ee6 --- /dev/null +++ b/gcloud/language/test_client.py @@ -0,0 +1,48 @@ +# Copyright 2016 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import unittest + + +class TestClient(unittest.TestCase): + + def _getTargetClass(self): + from gcloud.language.client import Client + return Client + + def _makeOne(self, *args, **kw): + return self._getTargetClass()(*args, **kw) + + def test_ctor(self): + from gcloud.language.connection import Connection + project = 'PROJECT' + creds = _Credentials() + http = object() + client = self._makeOne(project=project, credentials=creds, http=http) + self.assertTrue(isinstance(client.connection, Connection)) + self.assertTrue(client.connection.credentials is creds) + self.assertTrue(client.connection.http is http) + + +class _Credentials(object): + + _scopes = None + + @staticmethod + def create_scoped_required(): + return True + + def create_scoped(self, scope): + self._scopes = scope + return self