# cogent

> Simpler HTTP requests using co

Latest version **1.0.1** (published 2014-10-21) · MIT license · 0 weekly downloads

## Install

```sh
npm install cogent
pnpm add cogent
yarn add cogent
bun add cogent
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2014-10-21 |
| First published | 2013-12-15 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 5 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Jonathan Ong |
| Maintainers | jongleberry, eivifj, fengmk2, tjholowaychuk, dead_horse, coderhaoxin |

## Links

- npm: https://www.npmjs.com/package/cogent
- Repository: https://github.com/cojs/cogent
- Issues: https://github.com/cojs/cogent/issues
- npm.io page: https://npm.io/package/cogent

## Dependencies (5)

- [debug](https://npm.io/package/debug.md) *
- [netrc](https://npm.io/package/netrc.md) ~0.1.3
- [raw-body](https://npm.io/package/raw-body.md) ^1.1.2
- [statuses](https://npm.io/package/statuses.md) ^1.0.2
- [write-to](https://npm.io/package/write-to.md) ^1.0.0

## Recent versions

- 1.0.1 (latest) — 2014-10-21
- 1.0.0 — 2014-07-09
- 0.4.3 — 2014-04-07
- 0.4.2 — 2014-04-07
- 0.4.1 — 2014-03-25
- 0.4.0 — 2014-03-23
- 0.3.14 — 2014-02-22
- 0.3.13 — 2014-02-04
- 0.3.12 — 2014-02-02
- 0.3.11 — 2014-02-01
- 0.3.10 — 2014-01-31
- 0.3.9 — 2014-01-30
- 0.3.8 — 2014-01-24
- 0.3.7 — 2014-01-21
- 0.3.5 — 2014-01-14
- … 10 more at https://npm.io/package/cogent/versions

## README

# cogent

[![NPM version][npm-image]][npm-url]
[![build status][travis-image]][travis-url]
[![Test coverage][coveralls-image]][coveralls-url]
[![Gittip][gittip-image]][gittip-url]

[npm-image]: https://img.shields.io/npm/v/cogent.svg?style=flat
[npm-url]: https://npmjs.org/package/cogent
[travis-image]: https://img.shields.io/travis/cojs/cogent.svg?style=flat
[travis-url]: https://travis-ci.org/cojs/cogent
[coveralls-image]: https://img.shields.io/coveralls/cojs/cogent.svg?style=flat
[coveralls-url]: https://coveralls.io/r/cojs/cogent?branch=master
[gittip-image]: https://img.shields.io/gittip/jonathanong.svg?style=flat
[gittip-url]: https://www.gittip.com/jonathanong/

A simple HTTP request agent designed primarily for `GET`ing stuff.

## Features

- Resolve redirects
- Timeout support
- Automatic gunzipping
- First-class JSON support
- Buffer the response or save it to a file

## API

```js
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.body
```

You can also use it without generators by wrapping it with [co](https://github.com/visionmedia/co):

```js
var co = require('co')
var request = co(require('cogent'))

request('https://github.com', function (err, res) {
  res.pipe(process.stdout)
})
```

### var response = yield* request(url, [options])

`url` is the URL of the request.
The options are passed to [http.request()](http://nodejs.org/api/http.html#http_http_request_options_callback).
Additional options are:

- `buffer` - buffer the response and save it as `res.buffer`
- `string` - buffer the response as a string and save it as `res.text`
- `json` - buffer the response as an object and save it as `res.body`
- `destination` - cojs/cogent the response to the file `destination`
- `timeout` - response header timeout per try, default `5000 milliseconds`
- `retries` - number of retries when request fails due to common server errors, default `0`
- `redirects` - resolve redirects, default `1`

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 object
- `res.res` - the response object, itself if the response was not gzipped
- `res.statusCode`
- `res.headers`
- `res.destination` - populated only if the file was successfully saved on a `200`
- `res.buffer`
- `res.text`
- `res.body` - JSON body populated only on a `200`

### request = request.extend(options)

Create a new `cogent` instance with default options. This allows you to avoid setting the same options every time. See the options listed above.

- `retries`
- `redirects`
- `timeout`
- `method`
- `gunzip`
- `netrc`
- `agent`


```js
var request = require('cogent').extend({
  auth: 'username:password'
})

var res = yield* request('http://localhost/', true)
// will send with auth header
```

---
_Source: https://npm.io/package/cogent · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
