npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

leanpub

v0.1.4

Published

Simple client for Leanpub API

Downloads

98

Readme

build status

leanpub - Simple client for Leanpub API

This library provides a simple wrapper for Leanpub API. Before starting to use it, you will need to generate an API key for yourself.

API

As the JavaScript API is missing plenty of functionality still, I've outlined curl based alternatives below. The idea is that these will be converted to JavaScript as time permits. PRs are welcome!

Connecting to the API

To quote the official documentation:

  1. Go to your author dashboard
  2. Click on the button that says "Enable the Leanpub API" and copy the API key. You are going to need it to access the API.

The API depends on your book slug: https://leanpub.com/SLUG.

var leanpub = require('leanpub');
var client = leanpub({
  // optional. without this most operations won't work
  // or return partial data
  apiKey: process.env.LEANPUB,
  bookSlug: process.env.SLUG
});

...

// the API relies on optional callbacks. Example:
client.previewFull(function(err, d) {
  if(err) {
   return console.error(err);
  }

  console.log(d);
});

Previewing

There are a few ways to generate a preview version of your book:

...

client.previewFull();
client.previewSubset(); // preview based on Subset.txt

// Not supported yet. PR welcome.
// See https://leanpub.com/help/api#previewing-and-publishing for reference.
// client.previewSingle(...);

Publishing

It is possible to publish a book silently or with email:

...

client.publish(); // silent publish
client.publish({
  releaseNotes: 'Please let me know what you think'
});

Getting Job Status

To know how your current job is progressing, use:

...

client.jobStatus(function(err, d) {
  if(err) {
    return console.error(err);
  }

  console.log(d);
});

Getting Book Summary Information

Leanpub provides both public and private (download urls etc.) information about books:

...

client.bookSummary(function(err, d) {
  if(err) {
    return console.error(err);
  }

  console.log(d);
});

Getting the Latest Version of the Book

You can get book urls through summary information. These should be kept secret. You can book files like this:

...

// not implemented yet. PR welcome. This should stream to the given file
//client.latestVersion({format: 'pdf', output: 'yourbook.pdf'}, cb);

Getting Sales Data

Sales data can be fetched in either JSON or XML like this:

...

client.sales({
  format: 'xml' // defaults to json
}, cb);

Individual sales can be fetched like this:

...

client.individualSales({
  format: 'xml', // defaults to json
  page: 2 // defaults to page 1, each page contains 50 sales
}, cb);

Coupons

Existing coupons can be fetched like this:

...

client.coupons({
  format: 'xml' // defaults to json
}, cb);

They can be created through POST:

...

client.createCoupon({
  couponCode: 'testcoupon', // required
  packageDiscounts: [ // required
    {
      discountedPrice: 10,
      packageSlug: 'book'
    }
  ],
  startDate: new Date(), // required
  endDate: new Date(), // optional
  maxUses: 1, // required
  note: 'test coupon', // optional
  suspended: false // optional, defaults to false
}, cb);

And updated through PUT:

...

client.updateCoupon({
  couponCode: 'testcoupon', // required
  suspended: true
}, cb);

Alternatives

License

leanpub is available under MIT. See LICENSE for more details.