All public
method (application-level methods) of this class is accessible from clients via HTTP request to \appName\methodName\
URI.
This documentation describe native
(implemented inside ub.exe) methods,
but developer can add his own (custom) application level methods using App.registerEndpoint and take a full control on HTTP request & response.
Mixes EventEmitter, and in case App.emitterEnabled is set to true
server will emit:
endpointName + ':before'
event before endpoint handler executionendpointName + ':after'
event after success (no exception is raised, no App.preventDefault() is called) endpoint handler execution
This happens for both native and custom methods.
- Mixes In:
Members
serverConfig: Object
static
Server configuration (result of argv.getServerConfiguration() execution)
In this case developer are responsible to fill response object, otherwise HTTP 400 is returned.
name: String
static
readonly
Application name
staticPath: String
static
readonly
Full path to application static folder if any, '' if static folder not set
serverURL: String
static
readonly
Full URl HTTP server is listen on (if HTTP server enabled, else - empty string)
localIPs
static
List of a local server IP addresses CRLF (or CR for non-windows) separated
domain: TubDomain
static
readonly
Current application Domain
defaultDatabase: TubDatabase
static
Default database connection
customSettings: String
static
Custom settings for application from ubConfig.app.customSettings
emitterEnabled: Boolean
static
Is event emitter enabled for App singleton. Default is false
- Deprecated:
- Starting from 1.11 this property ignored (always TRUE)
Methods
preventDefault()
static
Accessible inside app-level :before
event handler. Call to prevent default method handler.
In this case developer are responsible to fill response object, otherwise HTTP 400 is returned.
registerEndpoint(endpointName, handler, requireAuthenticationopt)
static
Register a server endpoint. By default access to endpoint require authentication
Arguments:
Example
// Write a custom request body to file FIXTURES/req and echo file back to client
// @param {THTTPRequest} req
// @param {THTTPResponse} resp
//
function echoToFile(req, resp) {
var fs = require('fs');
fs.writeFileSync(FIXTURES + 'req', req.read('bin'));
resp.statusCode = 200;
resp.writeEnd(fs.readFileSync(FIXTURES + 'req', {encoding: 'bin'}));
}
App.registerEndpoint('echoToFile', echoToFile);
addAppLevelMethod(methodName)
static
Arguments:
-
methodName
(String)
- Deprecated:
- Use
App.registerEndpoint
instead
serviceMethodByPassAuthentication(methodName)
static
Arguments:
-
methodName
(String)
- Deprecated:
- Use
App.registerEndpoint
instead
resolveStatic(aRequestedFile) → String
protected
static
Resolve aRequestedFile to real file path.
Internally analyse request and if it start with model/
- resolve it to model public folder
else - to inetPub
folder.
Will return '' in case of error (filePath not under inetPub
or model/
) to prevent ../../ attack
Arguments:
-
aRequestedFile
(String)
globalCacheGet(key) → String
static
Get value from global cache. Global cache shared between all threads.
Return '' (empty string) in case key not present in cache.
Arguments:
-
key
(String)
 Key to retrive
