backendless-console-sdk
Version:
Backendless Console SDK for Node.js and browser
279 lines (225 loc) • 11 kB
JavaScript
/* eslint-disable max-len */
import { encodePath, optional } from './utils/path'
export const console = authKey => `/console${optional(authKey)}`
export const appConsole = (appId, authKey) => `/${appId}${console(authKey)}`
const consoleSection = section => appId => `${appConsole(appId)}/${section}`
export const mailSettings = consoleSection('mailsettings')
export const security = consoleSection('security')
export const serverCode = consoleSection('servercode')
export const blBasePath = consoleSection('localservices')
export const data = consoleSection('data')
export const geo = consoleSection('geo')
export const files = consoleSection('files')
export const messaging = consoleSection('messaging')
export const dataTables = appId => `${data(appId)}/tables`
export const dataTable = (appId, tableName) => `${data(appId)}/${encodeURI(tableName)}`
export const dataTableBulkCreate = (appId, tableName) => `${data(appId)}/bulk/${encodeURI(tableName)}`
export const dataTableBulkUpsert = (appId, tableName) => `${data(appId)}/bulkupsert/${encodeURI(tableName)}`
export const dataTableGroup = (appId, tableName) => `${data(appId)}/data-grouping/${encodeURI(tableName)}`
export const dataTableGroupCount = (appId, tableName) => `${dataTableGroup(appId, tableName)}/count`
export const dataRecord = (appId, tableName, recordId) => `${dataTable(appId, tableName)}/${recordId}`
export const dataCell = (appId, tableName, recordId, columnName) => `${dataRecord(appId, tableName, recordId)}/${columnName}`
export const dataConfigs = appId => `${data(appId)}/config`
export const tableColumns = (appId, tableName) => `${dataTables(appId)}/${encodeURI(tableName)}/columns`
export const securityRoles = appId => `${security(appId)}/roles`
const generalizeEventCategory = category => !category || category === 'TIMER' ? 'timers' : 'events'
export const blHandlersCategory = (appId, mode, category) =>
`${serverCode(appId)}/${mode.toLowerCase()}/${generalizeEventCategory(category)}`
export const blHandlersChain = (appId, eventId, context) =>
`${serverCode(appId)}/chain/${eventId}/${context}`
const composeFileUrl = (appId, operation, filePath) => {
const routeParts = [files(appId)]
if (operation) {
routeParts.push(operation)
}
routeParts.push(encodePath(filePath), '')
return routeParts.join('/')
}
export const fileExists = (appId, filePath) => composeFileUrl(appId, 'exists', filePath)
export const fileEdit = (appId, filePath) => composeFileUrl(appId, 'edit', filePath)
export const fileMove = (appId, filePath) => composeFileUrl(appId, 'move', filePath)
export const fileCopy = (appId, filePath) => composeFileUrl(appId, 'copy', filePath)
export const fileRename = (appId, filePath) => composeFileUrl(appId, 'rename', filePath)
export const fileDelete = (appId, filePath) => composeFileUrl(appId, null, filePath)
export const fileCreate = (appId, filePath) => composeFileUrl(appId, 'create', filePath)
export const fileUpload = (appId, filePath) => composeFileUrl(appId, 'upload', filePath)
export const fileView = (appId, filePath, options = {}) => {
if (filePath && !filePath.startsWith('/')) {
filePath = `/${filePath}`
}
return `${options.host || ''}${appConsole(appId)}/files/view${encodePath(filePath)}`
}
export const fileDownload = (appId, filePath, options = {}) =>
`${options.host || ''}${appConsole(appId)}/files/download/${encodePath(filePath)}`
export const createDir = (appId, path, folderName) => {
path = path ? `${path}/` : ''
const dirPath = encodePath(path + folderName)
return `${files(appId)}/createdir/${dirPath}/`
}
export const directoryView = (appId, filePath, options = {}) => {
if (filePath && filePath.startsWith('/')) {
filePath = filePath.slice(1)
}
if (filePath.endsWith('/')) {
filePath = filePath.slice(0, -1)
}
return `${options.host || ''}${appConsole(appId)}/files/directory/view${optional(encodePath(filePath))}`
}
export const blProd = (appId, language, model) =>
`${serverCode(appId)}/${model}/production/${language}`
export const blDraft = (appId, language, model) =>
`${serverCode(appId)}/${model}/draft/${language}`
export const blDraftsProjectDownload = (appId, authKey, language, model) =>
`${appConsole(appId, authKey)}/servercode/${model}/draft/${language}/download`
export const blServicesClientDownload = (appId, authKey, serviceId, language) =>
`${appConsole(appId, authKey)}/localservices/${serviceId}/${language}/download`
export const messagingChannels = appId =>
`${messaging(appId)}/channels`
export const messagingPush = appId => `${messaging(appId)}/push`
export const messagingPushRecipientsCount = appId => `${messaging(appId)}/pushsize`
export const messagingPushTemplates = appId => `${messagingPush(appId)}/templates`
export const messagingPushTemplate = (appId, name) => `${messagingPushTemplates(appId)}/${name}`
export const messagingPushButtonTemplates = appId => `${messaging(appId)}/button-templates`
export const messagingPushButtonTemplate = (appId, name) => `${messagingPushButtonTemplates(appId)}/${name}`
export const messagingPushChannelTemplates = appId => `${messaging(appId)}/channel-templates`
export const messagingPushChannelTemplate = (appId, name) => `${messagingPushChannelTemplates(appId)}/${name}`
export const messagingChannel = (appId, channelId) =>
`${messagingChannels(appId)}/${channelId}`
export const mobileSettings = appId =>
`${appConsole(appId)}/mobilesettings`
export const mobileSettingsAndroid = (appId, id) =>
`${mobileSettings(appId)}/android${optional(id)}`
export const billing = appId => {
console.warn('DO NOT USE THE FUNCTION')
return `${appConsole(appId)}/billing`
}
export const marketplace = (appId, name) => `${appConsole(appId)}/marketplace/${name}`
export const appInfo = appId =>
`${appConsole(appId)}/app-info`
export const blueprints = id => `${console()}/blueprints${optional(id)}`
export const landingPage = appId =>
`${appConsole(appId)}/landing-page`
export const codeless = appId => `${appConsole(appId)}/codeless`
export const codelessApiServices = appId => `${codeless(appId)}/api-services`
export const codelessFunctions = appId => `${codeless(appId)}/functions`
export const codelessFunctionSource = (appId, name) => `${codelessFunctions(appId)}/${name}`
export const codelessDeployModel = (appId, model) => `${codeless(appId)}/deploy/${model}`
export const dataViews = (appId, id) => `${appConsole(appId)}/data/table-views${optional(id)}`
export const dataHives = appId => `${appConsole(appId)}/hive`
export const dataHive = (appId, hiveName) => `${dataHives(appId)}/${hiveName}`
export const dataHiveStore = (appId, hiveName, storeType) => `${dataHive(appId, hiveName)}/${storeType}`
export const dataHiveStoreKey = (appId, hiveName, storeType, keyName) => `${dataHiveStore(appId, hiveName, storeType)}/${keyName}`
export const dataToVisualize = appId => `${appConsole(appId)}/data-to-visualize`
export const dataConnectors = appId => `${appConsole(appId)}/dataconnectors`
export const dataConnectorTemplates = appId => `${dataConnectors(appId)}/templates`
export const dataConnector = (appId, connectorId) => `${dataConnectors(appId)}/${connectorId}`
export const dataConnectorTables = (appId, connectorId) => `${dataConnector(appId, connectorId)}/tables`
export const dataConnectorTableEntries = (appId, connectorId, tableName) => `${dataConnectorTables(appId, connectorId)}/${tableName}/entries`
export const dataConnectorStoredProcedures = (appId, connectorId) => `${dataConnector(appId, connectorId)}/storedprocs`
export const dataConnectorStoredProcedureExecution = (appId, connectorId, procedureId) => `${dataConnectorStoredProcedures(appId, connectorId)}/${procedureId}/execution`
export const emailTemplates = (appId, templateName) => `${appConsole(appId)}/emailtemplate${optional(templateName)}`
export const installEmailTemplate = (appId, productId) => `${appConsole(appId)}/email-templates/install/${productId}`
export const apiDocs = appId => `${appConsole(appId)}/api-docs`
export const apiDocsDataTable = (appId, tableName) => `${apiDocs(appId)}/data/table/${tableName}`
export const apiDocsMessagingChannel = (appId, channelName) => `${apiDocs(appId)}/messaging/channel/${channelName}`
export const apiDocsFiles = appId => `${apiDocs(appId)}/files`
export const apiDocsService = (appId, serviceId, model) => `${apiDocs(appId)}/services/${serviceId}/${model}`
export const apiDocsGeo = appId => `${apiDocs(appId)}/geo`
export const cache = (appId, key) => `${appConsole(appId)}/cache${optional(key)}`
export const atomicCounters = appId => `${appConsole(appId)}/counters`
export const gamification = () => `${console()}/gamification`
export const gamificationApp = appId => `${appConsole(appId)}/gamification`
export const userActivity = appId => `${appConsole(appId)}/user-activity`
export const devTeam = (appId, devId) => `${appConsole(appId)}/devteam${optional(devId)}`
export const users = appId => `${appConsole(appId)}/users`
export const oauth1 = appId => `${users(appId)}/oauth1`
export const oauth2 = appId => `${users(appId)}/oauth2`
export const oauth0 = appId => `${appConsole(appId)}/security/auth0`
export const oauth0Config = appId => `${oauth0(appId)}/config`
export const oauth0Binding = appId => `${oauth0(appId)}/scope-to-role`
export const downloadComplianceFile = (appId, complianceName) =>
`${security(appId)}/compliances/${complianceName}/download`
export default {
appConsole,
appInfo,
atomicCounters,
billing,
blBasePath,
blDraft,
blDraftsProjectDownload,
blHandlersCategory,
blHandlersChain,
blProd,
blServicesClientDownload,
blueprints,
cache,
codelessApiServices,
codelessDeployModel,
codelessFunctionSource,
codelessFunctions,
console,
createDir,
data,
dataConfigs,
dataCell,
dataRecord,
dataTable,
dataTableBulkCreate,
dataTableBulkUpsert,
dataTables,
devTeam,
emailTemplates,
fileCopy,
fileCreate,
fileDelete,
fileDownload,
fileEdit,
fileExists,
fileMove,
fileRename,
fileUpload,
fileView,
gamification,
gamificationApp,
directoryView,
geo,
installEmailTemplate,
landingPage,
mailSettings,
marketplace,
messaging,
messagingChannel,
messagingChannels,
messagingPush,
messagingPushRecipientsCount,
messagingPushTemplates,
messagingPushTemplate,
messagingPushButtonTemplates,
messagingPushButtonTemplate,
messagingPushChannelTemplates,
messagingPushChannelTemplate,
mobileSettings,
mobileSettingsAndroid,
security,
securityRoles,
serverCode,
tableColumns,
userActivity,
users,
dataViews,
dataHives,
dataToVisualize,
dataConnectors,
dataConnectorTemplates,
dataConnector,
dataConnectorTables,
dataConnectorTableEntries,
dataConnectorStoredProcedures,
dataConnectorStoredProcedureExecution,
apiDocsDataTable,
apiDocsMessagingChannel,
apiDocsFiles,
apiDocsService,
apiDocsGeo,
downloadComplianceFile,
}