Skip to content

uetchy/MuffledAPI

Repository files navigation

Muffled API

Actions Status: test npm version

Muffled API 🧣

Omnipotent API Client armed with a power of Proxy.

Table of Contents

Install

You can install Muffled API via npm or yarn.

npm install muffled
yarn add muffled

Usage

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:

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.

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:

const { user } = new Muffled("api.github.com");
const userRepos = await user.repos();

Method override

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

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

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

Contributing

PRs accepted.

Small note: If editing the README, please conform to the standard-readme specification.

License

MIT © 2019 Yasuaki Uechi