@heroku/hapi-heroku-client
v4.0.0
Published
http client pre-configured to streamline interfacing with heroku's platform API
Downloads
15
Readme
hapi-heroku-client
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.comproto
-- defaults to httpstimeout
-- defaults to 15 secondsvariant
-- defaults to 'application/vnd.heroku+json; version=3'user-agent
-- defaults to hapi-heroku-client
variables
HEROKU_API_PROTO
-- defaults to httpsHEROKU_API_HOST
-- defaults to api.heroku.comHTTP_TIMEOUT
-- defaults to 15 seconds