GithubHelp home page GithubHelp logo

tehshrike / leanpub Goto Github PK

View Code? Open in Web Editor NEW

This project forked from survivejs/leanpub

0.0 3.0 0.0 15 KB

Simple Node.js client for Leanpub API (MIT)

License: MIT License

JavaScript 100.00%

leanpub's Introduction

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.

leanpub's People

Contributors

bebraw avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.