punkapi-javascript-wrapper v1.0.2
PunkAPI Javascript Wrapper
A JS wrapper for the BrewDog Punk API V2 - an API for retrieving data about BrewDog's beers built by @samjbmason.
Installation
There are 3 ways to install the PunkAPI Javascript Wrapper.
Clone
Clone this repo into your project with:
git clone https://github.com/brettdewoody/punkapi-javascript-wrapper.gitNPM / Yarn
Install via npm or yarn with:
npm install --save punkapi-javascript-wrapperor
yarn add punkapi-javascript-wrapperBower
Install via bower with:
bower install punkapi-javascript-wrapperUsage
There are several ways the wrapper can be used. The wrapper is available as a library script (option #1), can be imported with Webpack into a bundled script for the browser (option #2), or can be imported into Node (option #3).
Library (Option #1)
Include the compiled library script on your page with:
<script type="text/javascript" src="/path/to/punkapi-javascript-wrapper/dist/punkapi-javascript-wrapper.js"></script>Then create a new instance of the PunkAPIWrapper and get to work:
const punkAPI = new PunkAPIWrapper()Webpack for the Browser (Option #2)
Import PunkAPIWrapper in your entry file with
const PunkAPIWrapper = require('/path/to/punkapi-javascript-wrapper/src/punkapi-javascript-wrapper.js')Then create a new instance of PunkAPIWrapper and get to work:
const punkAPI = new PunkAPIWrapper()Finally webpack your code using your Webpack config.
Node (Option #3)
The same implementation as Option #2.
Import PunkAPIWrapper in your entry file with
const PunkAPIWrapper = require(punkapi-javascript-wrapper)Then create a new instance of PunkAPIWrapper and get to work:
const punkAPI = new PunkAPIWrapper()Here's a Glitch demo showing how to use the wrapper in Node and the results:
- A random beer - https://punkapi-javascript-wrapper-demo.glitch.me/beer/random
- A specific beer - https://punkapi-javascript-wrapper-demo.glitch.me/beer/1
- Strong beers (using a URL param of ?abv_gt=8) - https://punkapi-javascript-wrapper-demo.glitch.me/beer?abv_gt=8
Methods
The wrapper provides 5 methods for retrieving all the BrewDog-related info you want:
punkAPI.getBeer(:id)- a specific beerpunkAPI.getBeers(:options)- beers matching the optionspunkAPI.getRandom()- a single random beerpunkAPI.getRateLimit()- total number of requests allowed to the PunkAPI in an hourpunkAPI.getRateLimitRemaining()- number of remaining requests allowed to the PunkAPI in the hour
Note: All methods query the BrewDog Punk API using an asynchronous fetch request and return a Promise. This means you'll need to use .then() to wait for the response and provide a callback for handling the returned data.
const punkAPI = new PunkAPIWrapper()
const randomBeer = PunkAPI.getRandom()
randomBeer.then(beer => {
alert(beer[0].name)
})getBeer(:id)
Returns an array of length 1 with the beer matching an ID of :id. :id should be a number corresponding to the ID of the desired beer.
Example: const beer1 = punkAPI.getBeer(1)
getBeers(:options)
Returns an array with beers matching the :options. :options is an object consisting of available filters (below).
Example: const strongBeers = punkAPI.getBeers({'abv_gt': 8})
For the most up-to-date filters please see the PunkAPI docs.
getRandom()
Returns an array of length 1 with a random beer
Example: const randomBeer = punkAPI.getRandom()
getRateLimit()
Returns a number displaying the rate limit. This is currently set to 3600 requests per hour per IP address.
Example: const rateLimit= punkAPI.getRateLimit()
getRateLimitRemaining()
Returns a number displaying the available number of requests remaining for this IP address.
Example: const rateLimitRemaining= punkAPI.getRateLimitRemaining()
Examples
Get a random beer
const randomBeer = PunkAPI.getRandom()
randomBeer.then(beer => {
alert(beer[0].name)
})Get strong beers
const strongBeers = PunkAPI.getBeers({'abv_gt': 8})
strongBeers.then(beers => {
beers.forEach(beer => {
alert(beer.name)
})
})Get remaining request limit const remainingRequests = PunkAPI.getRateLimitRemaining()
remainingRequests.then(requests => {
alert(requests)
})Contributing
Please see the Contributing Guide.
License
This project is licensed under the terms of the MIT license.