Skip to content

Commit 6a04715

Browse files
Feat: Handle google.auth.exceptions.RefreshError.
1 parent 12864e8 commit 6a04715

File tree

2 files changed

+27
-11
lines changed

2 files changed

+27
-11
lines changed

zulip/integrations/google/get-google-credentials

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
#!/usr/bin/env python3
22
import argparse
3+
import logging
34
import os
5+
import sys
46

7+
from google.auth.exceptions import RefreshError # type: ignore[import-not-found]
58
from google.auth.transport.requests import Request # type: ignore[import-not-found]
69
from google.oauth2.credentials import Credentials # type: ignore[import-not-found]
710
from google_auth_oauthlib.flow import InstalledAppFlow
@@ -53,7 +56,13 @@ def get_credentials() -> Credentials:
5356
credentials = Credentials.from_authorized_user_file(credential_path, SCOPES)
5457
if not credentials or not credentials.valid:
5558
if credentials and credentials.expired and credentials.refresh_token:
56-
credentials.refresh(Request())
59+
try:
60+
credentials.refresh(Request())
61+
except RefreshError:
62+
logging.error(
63+
"The credentials have expired. Generate a new client_secret.json file."
64+
)
65+
sys.exit(1)
5766
else:
5867
flow = InstalledAppFlow.from_client_secrets_file(
5968
os.path.join(HOME_DIR, CLIENT_SECRET_FILE), SCOPES

zulip/integrations/google/google-calendar

+17-10
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import dateutil.parser
1515
import pytz
1616

1717
try:
18+
from google.auth.exceptions import RefreshError # type: ignore[import-not-found]
1819
from google.oauth2.credentials import Credentials # type: ignore[import-not-found]
1920
from googleapiclient.discovery import build
2021
except ImportError:
@@ -125,17 +126,23 @@ def get_credentials() -> Credentials:
125126
def populate_events() -> Optional[None]:
126127
creds = get_credentials()
127128
service = build("calendar", "v3", credentials=creds)
128-
feed = (
129-
service.events()
130-
.list(
131-
calendarId=options.calendarID,
132-
timeMin=datetime.datetime.now(pytz.utc).isoformat(),
133-
timeMax=datetime.datetime.now(pytz.utc).isoformat().split("T")[0] + "T23:59:59Z",
134-
singleEvents=True,
135-
orderBy="startTime",
129+
try:
130+
feed = (
131+
service.events()
132+
.list(
133+
calendarId=options.calendarID,
134+
timeMin=datetime.datetime.now(pytz.utc).isoformat(),
135+
timeMax=datetime.datetime.now(pytz.utc).isoformat().split("T")[0] + "T23:59:59Z",
136+
singleEvents=True,
137+
orderBy="startTime",
138+
)
139+
.execute()
136140
)
137-
.execute()
138-
)
141+
except RefreshError:
142+
logging.error(
143+
"The credentials have expired. Generate a new client_secret.json file and run the get-google-credentials script."
144+
)
145+
sys.exit(1)
139146
events.clear()
140147
for event in feed["items"]:
141148
try:

0 commit comments

Comments
 (0)