source: Dev/trunk/node_modules/grunt-http/README.md

Last change on this file was 517, checked in by hendrikvanantwerpen, 11 years ago

Deployment and database management now done through Grunt. Look mom, no shell\!

File size: 5.8 KB
Line 
1# grunt-http
2
3> Sends a HTTP request and deals with the response.
4
5[![NPM](https://nodei.co/npm/grunt-http.png)](https://nodei.co/npm/grunt-http)
6
7## Getting Started
8This plugin requires Grunt `~0.4.1`
9
10If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
11
12```shell
13npm install grunt-http --save-dev
14```
15
16Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
17
18```js
19grunt.loadNpmTasks('grunt-http');
20```
21
22## The "http" task
23
24### Overview
25In your project's Gruntfile, add a section named `http` to the data object passed into `grunt.initConfig()`.
26
27```js
28grunt.initConfig({
29  http: {
30    your_service: {
31      options: {
32        url: 'your/url.com',
33      },
34      dest: 'optional/file/to/save/response'
35    }
36  }
37})
38```
39
40If you add a source file, the contents will be added to the `body` option unless another field is specified in the `sourceField` option.
41
42### Options
43
44grunt-http uses the [request](https://github.com/mikeal/request) module under the hood, and apart from a couple specific to grunt-http options, the rest get passed straight to it. Here's a copy of the of the module's option docs. Otherwise, [go to the repo](https://github.com/mikeal/request) and have a look at what's it's capable of.
45
46- `uri || url` - fully qualified uri or a parsed url object from url.parse(). REQUIRED.
47- `qs` - object containing querystring values to be appended to the uri
48- `method` - http method, defaults to GET
49- `headers` - http headers, defaults to {}
50- `body` - entity body for PATCH, POST and PUT requests. Must be buffer or string.
51- `sourceField` - A field in the body or form to add the source files' contents to. Can contain full stops to separate object path. Ie "form.js\_code".
52- `form` - when passed an object this will set body but to a querystring representation of value and adds Content-type: application/x-www-form-urlencoded; charset=utf-8 header. When passed no option a FormData instance is returned that will be piped to request.
53- `auth` - A hash containing values user || username, password || pass, and sendImmediately (optional). [See more info here](https://github.com/mikeal/request#http-authentication).
54- `json` - sets body but to JSON representation of value and adds Content-type: application/json header. Additionally, parses the response body as json.
55- `multipart` - (experimental) array of objects which contains their own headers and body attribute. Sends multipart/related request. See example below.
56- `followRedirect` - follow HTTP 3xx responses as redirects. defaults to true.
57- `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects. defaults to false.
58- `maxRedirects` - the maximum number of redirects to follow, defaults to 10.
59- `encoding` - Encoding to be used on setEncoding of response data. If set to null, the body is returned as a Buffer.
60- `pool` - A hash object containing the agents for these requests. If omitted this request will use the global pool which is set to node's default maxSockets.
61- `pool.maxSockets` - Integer containing the maximum amount of sockets in the pool.
62- `timeout` - Integer containing the number of milliseconds to wait for a request to respond before aborting the request
63- `proxy` - An HTTP proxy to be used. Support proxy Auth with Basic Auth the same way it's supported with the url parameter by embedding the auth info in the uri.
64- `oauth` - Options for OAuth HMAC-SHA1 signing. [See more info here](https://github.com/mikeal/request#oauth-signing).
65- `hawk` - Options for [Hawk signing](https://github.com/hueniverse/hawk). The credentials key must contain the necessary signing info, [see hawk docs for details](https://github.com/hueniverse/hawk#usage-example).
66- `strictSSL` - Set to true to require that SSL certificates be valid. Note: to use your own certificate authority, you need to specify an agent that was created with that ca as an option.
67- `jar` - Set to false if you don't want cookies to be remembered for future use or define your custom cookie jar ([see mikeal/request's examples section](https://github.com/mikeal/request#examples))
68- `aws` - object containing aws signing information, should have the properties key and secret as well as bucket unless you're specifying your bucket as part of the path, or you are making a request that doesn't use a bucket (i.e. GET Services)
69- `httpSignature` - Options for the [HTTP Signature Scheme](https://github.com/joyent/node-http-signature/blob/master/http_signing.md) using [Joyent's library](https://github.com/joyent/node-http-signature). The keyId and key properties must be specified. See the docs for other options.
70- `localAddress` - Local interface to bind for network connections.
71- `ignoreErrors` - Ignore the status code returned (if any).
72
73### Usage Examples
74
75#### Google Closure
76In this example, we're using google's closure service to compile a JS file.
77
78```js
79grunt.initConfig({
80  http: {
81    closure: {
82      options: {
83        url: 'http://closure-compiler.appspot.com/compile',
84        method: 'POST',
85        form: {
86          output_info: 'compiled_code',
87          output_format: 'text',
88          compilation_level: 'SIMPLE_OPTIMIZATIONS',
89          warning_level: 'default'
90        },
91        sourceField: 'form.js_code'
92      },
93      files: {
94        'build/main.js': 'src/main.js'
95      }
96    }
97  }
98});
99```
100
101## Contributing
102In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).
103
104## [Release History](/johngeorgewright/grunt-http/releases)
105
Note: See TracBrowser for help on using the repository browser.