globalCachePut(key, value)
static
Put value to global cache.
Arguments:
authFromRequest() → Boolean
static
Try retrieve or create new session from request header
Return true if success
els(entityCode, methodCode) → boolean
static
Check Entity-Level-Security for specified entity/method
if App.els('uba_user', 'insert'){
// do something
}
Arguments:
getUISettings() → string
static
Return JSON specified in serverConfig.uiSettings
deleteFromFTSIndex(entityName, instanceID)
static
Delete row from FTS index for exemplar with instanceID
of entity entityName
(mixin fts
must be enabled for entity)
Arguments:
updateFTSIndex(entityName, instanceID)
static
Update FTS index for for exemplar with instanceID
of entity entityName
(mixin fts
must be enabled for entity).
In case row dose not exist in FTS perform insert action automatically.
Arguments:
dbInTransaction(connectionName) → Boolean
static
Check database are used in current endpoint context and DB transaction is already active
Arguments:
-
connectionName
(String)
dbCommit(connectionNameopt) → Boolean
static
Commit active database transaction if any.
In case connectionName
is not passed will commit all active transactions for all connections.
Return true
if transaction is comitted, or false
if database not in use or no active transaction.
Arguments:
-
[connectionName]
(String)
dbRollback(connectionNameopt) → Boolean
static
Rollback active database transaction if any.
In case connectionName
is not passed will rollback all active transactions for all connections.
Return true
if transaction is rollback'ed, or false
if database not in use or no active transaction.
Arguments:
-
[connectionName]
(String)
dbStartTransaction(connectionName) → Boolean
static
Start a transaction for a specified database. If database is not used in this context will
create a connection to the database and start transaction.
For Oracle with DBLink first statement to DBLink'ed table must be
either update/insert/delete or you MUST manually start transaction
to prevent "ORA-01453: SET TRANSACTION be first statement"
Arguments:
-
connectionName
(String)
- Starting from 1.11 this property ignored (always TRUE)
preventDefault() static
:before
event handler. Call to prevent default method handler.
In this case developer are responsible to fill response object, otherwise HTTP 400 is returned.
registerEndpoint(endpointName, handler, requireAuthenticationopt) static
Arguments:
Example
// Write a custom request body to file FIXTURES/req and echo file back to client
// @param {THTTPRequest} req
// @param {THTTPResponse} resp
//
function echoToFile(req, resp) {
var fs = require('fs');
fs.writeFileSync(FIXTURES + 'req', req.read('bin'));
resp.statusCode = 200;
resp.writeEnd(fs.readFileSync(FIXTURES + 'req', {encoding: 'bin'}));
}
App.registerEndpoint('echoToFile', echoToFile);
addAppLevelMethod(methodName) static
Arguments:
-
methodName
(String)
- Deprecated:
- Use
App.registerEndpoint
instead
- Use
serviceMethodByPassAuthentication(methodName) static
Arguments:
-
methodName
(String)
- Deprecated:
- Use
App.registerEndpoint
instead
- Use
resolveStatic(aRequestedFile) → String protected static
model/
- resolve it to model public folder
else - to inetPub
folder.
Will return '' in case of error (filePath not under inetPub
or model/
) to prevent ../../ attack
Arguments:
-
aRequestedFile
(String)
globalCacheGet(key) → String static
Return '' (empty string) in case key not present in cache.
Arguments:
-
key
(String)
 Key to retrive
globalCachePut(key, value) static
Arguments:
authFromRequest() → Boolean static
Return true if success
els(entityCode, methodCode) → boolean static
Check Entity-Level-Security for specified entity/method
if App.els('uba_user', 'insert'){
// do something
}
Arguments:
getUISettings() → string static
deleteFromFTSIndex(entityName, instanceID) static
instanceID
of entity entityName
(mixin fts
must be enabled for entity)
Arguments:
updateFTSIndex(entityName, instanceID) static
instanceID
of entity entityName
(mixin fts
must be enabled for entity).
In case row dose not exist in FTS perform insert action automatically.
Arguments:
dbInTransaction(connectionName) → Boolean static
Arguments:
-
connectionName
(String)
dbCommit(connectionNameopt) → Boolean static
connectionName
is not passed will commit all active transactions for all connections.
Return true
if transaction is comitted, or false
if database not in use or no active transaction.
Arguments:
-
[connectionName]
(String)
dbRollback(connectionNameopt) → Boolean static
connectionName
is not passed will rollback all active transactions for all connections.
Return true
if transaction is rollback'ed, or false
if database not in use or no active transaction.
Arguments:
-
[connectionName]
(String)
dbStartTransaction(connectionName) → Boolean static
For Oracle with DBLink first statement to DBLink'ed table must be either update/insert/delete or you MUST manually start transaction to prevent "ORA-01453: SET TRANSACTION be first statement"
Arguments:
-
connectionName
(String)