UNPKG

nuki-web-api

Version:

Node.js implementation (using promises) of the Nuki Web API

144 lines (108 loc) 6.62 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Nuki.js - Documentation</title> <script src="scripts/prettify/prettify.js"></script> <script src="scripts/prettify/lang-css.js"></script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css"> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> </head> <body> <input type="checkbox" id="nav-trigger" class="nav-trigger" /> <label for="nav-trigger" class="navicon-button x"> <div class="navicon"></div> </label> <label for="nav-trigger" class="overlay"></label> <nav> <li class="nav-link nav-home-link"><a href="index.html">Home</a></li><li class="nav-heading">Classes</li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="Nuki.html">Nuki</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Nuki.html#.module.exports.getAccount">module.exports.getAccount</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Nuki.html#.module.exports.getBrand">module.exports.getBrand</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Nuki.html#.module.exports.getModel">module.exports.getModel</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Nuki.html#.module.exports.getNotification">module.exports.getNotification</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Nuki.html#.module.exports.getSmartlock">module.exports.getSmartlock</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Nuki.html#.module.exports.getSmartlockAuth">module.exports.getSmartlockAuth</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Nuki.html#.module.exports.getSmartlockAuths">module.exports.getSmartlockAuths</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Nuki.html#.module.exports.getSmartlockLogs">module.exports.getSmartlockLogs</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Nuki.html#.module.exports.getSmartlocks">module.exports.getSmartlocks</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Nuki.html#.module.exports.getSmartlockUsers">module.exports.getSmartlockUsers</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Nuki.html#.module.exports.getSubscription">module.exports.getSubscription</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Nuki.html#.module.exports.setAction">module.exports.setAction</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Nuki.html#.module.exports.updateSmartlock">module.exports.updateSmartlock</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Nuki.html#_req">_req</a></span></li> </nav> <div id="main"> <h1 class="page-title">Nuki.js</h1> <section> <article> <pre class="prettyprint source linenums"><code>'use strict'; const _request = require('request-promise'); /** * The constructor for a connection to the Nuki Web API. * * @class Nuki Web * @author Zefau &lt;zefau@mailbox.rg> * @license MIT * @version 2.0.0 * * @param {String} token Token for authentication * @param {Object} [options] Further options * @param {String} [options.url] Override default API url (which is https://api.nuki.io) * @returns {Nuki} * * @constructor * @description Based on Nuki Web API v.1.1.1 as of 30.08.2018 * @see https://developer.nuki.io/page/nuki-web-api-111/3/ * */ let Nuki = function Nuki(token, options) { if (!(this instanceof Nuki)) return new Nuki(token); if (!token) throw new Error('API Token required! Please check the arguments!'); this.token = token; options = options || {} this.url = options.url || 'https://api.nuki.io'; }; /** * This function requests an action. * * @memberof Nuki * @param {String|Array} paths Paths to attach to URL * @param {Object} [parameters={}] Parameters to attach to URL ({key: value} turns to ?key=value respectively &amp;key=value) * @param {String} [method=GET] Method to use [GET, POST, PUT, DELETE] * @param {String} [body={}] Body data to send * @param {String} [options={}] Additional options to use * @returns {Promise&lt;Object>} */ Nuki.prototype._req = function _req(paths, parameters, method, body, options) { paths = (paths ? ('/' + (typeof paths === 'string' ? paths : paths.join('/'))) : ''); let params = Object.keys(parameters || {}); params = params.length ? '?' + params.map(function(key) {return key + '=' + parameters[key]}).join('&amp;') : ''; return _request(Object.assign(options || {}, { url: this.url + paths + params, method: method || 'GET', headers: {'Authorization': 'Bearer ' + this.token}, body: body || {}, json: true })); }; Nuki.prototype = Object.assign( {}, Nuki.prototype, require('./Account'), require('./Notification'), require('./OpenerIntercomBrand'), require('./OpenerIntercomModel'), require('./Smartlock'), require('./SmartlockAuth'), require('./SmartlockLog'), require('./Subscription') ); module.exports = Nuki; </code></pre> </article> </section> </div> <br class="clear"> <footer> Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Sun Sep 08 2019 22:07:49 GMT+0200 (GMT+02:00) using the Minami theme. </footer> <script>prettyPrint();</script> <script src="scripts/linenumber.js"></script> </body> </html>