0.17.0 • Published 8 years ago

vhttp v0.17.0

Weekly downloads
69
License
Apache-2.0
Repository
github
Last release
8 years ago

vhttp

Build Status

Promise based HTTP/HTTPS client with optional virtualization. Depends on request-promise. This is helpful for services / apis that call other services / apis, but want to allow for virtualizing (stubbing) those calls in tests, CI/CD pipeline, or volume / performance testing.

Installation

Install via npm as follows:

$ npm install vhttp --save

Usage

The most common usage is to pass a query or post param to your api indicating virtualization similar to:

http://hello.world.api/sayhello?virtual=notification

This could then be used in the service as follows:

var Promise = require('bluebird'),
    Vhttp = require('vhttp');

Vhttp.register({
    notification: {
        slack1: {
            method: 'post',
            uri: 'http://api.slack.com/notify'
        },
        hipchat1: {
            method: 'post',
            uri: 'http://api.hipchat.com/notify'
        }
    });
        
app.post('/sayhello', function(req, res) {
    var vhttp = new Vhttp(req.params.virtual);
    
    Promise.all([
        vhttp.post('http://api.slack.com/notify', {
            body: { message: 'Hello World!' },
            json: true
        }),
        vhttp.post('http://api.hipchat.com/notify', {
            body: { message: 'Hello World!' },
            json: true
        })
    ])
        .then(function(results) {
            res.status(200).send({
                slack: results[0],
                hipchat: results[1]
            });
        })
        .catch(function(err) {
            res.status(500).send(err);
        });
});

For more details on bluebird's Promise.all, check this out.

Then in a folder called virtual the following files would be created:

project\
    virtual\
        slack1.request.json     // contains: { "message": "Hello World!" }
        slack1.response.json    // contains: { "status": "ok" }
        hipchat1.request.json   // contains: { "message": "Hello Workd!" }
        hipchat1.response.json  // contains: { "status": "ok" }

Now when we call

http://hello.world.api/sayhello?virtual=notification

the response is

{
    "slack": { "status": "ok" },
    "hipchat": { "status": "ok" }
}

For real (not virtualized) api calls just remove the virtual param

http://hello.world.api/sayhello
0.17.0

8 years ago

0.16.0

9 years ago

0.15.0

9 years ago

0.14.0

9 years ago

0.13.1

9 years ago

0.13.0

9 years ago

0.12.0

9 years ago

0.11.0

10 years ago

0.10.0

10 years ago

0.8.1

10 years ago

0.8.0

10 years ago

0.7.0

10 years ago

0.6.1

10 years ago

0.6.0

10 years ago

0.5.1

10 years ago

0.5.0

10 years ago