Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 12 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -425,28 +425,30 @@ You can create your own HTTP from scratch to handle Amazon requests manually. Se

```javascript
const Hapi = require('hapi');
const server = new Hapi.Server();
const app = require('./app'); // Your app

server.connection({
const server = Hapi.server({
port: process.env.PORT || 8888
});

server.route({
path: '/',
method: 'POST',
handler: (request, response) => {
app.handle(request.payload, (data) => {
response(data);
handler: (request, h) => {
return new Promise((resolve) => {
app.handle(request.payload, (data) => {
resolve(h.response(data));
});
});
}
});

server.start((err) => {
if (err) throw err;
console.log('Server running at:', server.info.uri);
app.saveSpeechAssets();
});
server.start()
.then(() => {
console.log(`Server running at: ${server.info.uri}`);
// app.saveSpeechAssets();
})
.catch(console.error);
```

## Deploy
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
"eslint-config-standard": "^6.2.1",
"eslint-plugin-promise": "^3.3.1",
"eslint-plugin-standard": "^2.0.1",
"hapi": "^15.2.0",
"hapi": "^17.3.1",
"i18next": "^4.1.0",
"i18next-node-fs-backend": "^0.1.3",
"istanbul": "^0.4.5",
Expand Down
11 changes: 6 additions & 5 deletions src/create-server.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,21 @@ const info = require('debug')('alexia:info');
*/
module.exports = (app, options) => {
const Hapi = require('hapi');
const server = new Hapi.Server();

options = Object.assign({}, options);

server.connection({
const server = Hapi.server({
port: options.port || process.env.PORT || 8888
});

server.route({
path: options.path || '/',
method: 'POST',
handler: (request, response) => {
app.handle(request.payload, (data) => {
response(data);
handler: (request, h) => {
return new Promise((resolve) => {
app.handle(request.payload, (data) => {
resolve(h.response(data));
});
});
}
});
Expand Down
45 changes: 31 additions & 14 deletions test/create-server.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,24 +30,41 @@ describe('server', () => {
app.handle.restore();
});

it('should create working Hapi server', (done) => {
const server = app.createServer(app);

server.start(serverError => {
expect(serverError).to.be.not.ok;
it('should ensure expected route is defined on Hapi server', (done) => {
const server = app.createServer({
path: '/skill'
});

// Send POST request to server
request(createRequestOptions(server.info.uri), (requestError, response) => {
expect(requestError).to.be.not.ok;
expect(response.body).to.deep.equal(mockResponse);
expect(response.statusCode === 200);
server.inject({
url: '/skill',
method: 'POST',
payload: mockRequest
})
.then(response => {
expect(response.statusCode).to.deep.equal(200);
expect(response.headers).to.contain.keys('content-type', 'content-length');
expect(JSON.parse(response.payload)).to.deep.equal(mockResponse);
})
.then(() => done())
.catch(done);

server.stop();
});

done();
});
});
it('should create working Hapi server', (done) => {
const server = app.createServer();

server.start()
.then(() => {
// Send POST request to server
request(createRequestOptions(server.info.uri), (requestError, response) => {
expect(requestError).to.be.not.ok;
expect(response.body).to.deep.equal(mockResponse);
expect(response.statusCode === 200);
});
})
.then(() => server.stop())
.then(() => done())
.catch(done);
});

});