mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
* Fixed IReply definition * Fix a lot of inconsistent whitespace which caused merge issues * [Hapi] Add support for IReply::state and IReply::unstate * Add support for IReply::header(name, value, options) * Reply functions should be returning Response objects * Specify IHeaderOptions * [Hapi] Got tests passing locally, also made the other hapi files consistent with the v8.2.0 ts Sorry about any attribution clobbering but there wasn't much in the git blame view anyways.
173 lines
3.5 KiB
TypeScript
173 lines
3.5 KiB
TypeScript
/// <reference path="hapi.d.ts" />
|
|
|
|
import Hapi = require("hapi");
|
|
|
|
// Create a server with a host and port
|
|
var server = new Hapi.Server();
|
|
server.connection(<Hapi.IServerConnectionOptions>{
|
|
host: "localhost",
|
|
port: 8000
|
|
});
|
|
|
|
// Add plugins
|
|
var plugin: any = {
|
|
register: function (plugin: Object, options: Object, next: Function) {
|
|
next();
|
|
}
|
|
};
|
|
|
|
plugin.register.attributes = {
|
|
name: "test",
|
|
version: "1.0.0"
|
|
};
|
|
|
|
// optional options parameter
|
|
server.register({}, function (err) {
|
|
});
|
|
// optional callback function with and without options
|
|
server.register({}).then((res: any) => {
|
|
console.log(res);
|
|
});
|
|
server.register({}, {select: "api", routes: {prefix: "/prefix"}}).then((res: any) => {
|
|
console.log(res);
|
|
});
|
|
|
|
// optional options.routes.vhost parameter
|
|
server.register({}, {select: "api", routes: {prefix: "/prefix"}}, function (err) {
|
|
});
|
|
|
|
//server.pack.register(plugin, (err: Object) => {
|
|
// if (err) { throw err; }
|
|
//});
|
|
|
|
//server.pack.register([plugin], (err: Object) => {
|
|
// if (err) { throw err; }
|
|
//});
|
|
|
|
// Add server method
|
|
var add = function (a: number, b: number, next: (err: any, result?: any, ttl?: number) => void) {
|
|
next(null, a + b);
|
|
};
|
|
|
|
server.method("sum", add);//, { cache: { expiresIn: 2000 } });
|
|
|
|
server.methods["sum"](4, 5, (err: any, result: any) => {
|
|
console.log(result);
|
|
});
|
|
|
|
var addArray = function (array: Array<number>, next: (err: any, result?: any, ttl?: number) => void) {
|
|
var sum: number = 0;
|
|
array.forEach((item: number) => {
|
|
sum += item;
|
|
});
|
|
next(null, sum);
|
|
};
|
|
|
|
server.method("sumObj", addArray, {
|
|
//cache: { expiresIn: 2000 },
|
|
generateKey: (array: Array<number>) => {
|
|
return array.join(',');
|
|
}
|
|
});
|
|
|
|
server.methods["sumObj"]([5, 6], (err: any, result: any) => {
|
|
console.log(result);
|
|
});
|
|
|
|
// Add the route
|
|
server.route({
|
|
method: 'GET',
|
|
path: '/hello',
|
|
handler: function (request: Hapi.Request, reply: Function) {
|
|
reply('hello world');
|
|
}
|
|
});
|
|
|
|
server.route([{
|
|
method: 'GET',
|
|
path: '/hello2',
|
|
handler: function (request: Hapi.Request, reply: Function) {
|
|
reply('hello world2');
|
|
}
|
|
}]);
|
|
|
|
// config.validate parameters should be optional
|
|
server.route([{
|
|
method: 'GET',
|
|
path: '/hello2',
|
|
handler: function (request: Hapi.Request, reply: Function) {
|
|
reply('hello world2');
|
|
},
|
|
config: {
|
|
validate: {}
|
|
}
|
|
}]);
|
|
|
|
// Should be able to chain reply options
|
|
server.route([{
|
|
method: 'GET',
|
|
path: '/chained-notation',
|
|
handler: function (request: Hapi.Request, reply: Hapi.IReply) {
|
|
reply.state('cookie_key', 'cookie_value');
|
|
reply('chained-notation')
|
|
.bytes(16)
|
|
.code(200)
|
|
.type('text/plain')
|
|
.unstate('cookie_to_remove')
|
|
.header('X-Custom', 'some-value');
|
|
}
|
|
}]);
|
|
|
|
// Start the server
|
|
server.start();
|
|
|
|
// server startup may now return a promise
|
|
server.start()
|
|
.then(() => {
|
|
console.log('Started!');
|
|
});
|
|
|
|
//inject a request into connection
|
|
server.inject({
|
|
method: 'GET',
|
|
url: '/hello'
|
|
}).then(response => {
|
|
console.log(response.statusCode);
|
|
});
|
|
|
|
//the same but this time using callback
|
|
server.inject({
|
|
method: 'GET',
|
|
url: '/hello'
|
|
}, response => {
|
|
console.log(response.statusCode);
|
|
});
|
|
|
|
//tests for server initialization
|
|
server.initialize()
|
|
.then(() => {
|
|
console.log('Initialized!')
|
|
});
|
|
|
|
//and the same but with callback
|
|
server.initialize(err => {
|
|
if (err) {
|
|
console.log(err);
|
|
}
|
|
});
|
|
|
|
//server stopping may now return a promise
|
|
server.stop()
|
|
.then(() => {
|
|
console.log('Stopped!');
|
|
});
|
|
|
|
//decorate can take an optional options argument
|
|
server.decorate('hello', 'world', () => {
|
|
}, {
|
|
apply: true
|
|
});
|
|
|
|
server.decorate('hello2', 'world2', () => {
|
|
});
|