import os.path
import json
import time
-from oauth2client.client import OAuth2Credentials
-import gdata.calendar.service
-import gdata.docs.service
-import gdata.photos.service, gdata.photos
-from googleapiclient.discovery import build
-import httplib2
+from typing import Dict, Optional
+from oauth2client.client import OAuth2Credentials # type: ignore
+import gdata.calendar.service # type: ignore
+import gdata.docs.service # type: ignore
+import gdata.photos.service, gdata.photos # type: ignore
+from googleapiclient.discovery import build # type: ignore
+import httplib2 # type: ignore
from googleapiclient.discovery import build
import datetime
import ssl
print("gdata: initializing oauth token...")
self.client_id = client_id
self.client_secret = client_secret
- self.user_code = None
+ self.user_code: Optional[str] = None
# print 'Client id: %s' % (client_id)
# print 'Client secret: %s' % (client_secret)
- self.token = None
+ self.token: Optional[Dict] = None
self.device_code = None
self.verfication_url = None
self.token_file = "client_secrets.json"
self.host = "accounts.google.com"
self.reset_connection()
self.load_token()
- self.last_action = 0
- self.ssl_ctx = None
+ self.last_action = 0.0
+ self.ssl_ctx: Optional[ssl.SSLContext] = None
# this setup is isolated because it eventually generates a BadStatusLine
# exception, after which we always get httplib.CannotSendRequest errors.
print("gdata: we have no token.")
return self.token is not None
- def get_user_code(self) -> str:
+ def get_user_code(self) -> Optional[str]:
self.conn.request(
"POST",
"/o/oauth2/device/code",
self.verification_url = data["verification_url"]
self.retry_interval = data["interval"]
else:
+ self.user_code = None
print(f"gdata: {response.status}")
print(response.read())
sys.exit(-1)
else:
print("gdata: trying to refresh oauth token...")
self.reset_connection()
+ if self.token is None:
+ return False
+
refresh_token = self.token["refresh_token"]
self.conn.request(
"POST",
response = self.conn.getresponse()
self.last_action = time.time()
if response.status == 200:
- data = json.loads(response.read())
+ data: Dict = json.loads(response.read())
if "access_token" in data:
self.token = data
# in fact we NEVER get a new refresh token at this point