Skip to content

Commit 0df281f

Browse files
Update (#3)
* Updaate to remove legacy style support * Bugfixes - Update `credentials.py` to unpack str copies of tokens - Update `secret_manager.py` to store tokens better
1 parent 3971c4a commit 0df281f

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

auth/credentials.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
from dataclasses import dataclass
1717
from datetime import datetime
18+
import json
1819
from typing import Any, Dict, Mapping, Type, TypeVar, Union
1920

2021
import pytz
@@ -140,7 +141,7 @@ def credentials(self) -> oauth.Credentials:
140141
expiry = self._to_utc(
141142
datetime.now().astimezone(pytz.utc) + relativedelta(minutes=30))
142143
if token := self.token_details:
143-
creds = oauth.Credentials.from_authorized_user_info(token)
144+
creds = oauth.Credentials.from_authorized_user_info(json.loads(token))
144145

145146
if creds.expired:
146147
creds.expiry = expiry

auth/datastore/secret_manager.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414
from __future__ import annotations
15+
from io import BytesIO
1516

1617
import json
1718
from typing import Any, List, Mapping, Optional, Type
@@ -72,8 +73,10 @@ def store_document(self, id: str, document: Mapping[str, Any],
7273
document (Dict[str, Any]): The document to store.
7374
type (Optional[Type]): Unused.
7475
"""
76+
b_document = BytesIO()
77+
b_document.write(json.dumps(document).encode())
7578
payload = secretmanager_v1.SecretPayload(
76-
data=json.dumps(document).encode('utf-8'))
79+
data=b_document.getvalue())
7780
request = secretmanager_v1.AddSecretVersionRequest(
7881
parent=self.client.secret_path(self._project, id),
7982
payload=payload)
@@ -101,14 +104,13 @@ def update_document(self, id: str, new_data: Mapping[str, Any],
101104
# Destroy other versions
102105
request = secretmanager_v1.ListSecretVersionsRequest(
103106
parent=self.client.secret_path(project=self._project, secret=id),
104-
filter=f'state:enabled AND name!="{latest.name}"'
107+
filter=f'state:enabled' # AND name!="{latest.name}"'
105108
)
106109
version_list = self.client.list_secret_versions(request=request)
107110
for page in version_list.pages:
108111
for version in page.versions:
109-
if version == new_version:
110-
continue
111-
else:
112+
# Only delete older versions
113+
if version.create_time < new_version.create_time:
112114
self.client.destroy_secret_version(
113115
secretmanager_v1.DestroySecretVersionRequest(
114116
name=version.name
@@ -153,7 +155,7 @@ def get_document(self, id: str, type: Optional[Type] = None,
153155
try:
154156
request = secretmanager_v1.AccessSecretVersionRequest(name=secret)
155157
response = self.client.access_secret_version(request=request)
156-
return json.loads(response.payload.data)
158+
return json.loads(response.payload.data.decode('utf-8'))
157159
except Exception as e:
158160
print(e)
159161
return None

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
55

66
[project]
77
name = "python-oauth-token-manager"
8-
version = "0.3.0"
8+
version = "0.4.0"
99
authors = [{ name = "David Harcombe", email = "[email protected]" }]
1010
description = "API for managing stored OAuth credentials."
1111
readme = "README.md"

0 commit comments

Comments
 (0)