Files
payload/packages/plugin-cloud-storage/src/utilities/getRangeFromHeader.ts
2023-10-24 16:20:58 -04:00

29 lines
709 B
TypeScript

import type { BlockBlobClient } from '@azure/storage-blob'
import parseRange from 'range-parser'
const getRangeFromHeader = async (
blockBlobClient: BlockBlobClient,
rangeHeader?: string,
): Promise<{ end: number | undefined; start: number }> => {
const fullRange = { end: undefined, start: 0 }
if (!rangeHeader) {
return fullRange
}
const size = await blockBlobClient.getProperties().then((props) => props.contentLength)
if (size === undefined) {
return fullRange
}
const range = parseRange(size, rangeHeader)
if (range === -1 || range === -2 || range.type !== 'bytes' || range.length !== 1) {
return fullRange
}
return range[0]
}
export default getRangeFromHeader