node-wget-fetch
Ultra simple async retrieval of resources or remote files over http or https, an cli tool, convenience wrapper of node-fetch, and a seamless retry ability.
Install
npm install node-wget-fetch
Basic API
fetching(url
, action = destination
| response_body_type
| options
[, options
])
-
url
A string representing an absolute url
-
action
Save to destination or body action on response type or use for options
response type can be:
- '
header
' for all response headers - raw() - '
object
' for the response object - no post/pre processing - '
array
' for arrayBuffer() - '
buffer
' for buffer() - '
blob
' for blob() - '
json
' for json() - '
text
' for text() - '
stream
' for NodeJs.readableStream()
default is 'download
'
-
options
Standard Request/Fetch Options for the HTTP(S) request
-
Returns: Promise of response body
of above type, only if status text is OK
.
-
The response type will set Fetch/Request header 'Content-Type'
as:
- '
json
' = 'application/json; charset=utf-8' - '
text
' = 'application/x-www-form-urlencoded' - '
blob
' = 'application/octet' - '
buffer
' = 'application/octet' - '
header
' = 'text/plain' - '
object
' = 'application/json; charset=utf-8' - '
stream
' = 'application/octet' - '
array
' = 'application/octet'
To customize retry
Fetch operation, update in options
.
retry:
{
retries: 1,
factor: 2,
minTimeout: 1000,
maxTimeout: 'Infinity',
randomize: false,
}
Convenience Request Methods
import { get, head, options } from 'node-wget-fetch';
get(url
, response_body_type
[, options
]);
head(url
, response_body_type
[, options
]);
options(url
, response_body_type
[, options
);]
For simply submitting body
data
Note: body
data is passed in, handled by URLSearchParams class, if String
or Object
.
import { post, put, patch, delete } from 'node-wget-fetch';
post(url
, body
, response_body_type
[, options
]);
put(url
, body
, response_body_type
[, options
]);
patch(url
, body
, response_body_type
[, options
]);
delete(url
, body
, response_body_type
[, options
]);
Bring in or access node-fetch directly
fetching.fetch(url
[, options
]);
Usage
const fetching = require('node-wget-fetch');
const wget = fetching.wget;
import { wget } from 'node-wget-fetch';
wget(url)
.then((info) => {});
.catch((error) => {});
wget(url, { headers: { Accept: '*/*' } })
.then((info) => {});
.catch((error) => {});
wget(url, destination_folder_or_filename, { timeout: 2000 } )
.then((info) => {});
.catch((error) => {});
fetching(url, responseType,
{ headers: {Accept: '*/*' } })
)
.then((processedResponse) => {
});
.catch((error) => {});
Examples
import { wget } from 'node-wget-fetch';
wget('https://raw.github.com/techno-express/node-wget-fetch/master/angleman.png');
wget('https://raw.github.com/techno-express/node-wget-fetch/master/package.json',
'/tmp/',
{ timeout: 2000 }
)
.then((info) => {
console.log('--- headers:');
console.log(info.headers);
console.log('--- file path:');
console.log(info.filepath);
console.log('--- file size retrieved:');
console.log(info.fileSize);
console.log('--- Do file retrieved match "Content-Length"?:');
console.log(info.fileSizeMatch);
})
.catch((error) => {
console.log('--- error:');
console.log(error);
});
);
CLI
Install:
npm install -g node-wget-fetch
Use:
Usage: wget [options] <url>
Or
Usage: fetch [options] <url>
Ultra simple async retrieval of remote files over http or https
Options:
-h, --help output usage information
-v, --version output version number
-d, --destination <folder> specify download destination
Usage:
# Download file
$ wget https://github.com/NodeOS/NodeOS/archive/master.zip
$ fetch https://github.com/NodeOS/NodeOS/archive/master.zip
# Download file to location
$ wget https://github.com/NodeOS/NodeOS/archive/master.zip -d path/to/here/
$ fetch https://github.com/NodeOS/NodeOS/archive/master.zip -d path/to/here/
License: MIT