@zcatalyst/filestore
Version:
ZOHO CATALYST SDK for JavaScript Filestore for Node.js and Browser.
77 lines (76 loc) • 2.47 kB
JavaScript
;
import { Handler } from '@zcatalyst/transport';
import { CONSTANTS, isNonEmptyString, isValidInputString, wrapValidators, wrapValidatorsWithPromise } from '@zcatalyst/utils';
import { Folder, FolderAdmin } from './folder';
import { CatalystFileStoreError } from './utils/error';
const { REQ_METHOD, CREDENTIAL_USER, COMPONENT } = CONSTANTS;
export class Filestore {
constructor(app) {
this.requester = new Handler(app, this);
}
getComponentName() {
return COMPONENT.filestore;
}
async getAllFolders() {
const request = {
method: REQ_METHOD.get,
path: `/folder`,
service: "baas",
track: true,
user: CREDENTIAL_USER.user
};
const resp = await this.requester.send(request);
const jsonArr = resp.data.data;
return jsonArr.map((folder) => new Folder(this, folder));
}
async getFolderDetails(id) {
await wrapValidatorsWithPromise(() => {
isValidInputString(id, 'folder_id', true);
}, CatalystFileStoreError);
const request = {
method: REQ_METHOD.get,
path: `/folder/${id}`,
service: "baas",
track: true,
user: CREDENTIAL_USER.user
};
const resp = await this.requester.send(request);
return resp.data.data;
}
folder(id) {
wrapValidators(() => {
isValidInputString(id, 'folder_id', true);
}, CatalystFileStoreError);
return new Folder(this, { id: String(id) });
}
}
export class FilestoreAdmin extends Filestore {
constructor(app) {
super(app);
}
async createFolder(name) {
await wrapValidatorsWithPromise(() => {
isNonEmptyString(name, 'folder_name', true);
}, CatalystFileStoreError);
const postData = {
folder_name: name
};
const request = {
method: REQ_METHOD.post,
path: '/folder',
data: postData,
type: "json",
service: "baas",
track: true,
user: CREDENTIAL_USER.admin
};
const resp = await this.requester.send(request);
return resp.data.data;
}
folder(id) {
wrapValidators(() => {
isValidInputString(id, 'folder_id', true);
}, CatalystFileStoreError);
return new FolderAdmin(this, { id: String(id) });
}
}