@zcatalyst/filestore
Version:
ZOHO CATALYST SDK for JavaScript Filestore for Node.js and Browser.
132 lines (131 loc) • 4.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FolderAdmin = exports.Folder = void 0;
const utils_1 = require("@zcatalyst/utils");
const error_1 = require("./utils/error");
const { CREDENTIAL_USER, REQ_METHOD, COMPONENT } = utils_1.CONSTANTS;
class Folder {
constructor(fileInstance, folderDetails) {
this._folderDetails = folderDetails;
this.requester = fileInstance.requester;
}
getComponentName() {
return COMPONENT.filestore;
}
async getFileDetails(id) {
await (0, utils_1.wrapValidatorsWithPromise)(() => {
(0, utils_1.isValidInputString)(id, 'file_id', true);
}, error_1.CatalystFileStoreError);
const request = {
method: REQ_METHOD.get,
path: `/folder/${this._folderDetails.id}/file/${id}`,
service: "baas",
track: true,
user: CREDENTIAL_USER.user
};
const resp = await this.requester.send(request);
return resp.data.data;
}
async deleteFile(id) {
await (0, utils_1.wrapValidatorsWithPromise)(() => {
(0, utils_1.isValidInputString)(id, 'file_id', true);
}, error_1.CatalystFileStoreError);
const request = {
method: REQ_METHOD.delete,
path: `/folder/${this._folderDetails.id}/file/${id}`,
service: "baas",
track: true,
user: CREDENTIAL_USER.user
};
const resp = await this.requester.send(request);
return !!resp.data.data;
}
async uploadFile(fileDetails) {
await (0, utils_1.wrapValidatorsWithPromise)(() => {
(0, utils_1.isNonNullObject)(fileDetails, 'file_object', true);
(0, utils_1.isNonEmptyString)(fileDetails.name, 'name in file_object', true);
}, error_1.CatalystFileStoreError);
const fileData = {
code: fileDetails.code,
file_name: fileDetails.name
};
const request = {
method: REQ_METHOD.post,
path: `/folder/${this._folderDetails.id}/file`,
data: fileData,
type: "file",
service: "baas",
track: true,
abortSignal: fileDetails.signal,
user: CREDENTIAL_USER.user
};
const resp = await this.requester.send(request);
return resp.data.data;
}
async getDownloadRequest(id) {
await (0, utils_1.wrapValidatorsWithPromise)(() => {
(0, utils_1.isValidInputString)(id, 'file_id', true);
}, error_1.CatalystFileStoreError);
return {
method: REQ_METHOD.get,
path: `/folder/${this._folderDetails.id}/file/${id}/download`,
service: "baas",
track: true,
user: CREDENTIAL_USER.user
};
}
async downloadFile(id) {
const request = await this.getDownloadRequest(id);
request.expecting = "buffer";
const resp = await this.requester.send(request);
return resp.data;
}
async getFileStream(id) {
const request = await this.getDownloadRequest(id);
request.expecting = "raw";
const resp = await this.requester.send(request);
return resp.data;
}
toString() {
return JSON.stringify(this._folderDetails);
}
toJSON() {
return this._folderDetails;
}
}
exports.Folder = Folder;
class FolderAdmin extends Folder {
constructor(fileInstance, folderDetails) {
super(fileInstance, folderDetails);
}
async update(folderDetails) {
await (0, utils_1.wrapValidatorsWithPromise)(() => {
(0, utils_1.isNonNullObject)(folderDetails, 'folder_object', true);
(0, utils_1.isNonEmptyString)(folderDetails.folder_name, 'folder_name in folder_object', true);
}, error_1.CatalystFileStoreError);
const postData = { folder_name: folderDetails.folder_name };
const request = {
method: REQ_METHOD.put,
path: `/folder/${this._folderDetails.id}`,
data: postData,
type: "json",
service: "baas",
track: true,
user: CREDENTIAL_USER.admin
};
const resp = await this.requester.send(request);
return resp.data.data;
}
async delete() {
const request = {
method: REQ_METHOD.delete,
path: `/folder/${this._folderDetails.id}`,
service: "baas",
track: true,
user: CREDENTIAL_USER.admin
};
const resp = await this.requester.send(request);
return !!resp.data.data;
}
}
exports.FolderAdmin = FolderAdmin;