App

App

UnityBase application. Accessible via singleton instance App.

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 execution
  • endpointName + ':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:
  1. endpointName (String)
  2. handler (function)
  3. [requireAuthentication=true] (boolean)
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:
  1. methodName (String)
Deprecated:

serviceMethodByPassAuthentication(methodName) static

Arguments:
  1. methodName (String)
Deprecated:

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:
  1. 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:
  1. key (String)  Key to retrive

globalCachePut(key, value) static

Put value to global cache.
Arguments:
  1. key (String)  Key to put into
  2. value (String)  Value To put into this key

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:
  1. entityCode (String)
  2. methodCode (String)

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:
  1. entityName (String)
  2. instanceID (Number)

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:
  1. entityName (String)
  2. instanceID (Number)

dbInTransaction(connectionName)Boolean static

Check database are used in current endpoint context and DB transaction is already active
Arguments:
  1. 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:
  1. [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:
  1. [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:
  1. connectionName (String)