GitXplorerGitXplorer
c

koa-izanami-proxy

public
4 stars
0 forks
0 issues

Commits

List of commits on branch master.
Verified
772836b3d4f7b9b55873d5318d81ba06ed7f7335

:construction_worker: Configure travis (#2)

ccharlyx committed 6 years ago
Verified
11d91e0ab04621a2fb2ea180acd46a218321dece

Revert ":construction_worker: Add travis"

ccharlyx committed 6 years ago
Verified
e3e14a59cd0355bea1f619f9496f13f0fbf202ff

:construction_worker: Add travis

ccharlyx committed 6 years ago
Verified
148640fa04931326782733cc508378460261cd9d

:fire: Remove workflow...

ccharlyx committed 6 years ago
Verified
734886dca2a386f0e4cb1868452aba0943af7b13

:alembic: Try GitHub Actions

ccharlyx committed 6 years ago
Verified
de5e63c9d69a63a0afbee5f0b1d2b7fd61c1a3c1

:sparkles: Get features, experiments and configurations from izanami

ccharlyx committed 6 years ago

README

The README file for this repository.

koa-izanami-proxy

Build Status Coverage Status

Izanami proxy for Koa

Why?

In order to use Izanami features on the client side you have to use a proxy. To call Izanami APIs you need to provide authentication keys and you don’t want the keys to be exposed on the client side. For further details, please see the documentation.

The proxy provided by izanami-node has been written for express, thus it does not work with Koa.

Install

npm install koa-izanami-proxy@alpha
yarn add koa-izanami-proxy@alpha

Usage

You must specify at least one client configuration option depending on your needs (either featureClientConfig, experimentClientConfig or configClientConfig).
One must contain a host, clientId and clientSecret:

  • host is your Izanami server URL
  • clientId and clientSecret are secrets you've created in Izanami keys management.

Other options are available for proxy configuration.

const Koa = require('koa')
const cors = require('@koa/cors')
const izanamiProxy = require('koa-izanami-proxy')

const featureClientConfig =  {
  host: 'http://localhost:8080', // Izanami server URL
  clientId: process.env.CLIENT_ID || 'client',
  clientSecret: process.env.CLIENT_SECRET || 'client1234',
}

const app = new Koa()

app.use(cors())

const proxyConfiguration = { app, featureClientConfig }

izanamiProxy(proxyConfiguration)

app.listen(5000, () => {
  console.log('Example app listening on port 5000!')
})

Proxy configuration

{
  path: '/your/path', // default: '/api/izanami'
  featureClientConfig, // Optional
  configClientConfig, // Optional
  experimentClientConfig, // Optional
  experimentWonPath: '/your/won/path', // default: '/api/experiments/won'
  experimentDisplayedPath: '/your/displayed/path',  // default: '/api/experiments/displayed'
  app, // Koa app 
  pattern: 'my.namespace.*' // The pattern to filter experiments, configs and features (default: '*')
}