190 lines
4.4 KiB
Markdown
190 lines
4.4 KiB
Markdown
node-curl [](http://travis-ci.org/jiangmiao/node-curl)
|
|
=========
|
|
|
|
node cURL wrapper, support all options and infos.
|
|
|
|
Quick Start
|
|
-----------
|
|
|
|
* quick start
|
|
|
|
curl = require('node-curl');
|
|
curl('www.google.com', function(err) {
|
|
console.info(this.status);
|
|
console.info('-----');
|
|
console.info(this.body);
|
|
console.info('-----');
|
|
console.info(this.info('SIZE_DOWNLOAD'));
|
|
});
|
|
|
|
* with options
|
|
|
|
curl = require('node-curl')
|
|
curl('www.google.com', {VERBOSE: 1, RAW: 1}, function(err) {
|
|
console.info(this);
|
|
});
|
|
|
|
* run the example/test.js
|
|
|
|
node examples/test.js
|
|
|
|
Usage
|
|
-----
|
|
|
|
* curl
|
|
|
|
curl(url, [options = {}], callback)
|
|
callback includes 1 parameters (error)
|
|
result is stored in curl
|
|
|
|
* Retrieve Data from curl
|
|
|
|
members:
|
|
status - Http Response code
|
|
body - Http body
|
|
header - Http header
|
|
|
|
url - the url set by curl(...)
|
|
options - the options set by curl(...)
|
|
defaultOptions - the defaultOptions
|
|
effectiveOptions - the options curl used
|
|
|
|
methods:
|
|
info(name) - Get information of result, see 'info' section
|
|
|
|
REMARK:
|
|
If the http is redirected, then header will contain at least 2 http headers.
|
|
|
|
|
|
* Curl Control
|
|
|
|
members
|
|
debug (default: false)
|
|
- logging node-curl debug info
|
|
|
|
methods:
|
|
void reset()
|
|
- reset curl and set options to default options
|
|
|
|
void setDefaultOptions(options, reset = true)
|
|
- set default options
|
|
|
|
curl create(defaultOptions)
|
|
- create a new curl with default options
|
|
|
|
Options
|
|
-------
|
|
* Any cURL Easy Options
|
|
|
|
eg: CURLOPT_VERBOSE will be VERBOSE, CURLOPT_HEADER will be HEADER
|
|
|
|
Full list at http://curl.haxx.se/libcurl/c/curl_easy_setopt.html
|
|
|
|
* node-curl Extra Options
|
|
|
|
RAW - Returns Buffer instead of String in result.body
|
|
DEBUG - Replace curl.debug
|
|
|
|
* About slist parameters
|
|
|
|
node-curl support slist which map to Javascript Array
|
|
|
|
eg:
|
|
HTTPHEADER: ['FOO', 'BAR']
|
|
HTTPHEADER: 'FOO'
|
|
|
|
any non-array parameter will convert to [ parameter.toString() ]
|
|
|
|
Infos
|
|
-----
|
|
* Any cURL Info options
|
|
|
|
eg: CURLINFO_EFFECTIVE_URL will be EFFETCTIVE_URL
|
|
|
|
full list at http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html
|
|
|
|
|
|
* About slist
|
|
|
|
slist will be returns in Array
|
|
eg: CURLINFO_COOKIELIST
|
|
|
|
MultiPart Upload
|
|
----------------
|
|
Use MULTIPART option
|
|
|
|
There are 4 options in MULTIPART, `name`, `file`, `type`, `contents`
|
|
|
|
```javascript
|
|
curl('127.0.0.1/upload.php', {
|
|
MULTIPART: [
|
|
{name: 'file', file: '/file/path', type: 'text/html'},
|
|
{name: 'sumbit', contents: 'send'}
|
|
]
|
|
}, function(e) {
|
|
console.log(e);
|
|
console.log(this.body);
|
|
this.close()
|
|
});
|
|
```
|
|
|
|
Low Level Curl Usage
|
|
--------------------
|
|
|
|
require 'node-curl/lib/Curl'
|
|
|
|
Methods:
|
|
|
|
Curl setopt(optionName, optionValue)
|
|
Curl perform()
|
|
Curl on(eventType, callback)
|
|
Mixed getinfo(infoName)
|
|
|
|
Events:
|
|
|
|
'data', function(Buffer chunk) {}
|
|
'header', function(Buffer chunk) {}
|
|
'error', function(Error error) {}
|
|
'end', function() {}
|
|
|
|
Example: examples/low-level.js
|
|
|
|
var Curl = require('node-curl/lib/Curl')
|
|
|
|
var p = console.log;
|
|
var url = process.argv[2];
|
|
|
|
var curl = new Curl();
|
|
|
|
if (!url)
|
|
url = 'www.yahoo.com';
|
|
|
|
curl.setopt('URL', url);
|
|
curl.setopt('CONNECTTIMEOUT', 2);
|
|
|
|
// on 'data' must be returns chunk.length, or means interrupt the transfer
|
|
curl.on('data', function(chunk) {
|
|
p("receive " + chunk.length);
|
|
return chunk.length;
|
|
});
|
|
|
|
curl.on('header', function(chunk) {
|
|
p("receive header " + chunk.length);
|
|
return chunk.length;
|
|
})
|
|
|
|
// curl.close() should be called in event 'error' and 'end' if the curl won't use any more.
|
|
// or the resource will not release until V8 garbage mark sweep.
|
|
curl.on('error', function(e) {
|
|
p("error: " + e.message);
|
|
curl.close();
|
|
});
|
|
|
|
|
|
curl.on('end', function() {
|
|
p('code: ' + curl.getinfo('RESPONSE_CODE'));
|
|
p('done.');
|
|
curl.close();
|
|
});
|
|
|
|
curl.perform();
|