@tokenizer/s3
Version:
Amazon S3 tokenizer
35 lines • 1.22 kB
JavaScript
import { GetObjectCommand } from '@aws-sdk/client-s3';
import { parseContentRange, tokenizer } from '@tokenizer/range';
import { fromStream } from 'strtok3';
import { S3Request } from './s3-request.js';
/**
* Initialize streaming tokenizer
* @param s3 client
* @param objRequest S3 object request
* @return Tokenizer supporting random-access
*/
export async function makeStreamingTokenizerFromS3(s3, objRequest) {
const s3request = new S3Request(s3, objRequest);
const info = await s3request.getRangedRequest([0, 0]);
const contentRange = parseContentRange(info.ContentRange);
const output = await s3.send(new GetObjectCommand(objRequest));
return fromStream(output.Body, {
fileInfo: {
mimeType: info.ContentType,
size: contentRange.instanceLength
}
});
}
/**
* Initialize chunked / random access tokenizer to S3 object
* @param s3 S3 client
* @param objRequest S3 object request
* @return Streaming tokenizer
*/
export async function makeChunkedTokenizerFromS3(s3, objRequest) {
const s3request = new S3Request(s3, objRequest);
return tokenizer(s3request, {
avoidHeadRequests: true
});
}
//# sourceMappingURL=index.js.map