node-wget-fetch

1.1.3 • Public • Published

node-wget-fetch

NPM

Dependencies Status Node.js CI codecov MaintainabilityRelease

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, // The maximum amount of times to retry the operation.
    factor: 2, //The exponential factor to use.
    minTimeout: 1000, // The number of milliseconds before starting the first retry.
    maxTimeout: 'Infinity', // The maximum number of milliseconds between two retries.
    randomize: false, // Randomizes the timeouts by multiplying with a factor between 1 to 2.
 }

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

// CommonJS
const fetching = require('node-wget-fetch');
const wget = fetching.wget;

// ESM 12+
import { wget } from 'node-wget-fetch';

wget(url) // retrieve to current directory
    .then((info) => {});
    .catch((error) => {});

wget(url, { headers:  { Accept: '*/*' } }) // with optional `Fetch` options
    .then((info) => {});
    .catch((error) => {});

wget(url, destination_folder_or_filename, { timeout: 2000 } )  // with optional `Fetch` options
    .then((info) => {});
    .catch((error) => {});


fetching(url, responseType, // *responseType* 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'
    { headers: {Accept: '*/*' } }) // with optional `Fetch` options
    )
    .then((processedResponse) => {
        // No file is retrieved or saved,
        // an resolved `Fetch` response body of above type is returned
    });
    .catch((error) => {});

Examples

import { wget } from 'node-wget-fetch';

wget('https://raw.github.com/techno-express/node-wget-fetch/master/angleman.png'); // angleman.png saved to current folder

wget('https://raw.github.com/techno-express/node-wget-fetch/master/package.json',
    '/tmp/', // destination path or path with filename, default is ./
    { timeout: 2000 } // Any `Fetch` Options, this sets duration to wait for request in milliseconds, default 0
    )
    .then((info) => {
        console.log('--- headers:'); // display all response headers
        console.log(info.headers);
        console.log('--- file path:'); // display file retrieved info
        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); // error encountered
    });
);

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

Package Sidebar

Install

npm i node-wget-fetch

Weekly Downloads

300

Version

1.1.3

License

MIT

Unpacked Size

33.1 kB

Total Files

5

Last publish

Collaborators

  • technoexpress