feat(auth): send a request again when its token lapsed in the queue
A request can wait to be served for longer than the access token it was sent with lives, and comes back refused for a token that was valid when it left. Uploads that take minutes make that wait ordinary. - tell an expired token apart from any other refusal by the code the API returns, and retry only that one, once - prefer a token another process left behind over minting a second: it saves a round trip, and a rotating provider would retire one that is still in use. Assign it rather than read it, since the setter is what rewrites the session header the retry will carry - settle the token before the request so the one compared afterwards is the one that was actually sent - report an overloaded server when the second attempt is refused too, and let API errors out of the upload path with their own type
This commit is contained in:
@@ -28,6 +28,18 @@ class UnauthorizedException(MDRSException):
|
||||
pass
|
||||
|
||||
|
||||
class TokenExpiredException(UnauthorizedException):
|
||||
"""Thrown when the access token was still valid when sent but had expired on arrival"""
|
||||
|
||||
pass
|
||||
|
||||
|
||||
class ServerBusyException(MDRSException):
|
||||
"""Thrown when the server did not start handling a request before its token lapsed"""
|
||||
|
||||
pass
|
||||
|
||||
|
||||
class ForbiddenException(MDRSException):
|
||||
"""Thrown when the current user does not have enough privileges to access the resource"""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user