Created
September 18, 2015 03:47
-
-
Save 58bits/8567abcfc12903adb4f9 to your computer and use it in GitHub Desktop.
Server Extensions for Plugin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
var Hoek = require('hoek'); | |
var Util = require('util'); | |
var Log = require('./lib/logger'); | |
var Cache = require('./lib/cache'); | |
var Mailer = require('./lib/mailer'); | |
var Db = require('./lib/dbx'); | |
var Storage = require('./lib/storage'); | |
var Auth = require('./lib/auth'); | |
var Cryptish = require ('cryptish'); | |
exports.register = function (server, options, next) { | |
var config = server.settings.app.config.api.settings; | |
server.bind({ | |
config: config | |
}); | |
Cryptish.init(config.crypto); | |
Log.init(server, config.logger); | |
Mailer.init(config); | |
Db.init(config.database); | |
Storage.init(config); | |
var cache = server.cache({ | |
segment: config.cache.segment, | |
expiresIn: config.cache.expiresIn | |
}); | |
Cache.init(cache); | |
//Register plugins and bootstrap the app | |
server.register([ | |
{ | |
register: require('good'), | |
options: config.logger.options | |
}, | |
require('hapi-auth-signature'), | |
require('./services/users'), | |
require('./services/stories'), | |
require('./services/storyItems'), | |
require('./services/keys'), | |
require('./services/invitations') | |
], function (err) { | |
Hoek.assert(!err, 'Failed loading plugin: ' + err); | |
server.auth.strategy('hmac', 'signature', { | |
validateFunc: Auth.verifySignature | |
}); | |
server.route(require('./routes').endpoints); | |
next(); | |
}); | |
// Works | |
//server.after(function (server, next) { | |
// server.log(['api', 'info'], 'API server running on ' + server.settings.app.config.api.server.uri); | |
// next(); | |
//}); | |
// Works | |
server.ext('onPreStart', function (server, next) { | |
server.log(['api', 'info'], 'API server running on ' + server.settings.app.config.api.server.uri); | |
next(); | |
}); | |
// Does not work | |
server.ext('onRequest', function (request, reply) { | |
console.log('onRequest called from plugin'); | |
return reply.continue(); | |
}); | |
// Does not work | |
server.on('request', function (request, event, tags) { | |
console.log('server request called'); | |
Log.trace(request); | |
Log.trace(request.headers); | |
}); | |
// Does not work | |
server.on('request-internal', function (request, event, tags) { | |
console.log('server-internal request called'); | |
var keys = Object.keys(tags); | |
if (Hoek.intersect(config.logger.level, keys).length > 0) { | |
server.log(tags, event); | |
} | |
}); | |
}; | |
exports.register.attributes = { | |
pkg: require('./package.json') | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
// Load modules | |
var Hapi = require('hapi'); | |
var Glue = require('glue'); | |
var Config = require('./config'); | |
// Declare internals | |
var internals = {}; | |
Config.api.server.uri = (Config.api.settings.tls ? 'https://' : 'http://') + Config.api.server.host + ':' + Config.api.server.port; | |
Config.web.server.uri = (Config.web.settings.tls ? 'https://' : 'http://') + Config.web.server.host + ':' + Config.web.server.port; | |
var manifest = { | |
server: { | |
app: { | |
config: Config | |
}, | |
cache: Config.cache | |
}, | |
connections: [ | |
{ | |
host: Config.api.server.host, | |
port: Config.api.server.port, | |
uri: Config.api.server.uri, | |
labels: Config.api.server.labels | |
}, | |
{ | |
host: Config.web.server.host, | |
port: Config.web.server.port, | |
uri: Config.web.server.uri, | |
labels: Config.web.server.labels | |
} | |
], | |
plugins: [ | |
{'./api': [ | |
{ | |
select: 'api', | |
routes: { prefix: '/api/v1'} | |
} | |
]}, | |
{'./web': [ | |
{ | |
select: 'web' | |
} | |
]} | |
] | |
}; | |
Glue.compose(manifest, { relativeTo: __dirname }, function (err, server) { | |
if(err) { | |
throw err; | |
} | |
// Works | |
server.ext('onRequest', function (request, reply) { | |
console.log('onRequest called'); | |
return reply.continue(); | |
}); | |
server.start(function () { | |
// server running on port 80 | |
}); | |
}); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment