web/api: remove deprecated statuses, update error type, time out request

also updated some error codes
This commit is contained in:
wukko 2024-08-06 20:50:20 +06:00
parent f96c1cd13b
commit ac6d68ec45
No known key found for this signature in database
GPG key ID: 3E30B3F26C7B4AA2
3 changed files with 24 additions and 9 deletions

View file

@ -68,16 +68,16 @@
return createDialog({
...defaultErrorPopup,
bodyText: "couldn't access the api",
bodyText: $t("error.api.unreachable"),
});
}
if (response.status === "error" || response.status === "rate-limit") {
if (response.status === "error") {
changeDownloadButton("error");
return createDialog({
...defaultErrorPopup,
bodyText: response.text,
bodyText: $t(response.error.code),
});
}
@ -101,7 +101,7 @@
return createDialog({
...defaultErrorPopup,
bodyText: "couldn't probe the stream",
bodyText: $t("error.stream.failed_probe"),
});
}
}
@ -139,7 +139,7 @@
return createDialog({
...defaultErrorPopup,
bodyText: "unknown/unsupported status",
bodyText: $t("error.api.unknown_response"),
});
};
</script>

View file

@ -91,12 +91,22 @@ const request = async (url: string) => {
const response: Optional<CobaltAPIResponse> = await fetch(api, {
method: "POST",
redirect: "manual",
signal: AbortSignal.timeout(10000),
body: JSON.stringify(request),
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
}).then(r => r.json()).catch(() => {});
}).then(r => r.json()).catch((e) => {
if (e?.message?.includes("timed out")) {
return {
status: "error",
error: {
code: "error.api.timed_out"
}
}
}
});
return response;
}

View file

@ -1,14 +1,19 @@
enum CobaltResponseType {
Error = 'error',
RateLimit = 'rate-limit',
Picker = 'picker',
Redirect = 'redirect',
Stream = 'stream',
}
type CobaltErrorResponse = {
status: CobaltResponseType.Error | CobaltResponseType.RateLimit,
text: string,
status: CobaltResponseType.Error,
error: {
code: string,
context?: {
service?: string,
limit?: number,
}
}
};
type CobaltPartialURLResponse = {