UNPKG

amazon-associate

Version:

amazon-associate is a simple interface to amazon associate reports for nodejs

42 lines (32 loc) 1.35 kB
crypto = require 'crypto' _ = require 'underscore' md5 = (string) -> hash = crypto.createHash 'md5' hash.update string hash.digest 'hex' module.exports = digest = parseChallenge: (challengeString) -> # header is something like this: # Digest realm="DataFeeds", qop="auth", nonce="69e3391d503ae9fd43e9b5202390d15a", opaque="0753652c1f86cb100ec28975b6a72fbf" obj = {} _.each challengeString.substring(7).split(/,\s+/), (part) -> [key, valueInQuotes] = part.split '=' obj[key] = valueInQuotes.replace /"/g, '' return obj renderResponse: (challenge, username, password, path) -> h1 = md5 [username, challenge.realm, password].join ':' h2 = md5 ['GET', path].join ':' md5 [h1, challenge.nonce, '000001', '', 'auth', h2].join ':' renderDigest: (challenge, username, password, path) -> params = username: username realm: challenge.realm nonce: challenge.nonce uri: path qop: challenge.qop response: digest.renderResponse challenge, username, password, path nc: '000001' cnonce: '' opaque: challenge.opaque parts = _.map _.keys(params), (key) -> "#{key}=\"#{params[key]}\"" 'Digest ' + parts.join ', '