https://github.com/shimohq/shimo.js
[WIP] Official Shimo client for Node.js
https://github.com/shimohq/shimo.js
Last synced: about 1 month ago
JSON representation
[WIP] Official Shimo client for Node.js
- Host: GitHub
- URL: https://github.com/shimohq/shimo.js
- Owner: shimohq
- License: mit
- Created: 2015-10-10T03:22:33.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2018-05-15T07:44:42.000Z (over 7 years ago)
- Last Synced: 2025-08-19T16:08:20.805Z (about 2 months ago)
- Language: JavaScript
- Homepage: http://shimohq.github.io/doc/
- Size: 25.4 KB
- Stars: 42
- Watchers: 16
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Shimo.js
Official Shimo client for Node.js. Supports Node.js >= 0.10.[](https://travis-ci.org/shimohq/shimo.js)
[](https://david-dm.org/shimohq/shimo.js)## Links
[Shimo Open API Documentation](http://shimohq.github.io/doc)
## Install
```shell
npm install shimo
```## Usage
```javascript
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:
```javascript
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:
```javascript
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:
```javascript
shimo.token('authorization', {
code: req.query.code,
redirect_uri: 'https://yourapp.tld/oauth/callback'
});
```### Shimo#authorization
Getting authorization endpoint url.
Example:
```javascript
// 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:
```javascript
shimo.on('accesstoken_change', function (accessToken) { });
```### refreshtoken_change
When refresh token changed, the first argument is the new refresh token.
Example:
```javascript
shimo.on('refreshtoken_change', function (refreshToken) {
req.session.refreshToken = refreshToken;
});
```