UNPKG

@zcatalyst/filestore

Version:

ZOHO CATALYST SDK for JavaScript Filestore for Node.js and Browser.

132 lines (131 loc) 4.72 kB
'use strict'; 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;