8000 Using the JsonHttpClient Util in Auth Module (#249) · valid22/firebase-admin-python@b199dfa · GitHub
[go: up one dir, main page]

Skip to content

Commit b199dfa

Browse files
authored
Using the JsonHttpClient Util in Auth Module (firebase#249)
* Using JsonHttpClient util in auth module * Removed unused import
1 parent c120cef commit b199dfa

File tree

5 files changed

+17
-41
lines changed

5 files changed

+17
-41
lines changed

firebase_admin/_token_gen.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ def create_session_cookie(self, id_token, expires_in):
206206
'validDuration': expires_in,
207207
}
208208
try:
209-
response = self.client.request('post', 'createSessionCookie', json=payload)
209+
response = self.client.body('post', 'createSessionCookie', json=payload)
210210
except requests.exceptions.RequestException as error:
211211
self._handle_http_error(COOKIE_CREATE_ERROR, 'Failed to create session cookie', error)
212212
else:

firebase_admin/_user_mgt.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ def get_user(self, **kwargs):
394394
raise TypeError('Unsupported keyword arguments: {0}.'.format(kwargs))
395395

396396
try:
397-
response = self._client.request('post', 'getAccountInfo', json=payload)
397+
response = self._client.body('post', 'getAccountInfo', json=payload)
398398
except requests.exceptions.RequestException as error:
399399
msg = 'Failed to get user by {0}: {1}.'.format(key_type, key)
400400
self._handle_http_error(INTERNAL_ERROR, msg, error)
@@ -421,7 +421,7 @@ def list_users(self, page_token=None, max_results=MAX_LIST_USERS_RESULTS):
421421
if page_token:
422422
payload['nextPageToken'] = page_token
423423
try:
424 10000 -
return self._client.request('post', 'downloadAccount', json=payload)
424+
return self._client.body('post', 'downloadAccount', json=payload)
425425
except requests.exceptions.RequestException as error:
426426
self._handle_http_error(USER_DOWNLOAD_ERROR, 'Failed to download user accounts.', error)
427427

@@ -440,7 +440,7 @@ def create_user(self, uid=None, display_name=None, email=None, phone_number=None
440440
}
441441
payload = {k: v for k, v in payload.items() if v is not None}
442442
try:
443-
response = self._client.request('post', 'signupNewUser', json=payload)
443+
response = self._client.body('post', 'signupNewUser', json=payload)
444444
except requests.exceptions.RequestException as error:
445445
self._handle_http_error(USER_CREATE_ERROR, 'Failed to create new user.', error)
446446
else:
@@ -490,7 +490,7 @@ def update_user(self, uid, display_name=_UNSPECIFIED, email=None, phone_number=_
490490

491491
payload = {k: v for k, v in payload.items() if v is not None}
492492
try:
493-
response = self._client.request('post', 'setAccountInfo', json=payload)
493+
response = self._client.body('post', 'setAccountInfo', json=payload)
494494
except requests.exceptions.RequestException as error:
495495
self._handle_http_error(
496496
USER_UPDATE_ERROR, 'Failed to update user: {0}.'.format(uid), error)
@@ -503,7 +503,7 @@ def delete_user(self, uid):
503503
"""Deletes the user identified by the specified user ID."""
504504
_auth_utils.validate_uid(uid, required=True)
505505
try:
506-
response = self._client.request('post', 'deleteAccount', json={'localId' : uid})
506+
response = self._client.body('post', 'deleteAccount', json={'localId' : uid})
507507
except requests.exceptions.RequestException as error:
508508
self._handle_http_error(
509509
USER_DELETE_ERROR, 'Failed to delete user: {0}.'.format(uid), error)
@@ -529,7 +529,7 @@ def import_users(self, users, hash_alg=None):
529529
raise ValueError('A UserImportHash is required to import users with passwords.')
530530
payload.update(hash_alg.to_dict())
531531
try:
532-
response = self._client.request('post', 'uploadAccount', json=payload)
532+
response = self._client.body('post', 'uploadAccount', json=payload)
533533
except requests.exceptions.RequestException as error:
534534
self._handle_http_error(USER_IMPORT_ERROR, 'Failed to import users.', error)
535535
else:

firebase_admin/auth.py

Lines changed: 8 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,8 @@
2121

2222
import time
2323

24-
from google.auth import transport
25-
2624
import firebase_admin
25+
from firebase_admin import _http_client
2726
from firebase_admin import _token_gen
2827
from firebase_admin import _user_import
2928
from firebase_admin import _user_mgt
@@ -467,8 +466,14 @@ def __init__(self, code, message, error=None):
467466
class _AuthService(object):
468467
"""Firebase Authentication service."""
469468

469+
ID_TOOLKIT_URL = 'https://www.googleapis.com/identitytoolkit/v3/relyingparty/'
470+
470471
def __init__(self, app):
471-
client = _AuthHTTPClient(app)
472+
credential = app.credential.get_credential()
473+
version_header = 'Python/Admin/{0}'.format(firebase_admin.__version__)
474+
client = _http_client.JsonHttpClient(
475+
credential=credential, base_url=self.ID_TOOLKIT_URL,
476+
headers={'X-Client-Version': version_header})
472477
self._token_generator = _token_gen.TokenGenerator(app, client)
473478
self._token_verifier = _token_gen.TokenVerifier(app)
474479
self._user_manager = _user_mgt.UserManager(client)
@@ -484,32 +489,3 @@ def token_verifier(self):
484489
@property
485490
def user_manager(self):
486491
return self._user_manager
487-
488-
489-
class _AuthHTTPClient(object):
490-
"""An HTTP client for making REST calls to the identity toolkit service."""
491-
492-
ID_TOOLKIT_URL = 'https://www.googleapis.com/identitytoolkit/v3/relyingparty/'
493-
494-
def __init__(self, app):
495-
g_credential = app.credential.get_credential()
496-
session = transport.requests.AuthorizedSession(g_credential)
497-
version_header = 'Python/Admin/{0}'.format(firebase_admin.__version__)
498-
session.headers.update({'X-Client-Version': version_header})
499-
self.session = session
500-
501-
def request(self, method, urlpath, **kwargs):
502-
"""Makes an HTTP call using the Python requests library.
503-
504-
Args:
505-
method: HTTP method name as a string (e.g. get, post).
506-
urlpath: URL path of the endpoint. This will be appended to the server's base URL.
507-
kwargs: An additional set of keyword arguments to be passed into requests API
508-
(e.g. json, params).
509-
510-
Returns:
511-
dict: The parsed JSON response.
512-
"""
513-
resp = self.session.request(method, self.ID_TOOLKIT_URL + urlpath, **kwargs)
514-
resp.raise_for_status()
515-
return resp.json()

tests/test_token_gen.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def _instrument_user_manager(app, status, payload):
104104
user_manager = auth_service.user_manager
105105
recorder = []
106106
user_manager._client.session.mount(
107-
auth._AuthHTTPClient.ID_TOOLKIT_URL,
107+
auth._AuthService.ID_TOOLKIT_URL,
108108
testutils.MockAdapter(payload, status, recorder))
109109
return user_manager, recorder
110110

tests/test_user_mgt.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def _instrument_user_manager(app, status, payload):
4848
user_manager = auth_service.user_manager
4949
recorder = []
5050
user_manager._client.session.mount(
51-
auth._AuthHTTPClient.ID_TOOLKIT_URL,
51+
auth._AuthService.ID_TOOLKIT_URL,
5252
testutils.MockAdapter(payload, status, recorder))
5353
return user_manager, recorder
5454

0 commit comments

Comments
 (0)
0