Skip to content

Commit

Permalink
feat: oss support defaultRequestMeta
Browse files Browse the repository at this point in the history
  • Loading branch information
fengmk2 committed Jul 13, 2023
1 parent 99abc44 commit d17ba25
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 11 deletions.
9 changes: 6 additions & 3 deletions src/client/Client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,14 @@ import Configuration from './Configuration';
import PubSub from './PubSub';
import File from './File';
import Binding from './Binding';
import Oss from './Oss';
import Oss, { OssOptions } from './Oss';
import Cryption, { CryptionOptions } from './Cryption';

const debug = debuglog('layotto:client:main');

export interface ClientOptions {
ossEnable?: boolean;
oss?: OssOptions;
cryption?: CryptionOptions;
}

Expand All @@ -41,6 +42,7 @@ export default class Client {
readonly port: string;
private readonly _runtime: RuntimeClient;
private readonly _ossClient: ObjectStorageServiceClient;
private readonly _ossOptions: OssOptions;
private readonly _cryptionClient: CryptionServiceClient;
private readonly _cryptionOptions: CryptionOptions;
private _hello: Hello;
Expand All @@ -63,7 +65,8 @@ export default class Client {
const address = `${this.host}:${this.port}`;
this._runtime = new RuntimeClient(address, clientCredentials);
debug('Start connection to %o', address);
if (options?.ossEnable) {
if (options?.ossEnable || options?.oss) {
this._ossOptions = options?.oss || {};
this._ossClient = new ObjectStorageServiceClient(address, clientCredentials);
}
if (options?.cryption?.componentName) {
Expand Down Expand Up @@ -122,7 +125,7 @@ export default class Client {
if (!this._ossClient) {
throw new Error('client not enable oss');
}
this._oss = new Oss(this._ossClient);
this._oss = new Oss(this._ossClient, this._ossOptions);
}
return this._oss;
}
Expand Down
32 changes: 24 additions & 8 deletions src/client/Oss.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,19 @@ import {
import { ObjectStorageServiceClient } from '../../proto/extension/v1/s3/oss_grpc_pb';
import { API } from './API';

export type OssOptions = {
// set default metadata on every request
defaultRequestMeta?: Record<string, string>;
};

export default class Oss extends API {
private readonly ossClient: ObjectStorageServiceClient;
private readonly options: OssOptions;

constructor(ossClient: ObjectStorageServiceClient) {
constructor(ossClient: ObjectStorageServiceClient, options: OssOptions) {
super();
this.ossClient = ossClient;
this.options = options;
}

private async* putObjectIterator(request: PutObjectRequest): AsyncGenerator<PutObjectInput> {
Expand Down Expand Up @@ -82,7 +89,8 @@ export default class Oss extends API {
resolve = res;
reject = rej;
});
const writeStream = this.ossClient.putObject(this.createMetadata(request), (err, res) => {
const metadata = this.createMetadata(request, this.options.defaultRequestMeta);
const writeStream = this.ossClient.putObject(metadata, (err, res) => {
if (err) {
return reject(err);
}
Expand Down Expand Up @@ -175,7 +183,8 @@ export default class Oss extends API {
if (request.signedUrl) {
req.setSignedUrl(request.signedUrl);
}
const callStream = this.ossClient.getObject(req, this.createMetadata(request));
const metadata = this.createMetadata(request, this.options.defaultRequestMeta);
const callStream = this.ossClient.getObject(req, metadata);
const getObjectIterator = this.getObjectIterator(callStream);
const firstChunk = (await getObjectIterator.next()).value;
const getObjectBufIterator = this.getObjectBufferIterator(firstChunk, getObjectIterator);
Expand Down Expand Up @@ -204,8 +213,9 @@ export default class Oss extends API {
if (request.metadataDirective) {
req.setMetadataDirective(request.metadataDirective);
}
const metadata = this.createMetadata(request, this.options.defaultRequestMeta);
return new Promise((resolve, reject) => {
this.ossClient.copyObject(req, this.createMetadata(request), (err, response) => {
this.ossClient.copyObject(req, metadata, (err, response) => {
if (err) {
return reject(err);
}
Expand Down Expand Up @@ -258,8 +268,9 @@ export default class Oss extends API {
if (request.withDetails) {
req.setWithDetails(request.withDetails);
}
const metadata = this.createMetadata(request, this.options.defaultRequestMeta);
return new Promise((resolve, reject) => {
this.ossClient.headObject(req, this.createMetadata(request), (err, response) => {
this.ossClient.headObject(req, metadata, (err, response) => {
if (err) {
return reject(err);
}
Expand All @@ -280,8 +291,9 @@ export default class Oss extends API {
req.setVersionId(request.versionId);
}

const metadata = this.createMetadata(request, this.options.defaultRequestMeta);
return new Promise((resolve, reject) => {
this.ossClient.deleteObject(req, this.createMetadata(request), (err, response) => {
this.ossClient.deleteObject(req, metadata, (err, response) => {
if (err) {
return reject(err);
}
Expand Down Expand Up @@ -315,8 +327,10 @@ export default class Oss extends API {
if (request.requestPayer) {
req.setRequestPayer(request.requestPayer);
}

const metadata = this.createMetadata(request, this.options.defaultRequestMeta);
return new Promise((resolve, reject) => {
this.ossClient.listObjects(req, this.createMetadata(request), (err, response) => {
this.ossClient.listObjects(req, metadata, (err, response) => {
if (err) {
return reject(err);
}
Expand All @@ -332,8 +346,10 @@ export default class Oss extends API {
req.setKey(request.key);
req.setMethod(request.method);
req.setExpiredInSec(request.expiredInSec);

const metadata = this.createMetadata(request, this.options.defaultRequestMeta);
return new Promise((resolve, reject) => {
this.ossClient.signURL(req, this.createMetadata(request), (err, response) => {
this.ossClient.signURL(req, metadata, (err, response) => {
if (err) {
return reject(err);
}
Expand Down

0 comments on commit d17ba25

Please sign in to comment.