0.0.9 • Published 10 years ago

co-hapi v0.0.9

Weekly downloads
2
License
MIT
Repository
github
Last release
10 years ago

co-hapi

Build Dependencies

This module lets you use powered by co generators inside hapi applications. Node 0.11+ is required. Forget aboout callback hell.

Install

$ npm install co-hapi co hapi

Usage

Use

let Hapi = require("co-hapi");

instead of

var Hapi = require("hapi");

See a demo bellow to see abilities of this module

"use strict";
let Hapi = require("co-hapi");
let co = require("co");

co(function*(){
  let server = new Hapi.Server(8080);
  server.ext("onRequest", function*(request){
    request.setUrl("/test");
    //return nothing <=> next()
    //throw error <=> next(err)
    //return value <=> next(null, value)
  });

  server.handler("myHandler", function(route, options){
    return function*(request, reply){
      //'reply' is optional. You can return value (<=> reply(value)) or throw an error (<=> reply(errorObject)) here instead of using 'reply' directly
      return {data: [1, 2, 3]};
    };
  });

  server.method("add", function*(a, b){
    return a + b; //use 'return' or 'throw' instead of 'next'
  });

  let result = yield server.methods.add(2, 3); //calling server's method via yield (the way with callback is supported too)

  yield server.pack.register(require("my-plugin")); //registering of plugin

  server.route({
    method: "GET",
      path: "/",
      config: {
        pre: [{method: function*(request, reply){
          //'reply' is optional here too
        }, assign: "pre1"}]
      },
      handler: function* (request, reply) {
        //'reply' is optional here too
        let result = yield someOperation();
        reply(result); //or use 'return result;' instead of it
      }
  });
  let v = yield Hapi.state.prepareValue("name", val, {});
  let pack = yield Hapi.Pack.compose(manifest); //composing a pack
  yield server.start();
  //the server will be started here. Use 'yield server.stop()' to stop it
})(function(err){
  if(err){
    console.error(err);
  }
});

Inside plugin

module.exports.register = function*(plugin, options){ // plugins with function(plugin, options, next){} are supported too
  //do plugins operations here
  plugin.ext("onRequest", function*(request){

  });

  plugin.dependency("my-plugin1", function*(plugin){
    //actions after loading my-plugin1
  });

  plugin.route({...}); //like server.route()

  plugin.handler(...); //like server.handler()
};

module.exports.register.attributes = {
  name: "name",
  version: "1.0.0"
};
0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago