UNPKG

rtm-api

Version:

Remember the Milk API Interface

102 lines (86 loc) 1.97 kB
'use strict'; /** * ### RTM Generic Response * * This Class represents a generic Response from the RTM API Server. * The `RTMError` and `RTMSuccess` Classes represent the actual failed * and successful responses from the RTM API Server. * * This Class is extended by the {@link RTMSuccess} and {@link RTMError} Classes. * @class * @alias RTMResponse */ class RTMResponse { /** * Create a new Generic RTM Response with a status of either * {@link RTMResponse.STATUS_OK} or {@link RTMResponse.STATUS_FAIL}. * @param {string} status RTM API Status * @constructor */ constructor(status) { this._status = status; } /** * The RTM Response Status * @type {string} */ get status() { return this._status; } /** * The success of the RTM Response (ie, is `true` when status is 'ok') * @type {boolean} */ get isOk() { return this._status === RTMResponse.STATUS_OK; } /** * The RTM API properties of the Response * @type {object} */ get props() { let rtn = {}; for ( let key in this ) { if ( this.hasOwnProperty(key) && key !== '_status' ) { rtn[key] = this[key]; } } return rtn; } /** * Check if the Response has the specified property * @param {string} property Property Name * @returns {boolean} */ has(property) { let parts = property.split('.'); let object = this; for ( let i = 0; i < parts.length; i++ ) { object = object[parts[i]]; if ( object === undefined ) { return false; } } return true; } /** * Get a String representation of the Response * @returns {string} */ toString() { return "[" + this._status + "]"; } } /** * RTM Status of 'ok' = successful * @type {string} * @default */ RTMResponse.STATUS_OK = "ok"; /** * RTM Status of 'fail' = error * @type {string} * @default */ RTMResponse.STATUS_FAIL = "fail"; module.exports = RTMResponse;