Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/modules / ___dist / oneRequest / deps / fromRequestToHash.js
Size: Mime:
import { stringify } from 'chain-able-boost'

const version = process.env.VERSION

/**
 * @param {Express.request} req
 * @return {String}
 * @example GET/url/@@/{params, body}
 */
// eslint-disable-next-line
function fromRequestToHash(request, namespace = '') {
  const req = request.req || request
  // statusCode
  const { hash, cookie, originalUrl, _parsedOriginalUrl, _parsedUrl, method, referer, baseUrl } = req
  const query = req.query || req.params || req.body || {}
  const interestedin = {
    query,
    hash,
    cookie,
    originalUrl,
    _parsedOriginalUrl,
    _parsedUrl,
    method,
    referer,
    baseUrl,
  }
  // fromRequestToLog(req)

  if (hash) {
    return hash
  }
  
  // GET/url
  let computed = ''
  
  if (req.url) {
    computed += req.url._raw || req.url
  }
  if (!computed && req.originalUrl) {
    computed += originalUrl
  }
  if (!computed && req._parsedOriginalUrl) {
    computed += req._parsedOriginalUrl.href
  }
  if (!computed && req._parsedUrl) {
    computed += req._parsedUrl.url
  }
  if (!computed && req.referer) {
    computed += req.referer
  }

  // if (!computed && req.req) {
  //   return fromRequestToHash(req.req, namespace)
  // }

  computed = '' + version + namespace + method  + computed
  // can cache per user
  // computed += cookie || ''

  // separate
  computed += '/@@/'

  Object.keys(query).forEach(key => computed += key + stringify(query[key]))

  // could also md5 / fliphash
  if (computed.length > 100) {
    computed = computed.slice(0, 100)
  }
  // const computed = stringify({ [method + originalUrl || url._raw]: query })

  return computed
}

export { fromRequestToHash }
export default fromRequestToHash