A simple HTTP request agent designed primarily for GETing stuff.
- Resolve redirects
- Timeout support
- Automatic gunzipping
- First-class JSON support
- Buffer the response or save it to a file
var request = require('cogent')
var uri = 'https://raw.github.com/visionmedia/express/master/package.json'
// Pipe stdout
var res = yield* request(uri)
res.pipe(process.stdout)
// Save to a file
var res = yield* request(uri, require('os').tmpdir() + '/express.package.json')
if (res.destination) console.log('ok')
// Get as JSON
var res = yield* request(uri, true)
var json = res.bodyYou can also use it without generators by wrapping it with co:
var co = require('co')
var request = co(require('cogent'))
request('https://github.com', function (err, res) {
res.pipe(process.stdout)
})url is the URL of the request.
The options are passed to http.request().
Additional options are:
buffer- buffer the response and save it asres.bufferstring- buffer the response as a string and save it asres.textjson- buffer the response as an object and save it asres.bodydestination- cojs/cogent the response to the filedestinationtimeout- response header timeout per try, default5000 millisecondsretries- number of retries when request fails due to common server errors, default0redirects- resolve redirects, default1
If options === true, it defaults to { json: true }.
If typeof options === 'string', it defaults to { destination: string }.
response will have the following properties:
res.req- the request objectres.res- the response object, itself if the response was not gzippedres.statusCoderes.headersres.destination- populated only if the file was successfully saved on a200res.bufferres.textres.body- JSON body populated only on a200
Create a new cogent instance with default options. This allows you to avoid setting the same options every time. See the options listed above.
retriesredirectstimeoutmethodgunzipnetrcagent
var request = require('cogent').extend({
auth: 'username:password'
})
var res = yield* request('http://localhost/', true)
// will send with auth header