Socket
Socket
Sign inDemoInstall

digest-fetch

Package Overview
Dependencies
7
Maintainers
1
Versions
47
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    digest-fetch

digest auth request plugin for fetch/node-fetch also support http basic auth authentication


Version published
Weekly downloads
865K
decreased by-15.48%
Maintainers
1
Install size
175 kB
Created
Weekly downloads
 

Readme

Source

digest-fetch

Join the chat at https://gitter.im/devfans/digest-fetch NPM Version NPM Downloads Test Coverage

digest auth request plugin for fetch/node-fetch also supports http basic authentication

Installation

For digest-fetch 3.0.0 or above

npm install digest-fetch@latest node-fetch@latest

For digest-fetch 2.0.3 or below

npm install digest-fetch@v2 node-fetch@v2

Get Started

// Use require for digest-fetch 2.0.3 or below
const DigestClient = require('digest-fetch')

// Use import
import DigestClient from "digest-fetch"

Typescript

For digest-fetch 3.0.0 or above

Since digest-fetch becomes ES module starting 3.0.0, you need to set your project as module to use import.

  • Specify "type": "module" in your package.json
  • Specify --esm for ts-node like npx ts-node --esm src/index.ts
  • Specify "module": "ESNext", "moduleResolution": "node" in your tsconfig.json
// Install dependencies
npm install digest-fetch@latest node-fetch@latest

// Import
import DigestClient from "digest-fetch"

For digest-fetch 2.0.3 or below

// Install dependencies
npm install digest-fetch@v2 node-fetch@v2

// Import
import DigestClient from "digest-fetch"

Http Basic Authentication

Create a client using basic authentication challenge

const client = new DigestClient('user', 'password', { basic: true })
client.fetch(url, options).then(res => res.json).then(console.dir)
Digest Access Authentication

Create a digest authentication request client with default options

const client = new DigestClient('user', 'password') 

Specify options for digest authentication

const client = new DigestClient('user', 'password', { algorithm: 'MD5' }) 

Supported Algorithm

['MD5', 'MD5-sess', 'SHA-256', 'SHA-256-sess', 'SHA-512-256', 'SHA-512-256-sess']

Options fields:

fieldtypedefaultdescription
algorithmstring'MD5'algorithm to be used: 'MD5', 'SHA-256', 'SHA-512-256' or with '-sess'
statusCodenumber401custom alternate authentication failure code for avoiding browser prompt, see details below
cnonceSizenumber32length of the cnonce
loggerobjectnonelogger for debug, can use console, default no logging
basicboolfalseswitch to use basic authentication
precomputeHashboolfalsewether to attach hash of credentials to the client instance instead of raw credential

Details:

Do request same way as fetch or node-fetch

const url = ''
const options = {}
client.fetch(url, options)
  .then(resp=>resp.json())
  .then(data=>console.log(data))
  .catch(e=>console.error(e))

Pass in refresh request options factory function for conditions options needs be refreshed when trying again. For example when posting with file stream:

const factory = () => ({ method: 'post', body: fs.createReadStream('path-to-file') })
client.fetch(url, {factory})
  .then(resp=>resp.json())
  .then(data=>console.log(data))
  .catch(e=>console.error(e))

About

Digest authentication: https://en.wikipedia.org/wiki/Digest_access_authentication or https://www.rfc-editor.org/rfc/rfc7616 This plugin is implemented following RFC2069, RFC2617 and RFC7616 supports http basic authentication as well!

Please open issues if you find bugs or meet problems during using this plugin. Feel free to open PRs whenever you have better ideas on this project!

Keywords

FAQs

Last updated on 29 Aug 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc