https://github.com/uetchy/muffledapi
Omnipotent API Client.
https://github.com/uetchy/muffledapi
api api-client javascript
Last synced: 10 months ago
JSON representation
Omnipotent API Client.
- Host: GitHub
- URL: https://github.com/uetchy/muffledapi
- Owner: uetchy
- License: mit
- Created: 2019-01-20T06:19:31.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-03-04T03:11:16.000Z (over 3 years ago)
- Last Synced: 2025-03-29T11:34:41.235Z (about 1 year ago)
- Topics: api, api-client, javascript
- Language: JavaScript
- Homepage:
- Size: 400 KB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

[](https://github.com/uetchy/MuffledAPI/actions?query=test)
[](https://www.npmjs.com/package/muffled)
# Muffled API 🧣
> Omnipotent API Client armed with a power of `Proxy`.
## Table of Contents
- [Install](#install)
- [Usage](#usage)
- [API](#api)
- [Maintainers](#maintainers)
- [Contributing](#contributing)
- [License](#license)
## Install
You can install Muffled API via `npm` or `yarn`.
```bash
npm install muffled
yarn add muffled
```
## Usage
```js
const { Muffled, bearerAuth } = require("muffled");
/**
* Spotify API
*/
const SpotifyAPI = new Muffled("api.spotify.com/v1");
// OAuth2 Bearer Authentication
SpotifyAPI.use(bearerAuth(process.env.SPOTIFY_TOKEN));
// This will fetch resource from `https://api.spotify.com/v1/search`
const result = await SpotifyAPI.search({
q: "roadhouse blues",
type: "album,track",
});
```
## API
### `new Muffled(endpoint: String)`
This will create a class for given endpoint.
You can also specify endpoint like:
```js
new Muffled("api.spotify.com");
new Muffled("https://api.spotify.com");
new Muffled("https://api.spotify.com/v1");
```
### API call
You can call any API query by passing property as a path string.
```js
new Muffled("api.spotify.com").v1.search({ limit: 1 }); // GET https://api.spotify.com/v1/search?limit=1
new Muffled("api.spotify.com/v1").search({ limit: 1 }, { query: "hey" }); // POST https://api.spotify.com/v1/search?limit=1 -F '{"query": "hey"}' -H contnet-type=application/json
new Muffled("holodex.net/api/v2").channels["UCMwGHR0BTZuLsmjY_NT5Pwg"](); // GET https://holodex.net/api/v2/channels/UCMwGHR0BTZuLsmjY_NT5Pwg
```
You can also call them using partial components:
```js
const { user } = new Muffled("api.github.com");
const userRepos = await user.repos();
```
### Method override
```js
const client = new Muffled("holodex.net/api/v2", {
overrides: {
"/search": {
method: "POST",
},
},
});
client.search.videoSearch({ query: "hey" }); // POST https://holodex.net/api/v2/search/videoSearch -F '{"query": "hey"}' -H contnet-type=application/json
```
## Authorization
### OAuth Bearer Token
```js
const { Muffled, bearerAuth } = require("muffled");
const API = new Muffled("api.github.com");
API.use(bearerAuth(process.env.GITHUB_TOKEN));
API.user.repos(); // this will inject github token into Authorization header
```
### Generic Header Auth
```js
const { Muffled, headerAuth } = require("muffled");
const API = new Muffled("holodex.net");
API.use(headerAuth("x-apikey", process.env.HOLODEX_TOKEN));
API.live(); // this will inject apikey into x-apikey header
```
## Maintainers
[@uetchy](https://github.com/uetchy)
## Contributing
PRs accepted.
Small note: If editing the README, please conform to the [standard-readme](https://github.com/RichardLitt/standard-readme) specification.
## License
MIT © 2019 Yasuaki Uechi