/thingiverse-js

Easy Thingiverse API requests for Node.js

Primary LanguageJavaScriptMIT LicenseMIT

npm version Build status Dependencies

Use

This library is a wrapper over the excellent got HTTP request library. We've added some Thingiverse-specific conveniences, but all features of got will work here. Please review their documentation.

npm install thingiverse-js
const thingiverse = require('thingiverse-js');
const token = 'abcdefgh12345';

thingiverse('users/me', { token }).then(res => {
  console.log('My location is "%s" on Thingiverse', res.body.location);
  return thingiverse.patch(`users/${res.body.name}`, {
    token,
    body: { location: 'New Caprica' }
  });
}).then(res => {
  console.log('Now my location is "%s" on Thingiverse', res.body.location);
}).catch(err => {
  console.log(err);
  console.log(thingiverse.getError(err.response));
});

API

In addition to the standard got methods, we've added some conveniences.

thingiverse(path, opts)

Returns a Promise for the API request. This Promise is the return value from a got request.

path

Should be a string containing the endpoint you're calling (/users/me for example). The leading slash is optional.

opts

Should be an object containing, at least, the OAuth access token set to the property token. Other got options may be added.

thingiverse.getAuthorizeUrl(opts)

Returns a string containing the URL that will allow your users to authorize your application.

opts

Type: object, string

As an object, this parameter must contain your client_id in the form { query: { client_id: 'abcdef123' } }. Other got options may be added. As a string, simply pass your client_id.

thingiverse.getError(response)

Returns a string containing the error that occurred in your API request, or null if none is found.

response

Type: object

Should be the response object returned from an API request (usually, err.response).

thingiverse.getAccessToken(opts)

Builds a request for exchanging an OAuth authorization code for an access token. Returns a Promise.

opts

Type: object

At a minimum, this object must contain your client_id, client_secret, and the code returned after a user authorizes your application. Use the form:

{
  body: {
    client_id: 'abcdef123',
    client_secret: 'tuvwxzy789',
    code: 'mnopqrs456'
  }
}