forked from hapi-swagger/hapi-swagger
-
Notifications
You must be signed in to change notification settings - Fork 0
/
connections.js
120 lines (105 loc) · 3.05 KB
/
connections.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
'use strict';
// `connections.js` - how to uses plugin with muiltple server connections
const Blipp = require('blipp');
const Hapi = require('hapi');
const Hoek = require('hoek');
const Inert = require('inert');
const Vision = require('vision');
const HapiSwagger = require('../');
const Pack = require('../package');
let Routes = require('./assets/routes-simple');
let server = new Hapi.Server();
// only the connections a and b on ports 3000 and 3001 will have documentation
server.connection({ host: 'localhost', port: 3000, labels: 'a' });
server.connection({ host: 'localhost', port: 3001, labels: 'b' });
server.connection({ host: 'localhost', port: 3002, labels: 'c' });
let plugin1 = function(plugin, options, next) {
plugin.route({
method: 'GET',
path: '/plugin1',
config: {
handler: function(request, reply) {
reply('Hi from plugin 1');
},
description: 'plugin1',
tags: ['api']
}
});
next();
};
plugin1.attributes = { name: 'plugin1' };
let plugin2 = function(plugin, options, next) {
plugin.route({
method: 'GET',
path: '/plugin2',
config: {
handler: function(request, reply) {
reply('Hi from plugin 2');
},
description: 'plugin2',
tags: ['api']
}
});
next();
};
plugin2.attributes = { name: 'plugin2' };
let swaggerOptions = {
schemes: ['http'],
info: {
title: 'Test API Documentation',
description: 'This is a sample example of API documentation.',
version: Pack.version,
termsOfService: 'https://github.com/glennjones/hapi-swagger/',
contact: {
email: 'glennjonesnet@gmail.com'
},
license: {
name: 'MIT',
url:
'https://raw.githubusercontent.com/glennjones/hapi-swagger/master/license.txt'
}
}
};
let swaggerOptionsA = Hoek.clone(swaggerOptions);
let swaggerOptionsB = Hoek.clone(swaggerOptions);
swaggerOptionsA.host = 'localhost:3000';
swaggerOptionsB.host = 'localhost:3001';
server.register([Blipp, Inert, Vision], err => {
if (err) {
console.log(err);
}
// interface a - add swagger UI
server.register(
[
plugin1,
{
register: HapiSwagger,
options: swaggerOptionsA
}
],
{ select: ['a'] },
err => {
if (err) {
console.log(err);
}
// interface b - add swagger UI
server.register(
[
plugin2,
{
register: HapiSwagger,
options: swaggerOptionsB
}
],
{ select: ['b'] },
err => {
if (err) {
console.log(err);
}
server.start(() => {});
}
);
}
);
});
server.route(Routes);