in mapillary_tools/authenticate.py [0:0]
def prompt_user_for_user_items(user_name: str) -> types.UserItem:
print(f"Sign in for user {user_name}")
user_email = input("Enter your Mapillary user email: ")
user_password = getpass.getpass("Enter Mapillary user password: ")
try:
resp = api_v4.get_upload_token(user_email, user_password)
except requests.HTTPError as ex:
if 400 <= ex.response.status_code < 500:
r = ex.response.json()
subcode = r.get("error", {}).get("error_subcode")
if subcode in [1348028, 1348092, 3404005, 1348131]:
title = r.get("error", {}).get("error_user_title")
message = r.get("error", {}).get("error_user_msg")
LOG.error(f"{title}: {message}")
return prompt_user_for_user_items(user_name)
else:
raise wrap_http_exception(ex)
else:
raise wrap_http_exception(ex)
data = resp.json()
upload_token = T.cast(str, data.get("access_token"))
user_key = T.cast(str, data.get("user_id"))
if not isinstance(upload_token, str) or not isinstance(user_key, (str, int)):
raise RuntimeError(
f"Error extracting user_key or token from the login response: {data}"
)
if isinstance(user_key, int):
user_key = str(user_key)
return {
"MAPSettingsUserKey": user_key,
"user_upload_token": upload_token,
}