2023-01-03 11:55:46 -08:00
|
|
|
// Copyright 2021 Signal Messenger, LLC
|
2022-01-11 18:50:11 -06:00
|
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
|
|
|
import { isRecord } from '../../util/isRecord';
|
|
|
|
import { HTTPError } from '../../textsecure/Errors';
|
2022-04-25 16:05:23 -07:00
|
|
|
import { parseRetryAfterWithDefault } from '../../util/parseRetryAfter';
|
2022-01-11 18:50:11 -06:00
|
|
|
|
2024-10-25 10:10:33 -04:00
|
|
|
export function findRetryAfterTimeFromError(
|
|
|
|
err: unknown,
|
|
|
|
defaultValue?: number
|
|
|
|
): number {
|
2022-01-11 18:50:11 -06:00
|
|
|
let rawValue: unknown;
|
|
|
|
|
|
|
|
if (isRecord(err)) {
|
|
|
|
if (isRecord(err.responseHeaders)) {
|
|
|
|
rawValue = err.responseHeaders['retry-after'];
|
|
|
|
} else if (err.httpError instanceof HTTPError) {
|
|
|
|
rawValue = err.httpError.responseHeaders?.['retry-after'];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-01-17 15:23:41 -08:00
|
|
|
if (Array.isArray(rawValue)) {
|
2024-10-25 10:10:33 -04:00
|
|
|
return parseRetryAfterWithDefault(rawValue[0], defaultValue);
|
2024-01-17 15:23:41 -08:00
|
|
|
}
|
|
|
|
|
2024-10-25 10:10:33 -04:00
|
|
|
return parseRetryAfterWithDefault(rawValue, defaultValue);
|
2022-01-11 18:50:11 -06:00
|
|
|
}
|