1.0.11 • Published 10 years ago

rate-limiter-api v1.0.11

Weekly downloads
3
License
MIT
Repository
github
Last release
10 years ago

Rate Limiter API

A simple library to easily manage rate limits of APIs without any hassles.

Rate Limiter API image

All Contributors MIT License npm version Join the chat at https://gitter.im/abhisekp/rate-limiter-api

Table of Contents

Usage

Browser

<script src="https://cdn.rawgit.com/abhisekp/rate-limiter-api/master/dist/rate-limiter-api.js"></script>

<script type="text/javascript">
  var rateLimiter = RateLimiterAPI()
</script>

NodeJS

$ {sudo -H} npm install -S rate-limiter-api
import RateLimiterAPI from 'rate-limiter-api'

Public Interface

  • rateLimiter = RateLimiterAPI({threshold: 5})
  • rateLimiter.limit(requestHandler) => Promise
    • rateLimiter.updateRateLimits on success to update rates
    • requestHandler(responseHandler) on success to continue

import RateLimiterAPI from 'rate-limiter-api'

const rateLimiter = RateLimiterAPI({
  threshold: 5, // leave `threshold` amount of api requests intact (minimum: 1)
})

Pass an optional threshold value which would limit the total rate limits till the threshold is reached in the current session pulse till rate reset.


const request = rateLimiter.limit(requestHandler) //=> Promise

function requestHandler(responseHandler) {
  fetch('https://api.example.com/get')
    .then((response) => {
      rateLimiter.updateRateLimits({
        rateLimit: response.headers.rateLimit,
        rateRemaining: response.headers.rateRemaining,
        rateReset: response.headers.rateReset,
      })

      responseHandler(null, response.body)
    })
    .catch((err) => {
      responseHandler(err)
    })
}

The limit method is passed a requestHandler which would manage the request and then call the node-style responseHandler callback (which gets passed by the RateLimiter library to the requestHandler function) after the request is successful or unsuccessful accordingly.

The request method returns a Promise.

responseHandler(Error, response)
where the first parameter is the Error object and the seconds parameter is the response.

responseHandler callback must be called to continue getting responses.

Update the rate limits i.e. {rateLimit, rateRemaining, rateReset} got from the header using updateRateLimits method.


request
  .then((response) => {
    console.dir(response, {colors:1})
  })
  .catch((error) => {
    console.error(error.message)
  })

When the request completes, the Promise resolves and can be thenable to get the response or error.

Stats

1 text file.
1 unique file.
0 files ignored.

https://github.com/AlDanial/cloc v 1.66 T=0.04 s (22.7 files/s, 2516.9 lines/s)

Languagefilesblankcommentcode
JavaScript1123762

Technologies Used

  • Babel — Transpiles modern JS to compatible and runnable JS
  • Stamp It - Composable inheritance object creation libray
  • Async JS - Utility for asynchronous functions
  • Lodash - Utility library

Help & Support

Contributors

Abhisek Pattnaik💻 🎨 📖 💡

This project follows the all-contributors specification.

All types of Contributions are Welcome :pray:

License

MIT © Abhisek Patnaik



1.0.11

10 years ago

1.0.10

10 years ago

1.0.9

10 years ago

1.0.8

10 years ago

1.0.7

10 years ago

1.0.6

10 years ago

1.0.5

10 years ago

1.0.4

10 years ago

1.0.3

10 years ago

1.0.2

10 years ago

1.0.1

10 years ago

1.0.1-0

10 years ago