GitXplorerGitXplorer
c

koa-izanami-proxy

public
4 stars
0 forks
0 issues

Commits

List of commits on branch master.
Verified
3fbcc14794025352b1ea58cc0776998d2dcffe34

:sparkles: Add experiments won and displayed features (#4)

ccharlyx committed 6 years ago
Verified
c3bfef63f8c171a2d5805334d0c3e115ca37c117

:construction_worker: Add coveralls (#3)

ccharlyx committed 6 years ago
Verified
072662548b0462128be1b4d7dc2b6edef45847e9

:sparkles: Get features, experiments and configurations from izanami (#1)

ccharlyx committed 6 years ago
Verified
2bccb1bd19784f21f0de6334ea137ab8b1295148

:memo: Add documentation

ccharlyx committed 6 years ago
Verified
47bba452350cb089586815246385a772d7b48a70

:wrench: Configure travis with npm cache

ccharlyx committed 6 years ago
Verified
8e68b4fae433d600221d63d69e7e46236453dfb4

:recycle: Make it work better

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: '*')
}