@tokenizer/s3
Version:
Amazon S3 tokenizer
37 lines (36 loc) • 1.25 kB
TypeScript
import { type IRangeRequestClient, type IRangeRequestResponse } from '@tokenizer/range';
import { type GetObjectRequest, GetObjectCommand } from '@aws-sdk/client-s3';
type ByteRangeRequest = [number, number];
export interface S3RequestResponse {
ContentType?: string;
ContentRange?: string;
Body?: unknown;
}
export interface S3RequestClient {
send(command: GetObjectCommand, options?: {
abortSignal?: AbortSignal;
}): Promise<S3RequestResponse>;
}
/**
* Use S3-client to execute actual HTTP-requests.
*/
export declare class S3Request implements IRangeRequestClient {
private s3;
private objRequest;
private readonly abortController;
constructor(s3: S3RequestClient, objRequest: GetObjectRequest);
/**
* Concatenate given array of Uint8Arrays
* @param arrays Array of Uint8Arrays
*/
private static mergeUint8Arrays;
buildArrayBuffer(response: S3RequestResponse): Promise<Uint8Array>;
getResponse(_method: string | undefined, range: ByteRangeRequest): Promise<IRangeRequestResponse>;
/**
* Do a ranged request
* @param range Range request
*/
getRangedRequest(range: ByteRangeRequest): Promise<S3RequestResponse>;
abort(): void;
}
export {};