shimo

Official Shimo client for Node.js. Supports Node.js >= 0.10.

Usage no npm install needed!

<script type="module">
  import shimo from 'https://cdn.skypack.dev/shimo';
</script>

README

Shimo.js

Official Shimo client for Node.js. Supports Node.js >= 0.10.

Build Status Dependency Status

Links

Shimo Open API Documentation

Install

npm install shimo

Usage

var Shimo = require('shimo');
var shimo = new Shimo({ version: 'v2' });

Shimo constructor accepts an option, where:

name required default description
version true API version
protocol false https API protocol
host false api.shimo.im API host
clientId false null Client id, used for requesting tokens
clientSecret false null Client secret, used for requesting tokens
accessToken false null Access Token, used for access private resources
refreshToken false null Refresh Token, used for exchanging access token

API supports both Node-style callback and Bluebird Proimse:

shimo.get('users/me', function (err, user) {});
shimo.get('users/me').then(function (user) {});

accessToken is required in order to access private resources. If accessToken is omitted or invalid (getting 401 error when accessing APIs), refreshToken, if present, would be used to exchange a new access token and refresh token.

API

Shimo#:httpMethod

Invoking Shimo Open API. Accepts three arguments:

name required description
path true API endpoint, e.g. 'users/me'
option false API options, e.g. { qs: { id: 12 }, body: { title: 'new' } }
callback false Callback function. If omitted, a promise will be returned

Example:

shimo.post('files', { body: { name: 'Untitled Document' } });

Shimo#token

Requesting tokens. Accepts three arguments:

name required description
grant type true Grant type, e.g. 'refresh_token', 'password'
option false Token options, e.g. { scope: 'read' }
callback false Callback function. If omitted, a promise will be returned

Example:

shimo.token('authorization', {
  code: req.query.code,
  redirect_uri: 'https://yourapp.tld/oauth/callback'
});

Shimo#authorization

Getting authorization endpoint url.

Example:

// redirect user to the authorization page
res.redirect(shimo.authorization({
  redirect_uri: 'https://yourapp.tld/oauth/callback'
}));

Events

Shimo extends EventEmitter and will emit the following events:

accesstoken_change

When access token changed, the first argument is the new access token.

Example:

shimo.on('accesstoken_change', function (accessToken) { });

refreshtoken_change

When refresh token changed, the first argument is the new refresh token.

Example:

shimo.on('refreshtoken_change', function (refreshToken) {
  req.session.refreshToken = refreshToken;
});