/
AwsS3ServiceClient.ts
88 lines (83 loc) · 2.93 KB
/
AwsS3ServiceClient.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/**
* Copyright 2018-present MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import BSON from "bson";
import {
CoreStitchServiceClient,
StitchAppClientInfo
} from "mongodb-stitch-core-sdk";
import {
AwsS3PutObjectResult,
AwsS3SignPolicyResult,
CoreAwsS3ServiceClient
} from "mongodb-stitch-core-services-aws-s3";
import {
NamedServiceClientFactory
} from "mongodb-stitch-react-native-core";
import AwsS3ServiceClientImpl from "./internal/AwsS3ServiceClientImpl";
/**
* The AWS S3 service client.
*
* @deprecated use AwsServiceClient instead.
*/
export interface AwsS3ServiceClient {
/**
* Puts an object.
*
* @param bucket the bucket to put the object in.
* @param key the key (or name) of the object.
* @param acl the ACL to apply to the object (e.g. private).
* @param contentType the content type of the object (e.g. application/json).
* @param body the body of the object.
* @return a Promise containing the result of the put, which contains the location of the object.
*/
putObject(
bucket: string,
key: string,
acl: string,
contentType: string,
body: string | BSON.Binary | Uint8Array | ArrayBuffer | Buffer
): Promise<AwsS3PutObjectResult>;
/**
* Signs an AWS S3 security policy for a future put object request. This future request would
* be made outside of the Stitch SDK. This is typically used for large requests that are better
* sent directly to AWS.
* @see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html">Uploading a File to Amazon S3 Using HTTP POST</a>
*
* @param bucket the bucket to put the future object in.
* @param key the key (or name) of the future object.
* @param acl the ACL to apply to the future object (e.g. private).
* @param contentType the content type of the object (e.g. application/json).
* @return a Promise containing the signed policy details.
*/
signPolicy(
bucket: string,
key: string,
acl: string,
contentType: string
): Promise<AwsS3SignPolicyResult>;
}
export namespace AwsS3ServiceClient {
export const factory: NamedServiceClientFactory<
AwsS3ServiceClient
> = new class implements NamedServiceClientFactory<AwsS3ServiceClient> {
public getNamedClient(
service: CoreStitchServiceClient,
client: StitchAppClientInfo
): AwsS3ServiceClient {
return new AwsS3ServiceClientImpl(new CoreAwsS3ServiceClient(service));
}
}();
}