Home Reference Source Test Repository

src/People.js

'use strict'

/** @ignore */
const CiscoSpark = require('./CiscoSpark')

/**
 * Spark People
 * @see https://developer.ciscospark.com/resource-people.html
 */
class People extends CiscoSpark {
  /**
   * @constructor
   * @param {string} [accessToken] - Your Cisco Spark accesstoken
   * @param {string} [userAgent] - User Agent request header
   */
  constructor (accessToken, userAgent) {
    super(accessToken, userAgent, 'https://api.ciscospark.com/v1/people')
    /** @private */
    this.idName = 'personId'
  }

  /**
   * List People
   * List people in your organization. For most users, either the email or a Display Name parameters are required.
   * Admin users can omit these fields and list all users in their organization.
   *
   * @override
   * @param {Object} params - see https://developer.ciscospark.com/endpoint-people-get.html
   * @param {requestCallback} callback
   */
  list (params, callback) {
    if (typeof params === 'string') {
      params = { email: params }
    } else if (!params || !params.email || !params.displayName) {
      return callback(new Error('Invalid Params. Require email or displayName'))
    }
    return super.list(params, callback)
  }

  /**
   * Get my own details
   * @param {requestCallback} callback
   */
  me (callback) {
    return this.get('me', callback)
  }
}

module.exports = People