UNPKG

actionhero

Version:

actionhero.js is a multi-transport API Server with integrated cluster capabilities and delayed tasks

355 lines (325 loc) 8.78 kB
# The API Object ```javascript var api = { // STATE VARIABLES // running: true, initialized: true, shuttingDown: false, // METADATA // bootTime: 1421016104943, env: 'development', id: '10.0.1.5', actionheroVersion: '10.0.0', projectRoot: '/Users/evantahler/Dropbox/Projects/actionhero', _startingParams: { configChanges: { general: [] } }, // DEVELOPER MODE // watchedFiles: [], watchFileAndAct: [Function], unWatchAllFiles: [Function], loadConfigDirectory: [Function], // SERVER COMMAND AND CONTROL // commands:{ initialize: [Function], start: [Function], stop: [Function], restart: [Function] }, // COMAND AND CONTROL // _self:{ initializers: {}, startingParams: { configChanges: [] }, // arrays containing init/stop/start methods configInitializers: [], loadInitializers: [], startInitializers: [], stopInitializers: [] }, // INITIALZER DEFAULTS // initializerDefaults:{ load: 1000, start: 1000, stop: 1000 }, // UTILS // utils:{ hashMerge: [Function], isPlainObject: [Function], arrayUniqueify: [Function], recursiveDirectoryGlob: [Function], objClone: [Function], collapseObjectToArray: [Function], getExternalIPAddress: [Function], parseCookies: [Function], parseIPv6URI: [Function] }, // CONFIG // config: { general: { apiVersion: '0.0.1', serverName: 'actionhero API', serverToken: 'change-me', welcomeMessage: 'Hello! Welcome to the actionhero api', cachePrefix: 'actionhero:cache:', lockPrefix: 'actionhero:lock:', lockDuration: 10000, developmentMode: false, simultaneousActions: 5, disableParamScrubbing: false, filteredParams: [], missingParamChecks: [Object], directoryFileType: 'index.html', defaultMiddlewarePriority: 100, paths: [Object], startingChatRooms: [Object], plugins: [] }, errors: { _toExpand: false, missingParams: [Function], unknownAction: [Function], unsupportedServerType: [Function], serverShuttingDown: [Function], tooManyPendingActions: [Function], fileNotFound: [Function], fileNotProvided: [Function], fileReadError: [Function], verbNotFound: [Function], verbNotAllowed: [Function], connectionRoomAndMessage: [Function], connectionNotInRoom: [Function], connectionAlreadyInRoom: [Function], connectionRoomHasBeenDeleted: [Function], connectionRoomNotExist: [Function], connectionRoomExists: [Function], connectionRoomRequired: [Function] }, logger: { transports: [Object] }, redis: { channel: 'actionhero', rpcTimeout: 5000, pkg: 'fakeredis' }, routes: {}, servers: { socket: [Object], web: [Object], websocket: [Object] }, stats: { writeFrequency: 1000, keys: [Object] }, tasks: { scheduler: false, queues: [], timeout: 5000, minTaskProcessors: 0, maxTaskProcessors: 0, checkTimeout: 500, maxEventLoopDelay: 5, toDisconnectProcessors: true, redis: [Object] } }, // PIDS // pids: { pid: 26168, path: '/Users/evantahler/Dropbox/Projects/actionhero/pids', sanitizeId: [Function], title: 'actionhero-10.0.1.5', writePidFile: [Function], clearPidFile: [Function] }, // LOGGER // logger: {}, log: [Function], // EXCEPTION HANDLERS // exceptionHandlers:{ reporters: [ [Function] ], report: [Function], loader: [Function], action: [Function], task: [Function] }, // REDIS // redis:{ clusterCallbaks: {}, clusterCallbakTimeouts: {}, subscriptionHandlers:{ do: [Function], doResponse: [Function], chat: [Function] }, status:{ client: true, subscriber: true, subscribed: true, calledback: true }, initialize: [Function], subscribe: [Function], publish: [Function], doCluster: [Function], respondCluster: [Function], client: { }, subscriber: { }, // CACHE // cache:{ redisPrefix: 'actionhero:cache:', lockPrefix: 'actionhero:lock:', lockDuration: 10000, lockName: '10.0.1.5', lockRetry: 100, keys: [Function], locks: [Function], size: [Function], clear: [Function], dumpWrite: [Function], dumpRead: [Function], saveDumpedElement: [Function], load: [Function], destroy: [Function], save: [Function], lock: [Function], unlock: [Function], checkLock: [Function] }, // STATS // stats:{ // timer: null, // pendingIncrements: {}, increment: [Function], // writeIncrements: [Function], get: [Function], getAll: [Function] }, // CONNECTIONS // connections:{ createCallbacks: {}, destroyCallbacks: {}, allowedVerbs:[ 'quit', 'exit', 'documentation', 'paramAdd', 'paramDelete', 'paramView', 'paramsView', 'paramsDelete', 'roomAdd', 'roomLeave', 'roomView', 'detailsView', 'say' ], connections: {}, // apply: [Function], // applyCatch: [Function], addCreateCallback: [Function], addDestroyCallback: [Function] }, connection: [Function], // prototype // ACTIONS // actions:{ actions: {}, preProcessors: {}, postProcessors: {}, addPreProcessor: [Function], addPostProcessor: [Function], // validateAction: [Function], // loadFile: [Function] }, actionProcessor: [Function], // prototype // PARAMS // params:{ globalSafeParams: [ 'file', 'apiVersion', 'callback', 'action' ], // buildPostVariables: [Function], postVariables: [] }, // SERVERS // genericServer: {}, // prototype servers: { servers: [] }, // ROUTES // routes: { routes: { get: [Object], post: [Object], put: [Object], patch: [Object], delete: [Object] }, // verbs: [], // processRoute: [Function], // matchURL: [Function], // loadRoutes: [Function], }, // STATIC FILES // staticFile:{ // path: [Function], // get: [Function], sendFile: [Function], // sendFileNotFound: [Function], // checkExistence: [Function], // logRequest: [Function] }, // CHAT // chatRoom:{ keys: { rooms: 'actionhero:chatRoom:rooms', members: 'actionhero:chatRoom:members:' }, messageChannel: '/actionhero/chat/chat', joinCallbacks: {}, leaveCallbacks: {}, sayCallbacks: {}, addJoinCallback: [Function], addLeaveCallback: [Function], addSayCallback: [Function], broadcast: [Function], generateMessagePayload: [Function], incomingMessage: [Function], add: [Function], destroy: [Function], exists: [Function], sanitizeMemberDetails: [Function], roomStatus: [Function], generateMemberDetails: [Function], addMember: [Function], removeMember: [Function], // handleCallbacks: [Function], }, // RESQUE // resque: { queue: {}, multiWorker: {}, scheduler: null, // connectionDetails: {}, // startQueue: [Function], // startScheduler: [Function], // stopScheduler: [Function], // startMultiWorker: [Function], // stopMultiWorker: [Function], }, // TASKS // tasks:{ tasks: {}, jobs: {}, // loadFile: [Function], // jobWrapper: [Function], // validateTask: [Function], enqueue: [Function], enqueueAt: [Function], enqueueIn: [Function], del: [Function], delDelayed: [Function], scheduledAt: [Function], timestamps: [Function], delayedAt: [Function], allDelayed: [Function], // enqueueRecurrentJob: [Function], // enqueueAllRecurrentJobs: [Function], stopRecurrentJob: [Function], details: [Function] }, // DOCUMENATION // doumentation: {} }; ``` By now you will have noticed that most sections of actionhero are initilized with access to the `api` object. The `api` object is the top-level container/namespace for all of actionhero's data and methods. We use the `api` object to avoide polluting any global namespaces. The api object is availalbe to all parts of actionhero to share data and state. Feel free to modify or add too the api object as you see fit, but be mindful of the data it already contains. Collections that you are reccomended not leave unmodifeid are un-expanded `[Object]`s and/or commented out.