/* * Copyright 2013 Jive Software * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Main entrypoint of the Jive SDK API.<br> * Example Usage: * <pre> * var jive = require('jive-sdk'); * jive.logger.info('Welcome!'); * </pre> * @module api */ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// // logging var logger = require('log4js').getLogger('jive-sdk'); logger.setLevel(process.env['jive_logging_level'] || 'INFO'); /** * Instance of the default logger. * @property {function} debug example: require('jive-sdk').logger.debug('Debug message'); * @property {function} info example: require('jive-sdk').logger.debug('Info message'); * @property {function} warn example: require('jive-sdk').logger.debug('Warn message'); * @property {function} fatal example: require('jive-sdk').logger.debug('Fatal message'); * @property {function} error example: require('jive-sdk').logger.debug('Error message'); * @type {Logger} */ exports.logger = logger; /** * An object containing the available default persistence strategies.<br> * <br><br> * Example Usage:<br> * <pre> * var jive = require('jive-sdk'); * var persistence = new jive.persistence.memory(); * persistence.save( ... ); * </pre> * @type {Object} * @property {filePersistence} file - File based persistence. @see {@link filePersistence} persistence. * @property {memoryPersistence} memory - Memory based persistence @see {@link memoryPersistence} persistence. */ exports.persistence = { 'file' : require('./lib/persistence/file'), 'memory' : require('./lib/persistence/memory') }; /** * An object containing the available default scheduling strategy types.<br> * <br><br> * Example Usage:<br> * <pre> * var jive = require('jive-sdk'); * var scheduler = new jive.scheduler.memory(); * ... * ... * scheduler.schedule( ... ); * </pre> * @type {memoryScheduler} */ exports.scheduler = { 'memory' : require('./lib/scheduler/scheduler') }; /** * An object containing constant string values. @see {@link constants}. * @type module:constants */ exports.constants = require('./lib/util/constants.js'); /** * API for manipulating external streams and tiles (instances and definitions). * <br><br> * Example Usage:<br> * <pre> * var jive = require('jive-sdk'); * jive.extstreams.findByID( ... ); * jive.extstreams.definitions.findByID( ... ); * </pre> * @type module:extstreamsInstances * @property {extstreamsDefinitions} definitions - Stream definitions API. */ exports.extstreams = require('./lib/tile/extstreams'); exports.extstreams['definitions'] = require('./lib/tile/extstreamsDefinitions'); /** * API for manipulating tiles (instances and definitions). * <br> * Example Usage:<br> * <pre> * var jive = require('jive-sdk'); * jive.tiles.findByID( ... ); * jive.tiles.definitions.findByID( ... ); * </pre> * @type module:tileInstances * @property {tilesDefinitions} definitions - Tiles definitions API. */ exports.tiles = tiles = require('./lib/tile/tiles'); exports.tiles['definitions'] = require('./lib/tile/tilesDefinitions'); /** * API for managing events. * @type module:events */ exports.events = require( './lib/event/events'); /** * Useful general purpose utility functions. * <br> * Example Usage:<br> * <pre> * var jive = require('jive-sdk'); * var guid = jive.util.guid(); * </pre> * @type module:jiveutil */ exports.util = require('./lib/util/jiveutil'); /** * @deprecated * @type {Object} */ exports.oauthUtil = require('./lib/util/oauth'); /** * API for managing jive communities. * <br><br> * Example Usage:<br> * <pre> * var jive = require('jive-sdk'); * jive.community.findByTenantID( '8sakjhdfee1' ).then( function(community) { * jive.logger.info('Found',JSON.stringify(community)); * }); * </pre> * @type module:community */ exports.community = require('./lib/community/community'); /** * API For managing service webhooks * @type module:webhooks */ exports.webhooks = require('./lib/webhook/webhooks'); /** * API for managing tasks. * @type module:tasks */ exports.tasks = require('./lib/task/tasks'); var createDefaultMethods = function( methods, message ) { var object = {}; methods.forEach( function( method ) { var methodFunction = function() { throw new Error(message); }; object[method] = methodFunction; }); return object; }; /** * Object that contains nominal API configuration state. * @type {Object} * @property {object} persistence - Configured persistence strategy. * @property {object} scheduler - Configured scheduler strategy. * @property {object} config - Configuration options. */ exports.context = { 'persistence' : createDefaultMethods( [ 'find', 'save', 'remove', 'findByID'], 'Undefined persistence'), 'scheduler' : createDefaultMethods( [ 'init', 'schedule', 'unschedule', 'isScheduled', 'getTasks', 'shutdown'], 'Undefined scheduler'), 'config' : {} }; //// this is PURELY for documentation purposes! we might need to reorganize this in the near future /** * API for managing an SDK service. * @name service * @memberof module:api * @type module:service */