nadimtuhin
10/18/2018 - 7:12 AM

api.js

// case 0: pass through
// 	—> | —>

// case 1: whitelist
// routes =	{
// 		a: b,
// 		b: c
// 	}

// case 2: single transformation
// data = [user_id, ride_id, food_id, price] —> [user_id, price]

// case 3: multiple transformation
// data = [
// 	[user_id, ride_id], 
// 	[price, delivery_charge], 
// 	[lat, lng]
// ] —> [user_id, ride_id, price, lat, lng]

/**

## map and pass through
proxy = Proxy({
  host,
  map(req) {
    return {
      /api/quest/:id/: 'v1/quest/:id'
    }
  },
  proxyReqOptDecorator(reqOptions) {
    return reqOptions;
  },
  filter(req) {
    whitelist = [a,b,c,d,e]
    return whitelist in req ? true : false;
  }
})

use('api/quest', proxy)


## transformation
app.get('api/quest/template', proxyPostRequest, (req, res, next) => {
  res.end(request(req).then(transform));
})

app.get('api/quest/multiple', proxyPostRequest, (req, res, next) => {
  resolve = Promise.all(request(a), request(b), request(c)).then(tranform);
})



use('api/quest', proxy)

.all((req, res, next) => {
  if(!proxy.filter(req)) next();
  res.
})


 */