Have ideas to improve npm?Join in the discussion! »

    digest-fetch

    1.2.0 • Public • Published

    digest-fetch

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

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

    Installation

    // dependencies for node
    npm install node-fetch
    
    // for browers, if to use it directly, please indcude file `digest-fetch.js` in a <script/> 
    <script type="application/javascript" src="path-to-digest-fetch.js'></script>
    

    Get Started

    // Use require
    const DigestFetch = require('digest-fetch')
    
    // Use import
    import * as DigestFetch from "digest-fetch"
    
    // In browser
    const DigestFetch = window.DigestFetch;
    

    Http Basic Authentication

    Create a client using basic authentication challenge

    const client = new DigestFetch('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 DigestFetch('user', 'password') 
    

    Specify options for digest authentication

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

    Options fields:

    field type default description
    algorithm string 'MD5' algorithm to be used: 'MD5' or 'MD5-sess'
    statusCode number 401 custom authentication failure code for avoiding browser prompt, see details below
    cnonceSize number 32 length of the cnonce
    logger object none logger for debug, can use console, default no logging
    basic bool false switch to use basic authentication
    precomputeHash bool false wether 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 This plugin is implemented following RFC2069 and RFC2617, 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!

    Install

    npm i digest-fetch

    DownloadsWeekly Downloads

    8,430

    Version

    1.2.0

    License

    ISC

    Unpacked Size

    131 kB

    Total Files

    15

    Last publish

    Collaborators

    • avatar