Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jiangmiao/node-curl
node curl wrapper with fully implemented
https://github.com/jiangmiao/node-curl
Last synced: 2 days ago
JSON representation
node curl wrapper with fully implemented
- Host: GitHub
- URL: https://github.com/jiangmiao/node-curl
- Owner: jiangmiao
- License: mit
- Created: 2012-02-14T13:20:36.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2016-10-12T22:40:40.000Z (about 8 years ago)
- Last Synced: 2024-09-23T14:15:11.861Z (about 2 months ago)
- Language: C++
- Homepage: https://npmjs.org/package/node-curl
- Size: 372 KB
- Stars: 184
- Watchers: 13
- Forks: 28
- Open Issues: 32
-
Metadata Files:
- Readme: README.md
- License: LICENSE-MIT
Awesome Lists containing this project
README
node-curl [![Build Status](https://secure.travis-ci.org/jiangmiao/node-curl.png?branch=master)](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 headerurl - the url set by curl(...)
options - the options set by curl(...)
defaultOptions - the defaultOptions
effectiveOptions - the options curl usedmethods:
info(name) - Get information of result, see 'info' sectionREMARK:
If the http is redirected, then header will contain at least 2 http headers.* Curl Control
members
debug (default: false)
- logging node-curl debug infomethods:
void reset()
- reset curl and set options to default optionsvoid setDefaultOptions(options, reset = true)
- set default optionscurl create(defaultOptions)
- create a new curl with default optionsOptions
-------
* Any cURL Easy Optionseg: 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 optionseg: 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_COOKIELISTMultiPart Upload
----------------
Use MULTIPART optionThere 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();