Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/keneucker/biketag-api

The javascript client for interacting with BikeTag games.
https://github.com/keneucker/biketag-api

api game gunjs isomorphic-javascript reddit sanity-io twitter typescript typescript-library

Last synced: 3 months ago
JSON representation

The javascript client for interacting with BikeTag games.

Awesome Lists containing this project

README

        

biketag


BikeTag Official JavaScript library




npm next version


Build states




license




Sponsors


Sponsors




Join the community on GitHub Discussions


biketag-api logo

## Installation
_This package is Isomorphic and Typescript ready_

`npm install biketag`

## How to include it in your projects

The library is a default export, as well as a named class export `BikeTagClient`. You can retrieve it from jsDeliver or npm, and it works in both the browser and nodejs.

### Browser

Using jsDelivr CDN:

```html

```

Using unpkg CDN:

```html

```

### CommonJS

import/require the module:
```ts
// Using import statement
import { BikeTagClient } from 'biketag'
```

```js
// Using require()
const { BikeTagClient } = require('biketag')
```

---

## Usage

### Instantiate with or without credentials (browser):
```js
// if you have your clientKey/clientToken to retrieve an access token automatically, you can pass those in:
const client = new biketag({
game: 'portland',
clientKey: process.env.BIKETAG_CLIENT_KEY,
clientToken: process.env.BIKETAG_CLIENT_TOKEN,
})
```

### Instantiate with or without credentials (node):
```ts
// if you have Imgur credentials: clientId and clientSecret
const client = new BikeTagClient({
game: 'portland',
imgur: {
clientId: process.env.IMGUR_CLIENT_ID,
clientSecret: process.env.IMGUR_CLIENT_SECRET,
}
})
```

### Configuration

The BikeTag API requires only the game to be set in the configuration in order to read BikeTag data. You can read more about specific configurations in the documentation:

### **⚠️ For brevity, the rest of the examples will leave out the import and/or instantiation step.**

### Get Game Information

You can get game information by providing the name.

```ts
// retrieves the BikeTag game data 'portland' game
const biketagPortland = await client.game('portland')
```

### Get Tags

You can get tags one by one or all at once for a given game using the `getTag` and `getTags` methods. You can also explicitely set the data adapter to any of the configurable sources (biketag, imgur, sanity):

```ts
// retrieves the BikeTag game data 'portland' game
const biketagPortland = await client.game('portland')

// retrieves the latest BikeTag posted for the 'portland' game from the most available API
const biketagPortlandCurrent = await client.getTag()

// retrieves the BikeTag #1 for the 'portland' game from imgur adapter
const biketagPortland1 = await client.tags(1, { source: 'imgur' })

// retrieves the all BikeTags for the 'portland' game from sanity adapter
const allPortlandTags = await client.tags(undefined, { source: 'sanity' })

```

### Get Players

You can get the players of a game by calling getPlayers

```ts
// retrieves the BikeTag player data 'portland' game
const biketagPortlandPlayers = await biketagAPI.getPlayers('portland')
```

## Credits

This project is heavily influenced by the [node-imgur][node-imgur] package, the Imgur API and it's documentation, and Sanity.IO's javascript client.

Using the typescript library configured and developed on the node-imgur v2 project: https://github.com/kaimallea/node-imgur, this package comes bundled with testing using jest and automated releases using github actions. Many thanks to Kaimallea for collaborating with me on the imgur API because I learned so much along the way!

Support the BikeTag Project on [GitHub][github], [Patreon][patreon], or directly by going out and playing a round of [BikeTag in your city](https://biketag.org)!

[github]: https://github.com/sponsors/KenEucker
[patreon]: https://patreon.com/BikeTag
[node-imgur]: https://github.com/kaimallea/node-imgur
[sanity]: https://www.sanity.io/docs/api-versioning
[imgur]: https://www.npmjs.com/package/imgur/v/next

![Alt](https://repobeats.axiom.co/api/embed/efea76b8d7f37062fcded362417a369dc9a3a401.svg "Repobeats analytics image")

## Vendors

Images powered by imgur.com

[![imgur.com][imgur-image]](https://apidocs.imgur.com/)

Structured Content powered by sanity.io

[![sanity.io][sanity-image]](https://www.sanity.io/docs/http-api)

[biketag-logo]: https://raw.githubusercontent.com/keneucker/biketag-website/production/public/img/biketag-api-logo.jpg
[imgur-image]: https://raw.githubusercontent.com/keneucker/biketag-website/production/public/img/imgur-logo.png
[sanity-image]: https://raw.githubusercontent.com/keneucker/biketag-website/production/public/img/sanity-logo.png