Dead links (gofile notFound/404, 0807 404/410) fail immediately without retry
This commit is contained in:
@@ -53,6 +53,13 @@ class GoFilePasswordRequired(GoFileError):
|
||||
"""The content is password protected and none (or a wrong one) was given."""
|
||||
|
||||
|
||||
class GoFileNotFound(GoFileError):
|
||||
"""The content/file no longer exists (404 / status notFound).
|
||||
|
||||
Dead links never come back, so the orchestrator must not retry these.
|
||||
"""
|
||||
|
||||
|
||||
class GoFileAuthError(GoFileError):
|
||||
"""The account token was rejected; the client can re-auth once."""
|
||||
|
||||
@@ -153,6 +160,8 @@ class GoFileClient:
|
||||
except requests.RequestException as exc:
|
||||
raise GoFileError(f"content request for {cid} failed: {exc}") from exc
|
||||
|
||||
if resp.status_code == 404:
|
||||
raise GoFileNotFound(f"content {cid} not found (dead link)")
|
||||
if resp.status_code in (401, 403):
|
||||
raise GoFileAuthError(f"content request denied ({resp.status_code}) for {cid}")
|
||||
try:
|
||||
@@ -160,6 +169,8 @@ class GoFileClient:
|
||||
except ValueError as exc:
|
||||
raise GoFileError(f"non-JSON response for {cid}: {resp.text[:200]}") from exc
|
||||
|
||||
if data.get("status") == "notFound":
|
||||
raise GoFileNotFound(f"content {cid} does not exist anymore (dead link)")
|
||||
if data.get("status") != "ok":
|
||||
raise GoFileError(f"content request failed for {cid}: {data.get('status')}")
|
||||
|
||||
@@ -199,6 +210,8 @@ class GoFileClient:
|
||||
with self.session.get(
|
||||
link, headers=headers, stream=True, timeout=(10, 60), allow_redirects=True
|
||||
) as resp:
|
||||
if resp.status_code == 404:
|
||||
raise GoFileNotFound(f"file {dest.name} not found (dead link)")
|
||||
if resp.status_code != 200:
|
||||
raise GoFileError(f"HTTP {resp.status_code} while downloading {dest.name}")
|
||||
total = int(resp.headers.get("Content-Length") or 0)
|
||||
|
||||
Reference in New Issue
Block a user