|
|
@@ -44,31 +44,71 @@ export class StreamingPlaylistsCommand extends AbstractCommand { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
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 |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
} |