curl.js

const http = require('http')

/**
 * Formats an http.IncomingMessage like curl does.
 *
 * @memberof module:node-vcr/curl
 * @param { http.IncomingMessage }
 * @returns { String }
 */
const request = (req) => {
  let out = `< ${req.method} ${req.url} HTTP/${req.httpVersion}\n`

  Object.keys(req.headers).forEach((name) => {
    out += `< ${name}: ${req.headers[name]}\n`
  })

  return `${out}<`
}

/**
 * Formats an http.ServerResponse like curl does.
 *
 * @memberof module:node-vcr/curl
 * @param { http.ServerResponse }
 * @returns { String }
 */
const response = (req, res) => {
  let out = `> HTTP/${req.httpVersion} ${res.statusCode} ${http.STATUS_CODES[res.statusCode]}\n`

  Object.keys(res._headers).forEach((name) => {
    out += `> ${name}: ${res._headers[name]}\n`
  })

  return `${out}>`
}

/**
 * @module node-vcr/curl
 */
module.exports = {
  request,
  response
}