oss-client
Version:
Aliyun OSS(Object Storage Service) Node.js Client
38 lines (34 loc) • 1.07 kB
text/typescript
import type { ObjectCallback } from 'oss-interface';
export interface CallbackOptions {
callback: string;
callbackVar?: string;
}
export function encodeCallback(objectCallback: ObjectCallback) {
const data: Record<string, string> = {
// must use encodeURI not encodeURIComponent
callbackUrl: encodeURI(objectCallback.url),
callbackBody: objectCallback.body,
};
if (objectCallback.host) {
data.callbackHost = objectCallback.host;
}
if (objectCallback.contentType) {
data.callbackBodyType = objectCallback.contentType;
}
const callbackHeaderValue = Buffer.from(JSON.stringify(data)).toString(
'base64'
);
const options: CallbackOptions = {
callback: callbackHeaderValue,
};
if (objectCallback.customValue) {
const callbackVar: Record<string, string> = {};
for (const key in objectCallback.customValue) {
callbackVar[`x:${key}`] = objectCallback.customValue[key].toString();
}
options.callbackVar = Buffer.from(JSON.stringify(callbackVar)).toString(
'base64'
);
}
return options;
}