UNPKG

backendless-console-sdk

Version:

Backendless Console SDK for Node.js and browser

130 lines (97 loc) 3.65 kB
import urls from './urls' import totalRows from './utils/total-rows' import { FOLDER } from './utils/cache-tags' import { encodePath } from './utils/path' const getFileFolder = file => { const tokens = file.split('/') if (tokens.length > 1) { tokens.pop() return tokens.join('/') } return '' } export default req => ({ loadDirectory(appId, path, params) { path = path || '/' const { pattern, sub, sortBy, sortDirection, pageSize, offset } = params || {} const dataReq = req.get(urls.directoryView(appId, path)) .query({ pattern, sub, sortBy, sortDirection, pageSize, offset }) .cacheTags(FOLDER(appId, path)) return totalRows(req).getWithData(dataReq) }, async loadFullDirectory(appId, path, params) { let currentQuery = { ...params, pageSize: 100, offset : 0, } const url = urls.directoryView(appId, path) const totalCount = await totalRows(req).get(url) const filesList = [] const requests = [] while (currentQuery.offset < totalCount) { requests.push(req.get(url).query(currentQuery)) currentQuery = { ...currentQuery, offset: currentQuery.offset + 100, } } const results = await Promise.all(requests) results.forEach(files => filesList.push(...files)) return filesList }, createDir(appId, path, folderName) { return req.post(urls.createDir(appId, path, folderName)).cacheTags(FOLDER(appId, path)) }, async getFileContent(appId, filePath) { return req.get(urls.fileDownload(appId, filePath)) }, performOperation(appId, filePath, operation) { //for root directory operations it has send '/' as path const path = filePath ? encodePath(filePath) : encodeURIComponent('/') return req.put(`${urls.appConsole(appId)}/files/${path}`) .query({ operation }) .cacheTags(FOLDER(appId, getFileFolder(path))) }, fileExists(appId, filePath) { return req.get(urls.fileExists(appId, filePath)) }, editFile(appId, filePath, fileContent) { return req.post(urls.fileEdit(appId, filePath), { file: fileContent }) }, createFile(appId, filePath, fileContent) { return req .post(urls.fileCreate(appId, filePath), { file: fileContent }) .set('Accept', '*/*') //workarround for BKNDLSS-13702 .cacheTags(FOLDER(appId, getFileFolder(filePath))) }, moveFile(appId, filePath, newFilePath) { return req.post(urls.fileMove(appId, filePath), encodePath(newFilePath)) .cacheTags(FOLDER(appId, getFileFolder(filePath))) }, copyFile(appId, filePath, newFilePath) { return req.post(urls.fileCopy(appId, filePath), encodePath(newFilePath)) .cacheTags(FOLDER(appId, getFileFolder(filePath))) }, renameFile(appId, filePath, newFileName) { return req.post(urls.fileRename(appId, filePath), encodeURIComponent(newFileName)) .cacheTags(FOLDER(appId, getFileFolder(filePath))) }, deleteFile(appId, filePath) { return req.delete(urls.fileDelete(appId, filePath)) .cacheTags(FOLDER(appId, getFileFolder(filePath))) }, uploadFile(appId, file, path, fileName, overwrite = false) { return req.post(urls.fileUpload(appId, `${path}/${fileName}`), file) .query({ overwrite }) .cacheTags(FOLDER(appId, path)) }, createConsoleFile(appId, path, content) { return req.post(`${urls.appConsole(appId)}/files/create/${encodePath(path)}`, content) .set('Accept', '*/*') //workarround for BKNDLSS-13702 .cacheTags(FOLDER(appId, getFileFolder(path))) }, viewFiles(appId, path = '') { return req.get(urls.fileView(appId, path)) } })