a hapijs plugin mapping a heroku client to both server.app.heroku
and request.app.heroku
, the latter of which includes the incoming requests Authorization
header. This project is based on wreck. See wreck's documentation for additional options and usages.
4XX <=> ERROR
As of v4 4XX responses are treated as errors. If you're using this via promises (e.g.Bluebird.promisify
) this is a non-trivial change. 4XX and 5XX responses will now trigger the .catch
clause. This is further complicated in that Bluebird only passes error
to catch and not response
or body
.
usage
npm install --save hapi hapi-heroku-client
const Hapi = require('hapi');
const myServer = new Hapi.Server();
myServer.connection();
myServer.register([
{
register: require('hapi-heroku-client'),
options: {
/* options enumerated below */
'timeout': 5000, /* for example */
'user-agent': 'example-code-1.0.0' /* for another example */
}
}
], function (error) {
if (error) { throw error; }
myServer.route({
method: 'get',
path: '/foo',
handler: function (request,reply) {
const server = request.server;
// fetch unauthenticated API endpoints
server.app.heroku.get('/version', (err, version) => {
reply(version);
});
// or with promises
server.app.heroku.getAsync('/version').then((version) => {
reply(version);
});
// fetch authenticated API endpoint
request.app.heroku.get('/apps', (err, apps) => {
reply(apps);
});
// or with promises
request.app.heroku.getAsync(('/apps') => {
reply(apps);
});
}
});
myServer.start(() => { console.log('your server has started!'); });
}
);
options
-
host
-- defaults to api.heroku.com -
proto
-- defaults to https -
timeout
-- defaults to 15 seconds -
variant
-- defaults to 'application/vnd.heroku+json; version=3' -
user-agent
-- defaults to hapi-heroku-client
variables
-
HEROKU_API_PROTO
-- defaults to https -
HEROKU_API_HOST
-- defaults to api.heroku.com -
HTTP_TIMEOUT
-- defaults to 15 seconds