patreon.js

JS wrapper for the Patreon ReST API

Usage no npm install needed!

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

README

patreon.js

patreon.js is an NPM JS package that makes interacting with the Patreon ReST API as easy as pie.

Features

Getting started

First of all, install the patreon.js package via NPM:

npm install patreon.js

If you already have a an access token for the Patreon API, you will most likely want to start with creating a PatreonAPI instance like this:

const Patreon = require('patreon.js');

 // replace xxx with your access token or load it from a configuration
const api = new Patreon.PatreonAPI('xxx');

You can then use the PatreonAPI instance to make requests to the Patreon API.

For example, you can fetch the current user and print his name to the console like this:

api.getCurrentUser()
  .then(user => {
    console.log(user.firstName + ' ' + user.lastName);
  })
  .catch(console.error);

Some data models offer further requests to simplify request chaining. For example, you might want to print all pledge id's of the user's first Campaign to the console:

api.getCurrentUserCampaigns()
  .then(campaigns => campaigns[0].getAllPledges()) // request-chain
  .then(pledges => {
    let pledgeIds = pledges.map(pledge => pledge.patron.id);
    console.log(pledgeIds);
  })
  .catch(console.error);

Some requests like the PatreonAPI.getCampaignPledges(campaignId) are paginated. That means that you will get the data out of it in bunches:

api.getCampaignPledges('campaignId')
  .then(page => {
    console.log(page.contents); // page.contents contains an array of pledges
    if (page.hasNext()) { // check whether there is a next page
      page.getNext() // fetch the next page
        .then(nextPage => {
          // do something with the second page...
        })
        .catch(console.error);
    }
  })
  .catch(console.error);

Useful links

License

This project is released under the MIT license. A copy of the license is included in the LICENSE file in this package.