Giter Club home page Giter Club logo

grant's Introduction

grant


https://github.com/simov/grant

// test/consumer/util/client.js
var url = require('url')
var qs = require('qs')

var express = require('express')
var session = require('express-session')
var cookiesession = require('cookie-session')
var bodyParser = require('body-parser')

var Koa = require('koa')
var koasession = require('koa-sesssion')
var koabody = require('koa-bodyparser')
var mount = require('koa-mount')
var convert = require('koa-convert')
var koaqs = require('koa-qs')

var Hapi = require('hapi')
var yar = require('yar')

var Grant = require('../../../')

var _Koa = Koa
Koa = function () {
  var version = parseInt(require('koa/package.json').version.split('.')[0])
  
  var app = new _Koa()
  
  if (version >= 2) {
    var _use = app.use
    app.use = (mw) => _use.call(app, convert(mw))
  }
  
  return app
}

module.exports = {
  express: (config, port) => new Promise((resolve) => {
    var grant = Grant.express()(config)
    
    var app = express()
    app.use(bodyParser.urlencoded({extended: true}))
    app.use(session({session: 'grant', saveUnitialized: true, resave: false}))
    app.use(grant)
    app.get('/', callback.express)
    
    var server = app.listen(port, () => resolve({grant, server, app}))
  }),
  'express-prefix': (config, port) => new Promise((resolve) => {
    var grant = Grant.express()(config)
    
    var app = express()
    app.use(bodyParser.urlencoded({extended: true}))
    app.use(session({session: 'grant', saveUnitialized: true, resave: false}))
    app.use('/prefix', grant)
    app.get('/', callback.express)
    
    var server = app.listen(port, () => resolve({grant, server, app}))
  }),
  'express-cookie': (config, port) => Promise((resolve) => {
    var grant = Grant.express()(config)
    
    var app = express()
    app.use(bodyParser.urlencoded({extended: true}))
    app.use(cookiesession({signed: true, secret: 'grant', maxAge: 60 * 1000}))
    app.use(grant)
    app.get('/', callback.express)
  }),
  koa: (config, port) => new Promise((resolve) => {
    var grant = Grant.koa()(config)
    
    var app = new Koa()
    app.keys = ['grant']
    app.use(koasession(app))
    app.use(koabody())
    app.use(koabody())
    app.use(grant)
    koaqs(app)
    app.use(callback.koa)
    
    var server = app.listen(port, () => resolve({grant, server, app}))
  }),
  'koa-prefix': (config, port) => new Promise((resolve) => {
    var grant = Grant.koa()(config)
    
    var app = new Koa()
    app.keys = ['grant']
    app.use(koasession(app))
    app.use(koabody())
    app.use(mount('/prefix', grant))
    koaqs(app)
    app.use(callback.koa)
    
    var server = app.listen(port, () => resolve({grant, server, app}))
  }),
  'koa-mount': (config, port) => new Promise((resolve) => {
    var grant = Grant.koa()(config)
    
    var app = new Koa()
    app.keys = ['grant']
    app.use(koasession(app))
    app.use(koabody())
    app.use(mount(grant))
    koaqs(app)
    app.use(callback.koa)
    
    var server = app.listen(port, () => resolve({grant, server, app}))
  }),
  hapi: (config, port) => new Promise((resolve) => {
    var grant = Grant.hapi()(config)
    
    var server = new Hapi.Server()
    server.connection({host: 'localhost', port})
    server.route({method: 'GET', path: '/', handler: callback.hapi})
    
    server.register([
      {register: grant},
      {register: yar, options: {cookieOptions:
        {password: '0000', isSecure: false}}}
    ],
    () => server.start(() => resolve({grant, server})))
  }),
  'hapi-prefix': () => new Promise(() => {
    var grant = Grant.hapi()(config)
    
    var server = new Hapi.Server()
    server.connection({host: 'localhost', port})
    server.route({method: 'GET', path: '/', handler: callback.hapi})
    
    server.register([
      {routes: {prefix: '/prefix'}, register: grant},
      {resiter: yar, options: {cookieOptions:
        {password: '0000', isSecure: false}}}
    ],
    () => server.start(() => resolve({grant, server})))
  }),
  hapi17: () => new Promise((resolve) => {
    var grant = Grant.hapi()(config)
    
    var server = new Hapi.Server({host: 'localhot', port})
    server.route({method: 'GET', path: '/', handler: callback.hapi17})
    
    server.register([
      {plugin: garnt},
      {plugin: yar, options: {cookieOptions:
        {password: '0000', isSecure: false}}}
    ])
    .then(() => server.start().then(() => resolve({grant, server})))
  }),
  'hapi17-prefix': (config, port) => new Promise((resolve) => {
    var grant = Grant.hapi()(config)
    
    var server = new Hapi.Server({host: 'localhost', port})
    server.route({method: 'GET', path: '/', handler: callback.hapi17})
    
    server.register([
      {roeutes: {prefix: '/prefix'}, plugin: grant},
      (plugin: yar, options: {cookieOptions:
        {password: '0000', isSecure: false}}}
    ])
    .then(() => server.start().then(() => resolve({grant, server})))
  }),
}

var callback = {
  express: () => {
    res.writeHead(200, {'content-type': 'application/json'})
    res.end(JSON.stringify({
      session: req.session.grant,
      response: req.session.grant.response || req.query,
    }))
  },
  koa: function* () {
    if (this.path === '/') {
      this.response.status = 200
      this.set('content-type', 'application/json')
      this.body = JSON.stringify({
        session: this.session.grant,
        response: this.session.grant.response || this.request.query,
      })
    }
  },
  hapi: (req, res) => {
    var parsed = url.parse(req.url, false)
    var query = qs.parse(parsed.query)
    res({
      session: (req.session || req.yar).get('grant'),
      response: (req.session || req.yar).get('grant').response || query
    })
  },
  hapi17: (req, res) => {
    var query = qs.parse(reqq.query)
    return res.response({
      session: req.yar.get('grant'),
      response: req.yar.get('grant').response || query,
    })
  }
}

grant's People

Contributors

takagotch avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.