///
///
import { Stream } from 'stream';
import { AbstractCloudService, CloudService, RawCloudService } from './cloud-protocol';
export declare const ObjectStorageService: unique symbol;
export declare const OBJECT_STORAGE_NAME = "objectStorage";
export declare type Body = Buffer | string | Stream;
export interface Owner {
id?: string;
displayName?: string;
}
export interface Bucket {
name: string;
creationDate: Date;
}
export interface Object {
etag?: string;
key: string;
lastModified?: Date;
Owner?: Owner;
size: number;
storageClass: string;
}
export interface ListAllMyBucketsResult {
owner?: Owner;
buckets: Bucket[];
}
export interface ListObjectsRequest {
bucket: string;
continuationToken?: string;
delimiter?: string;
encodingType?: string;
fetchOwner?: string;
maxKeys: number;
prefix?: string;
startAfter?: string;
requestPayer?: string;
expectedBucketOwner?: string;
}
export interface ListObjectsResult {
commonPrefixes?: {
prefix: string;
}[];
contents: Object[];
continuationToken?: string;
delimiter?: string;
encodingType?: string;
isTruncated: boolean;
keyCount: number;
maxKeys: number;
name: string;
nextContinuationToken?: string;
prefix?: string;
startAfter?: string;
}
export interface GetObjectRequest {
bucket: string;
key: string;
range?: string;
}
export interface CreateBucketRequest {
bucket: string;
}
export interface CreateBucketResult {
location?: string;
}
export interface PutObjectRequest {
bucket: string;
key: string;
body: Body;
cacheControl?: string;
contentDisposition?: string;
contentEncoding?: string;
contentLength?: number;
contentType?: string;
expires?: Date;
}
export interface CopyObjectRequest {
bucket: string;
key: string;
copySource: string;
}
export interface DeleteObjectRequest {
bucket: string;
key: string;
mfa?: string;
requestPayer?: string;
bypassGovernanceRetention?: string;
expectedBucketOwner?: string;
}
export interface DeleteBucketRequest {
bucket: string;
expectedBucketOwner?: string;
}
export interface HeadObjectResult {
cacheControl?: string;
contentDisposition?: string;
contentEncoding?: string;
contentLength?: number;
contentType?: string;
expires?: Date;
}
export interface ObjectStorageService extends CloudService {
createBucket(request: CreateBucketRequest): Promise;
deleteBucket(request: DeleteBucketRequest): Promise;
listBuckets(): Promise;
listObjects(request: ListObjectsRequest): Promise;
getObject(request: GetObjectRequest): Promise;
getStream(request: GetObjectRequest): Promise;
putObject(request: PutObjectRequest): Promise;
copyObject(request: CopyObjectRequest): Promise;
deleteObject(request: DeleteObjectRequest): Promise;
headObject(request: GetObjectRequest): Promise;
}
export declare abstract class AbstractObjectStorageService extends AbstractCloudService implements ObjectStorageService {
name: string;
abstract createBucket(request: CreateBucketRequest): Promise;
abstract deleteBucket(request: DeleteBucketRequest): Promise;
abstract listBuckets(): Promise;
abstract listObjects(request: ListObjectsRequest): Promise;
abstract getObject(request: GetObjectRequest): Promise;
abstract getStream(request: GetObjectRequest): Promise;
abstract putObject(request: PutObjectRequest): Promise;
abstract copyObject(request: CopyObjectRequest): Promise;
abstract deleteObject(request: DeleteObjectRequest): Promise;
abstract headObject(request: GetObjectRequest): Promise;
}
//# sourceMappingURL=object-storage-protocol.d.ts.map