}
}
- getFragmentedSegment (options: OverrideCommandOptions & {
+ async getFragmentedSegment (options: OverrideCommandOptions & {
url: string
range?: string
+
+ withRetry?: boolean // default false
+ currentRetry?: number
}) {
- return unwrapBody<Buffer>(this.getRawRequest({
- ...options,
-
- url: options.url,
- range: options.range,
- implicitToken: false,
- responseType: 'application/octet-stream',
- defaultExpectedStatus: HttpStatusCode.OK_200
- }))
+ const { withRetry, currentRetry = 1 } = options
+
+ try {
+ const result = await unwrapBody<Buffer>(this.getRawRequest({
+ ...options,
+
+ url: options.url,
+ range: options.range,
+ implicitToken: false,
+ responseType: 'application/octet-stream',
+ defaultExpectedStatus: HttpStatusCode.OK_200
+ }))
+
+ return result
+ } catch (err) {
+ if (!withRetry || currentRetry > 5) throw err
+
+ await wait(100)
+
+ return this.getFragmentedSegment({
+ ...options,
+
+ withRetry,
+ currentRetry: currentRetry + 1
+ })
+ }
}
- getSegmentSha256 (options: OverrideCommandOptions & {
+ async getSegmentSha256 (options: OverrideCommandOptions & {
url: string
+
+ withRetry?: boolean // default false
+ currentRetry?: number
}) {
- return unwrapBodyOrDecodeToJSON<{ [ id: string ]: string }>(this.getRawRequest({
- ...options,
-
- url: options.url,
- contentType: 'application/json',
- implicitToken: false,
- defaultExpectedStatus: HttpStatusCode.OK_200
- }))
+ const { withRetry, currentRetry = 1 } = options
+
+ try {
+ const result = await unwrapBodyOrDecodeToJSON<{ [ id: string ]: string }>(this.getRawRequest({
+ ...options,
+
+ url: options.url,
+ contentType: 'application/json',
+ implicitToken: false,
+ defaultExpectedStatus: HttpStatusCode.OK_200
+ }))
+
+ return result
+ } catch (err) {
+ if (!withRetry || currentRetry > 5) throw err
+
+ await wait(100)
+
+ return this.getSegmentSha256({
+ ...options,
+
+ withRetry,
+ currentRetry: currentRetry + 1
+ })
+ }
}
}