Code coverage report for src/targets/httpie.js

Statements: 78.05% (32 / 41)      Branches: 64.44% (29 / 45)      Functions: 80% (4 / 5)      Lines: 78.05% (32 / 41)      Ignored: none     

All files » src/targets/ » httpie.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107    1   1 14                             14     14 7     14   14       14       14 2     14       14       14 1     14       14       14       14     14 1   1 3   3 1 2     2           14 14       14           14     1              
'use strict'
 
var util = require('util')
 
module.exports = function (source, options) {
  var opts = util._extend({
    queryParams: false,
    body: false,
    cert: false,
    headers: false,
    indent: '  ',
    pretty: false,
    print: false,
    short: false,
    style: false,
    timeout: false,
    verbose: false,
    verify: false
  }, options)
 
  var code = []
 
  // start with body pipe
  if (source.postData && source.postData.text) {
    code.push(util.format('echo %s | ', JSON.stringify(source.postData.text)))
  }
 
  var flags = []
 
  Iif (opts.headers) {
    flags.push(opts.short ? '-h' : '--headers')
  }
 
  Iif (opts.body) {
    flags.push(opts.short ? '-b' : '--body')
  }
 
  if (opts.verbose) {
    flags.push(opts.short ? '-v' : '--verbose')
  }
 
  Iif (opts.print) {
    flags.push(util.format('%s=%s', opts.short ? '-p' : '--print', opts.print))
  }
 
  Iif (opts.verify) {
    flags.push(util.format('--verify=%s', opts.verify))
  }
 
  if (opts.cert) {
    flags.push(util.format('--cert=%s', opts.cert))
  }
 
  Iif (opts.pretty) {
    flags.push(util.format('--pretty=%s', opts.pretty))
  }
 
  Iif (opts.style) {
    flags.push(util.format('--style=%s', opts.pretty))
  }
 
  Iif (opts.timeout) {
    flags.push(util.format('--timeout=%s', opts.timeout))
  }
 
  code.push(util.format('http %s%s %s', flags.length ? flags.join(' ') + ' ' : '', source.method, opts.queryParams ? source.url : source.fullUrl))
 
  // construct query params
  if (opts.queryParams) {
    var queryStringKeys = Object.keys(source.queryObj)
 
    queryStringKeys.map(function (name) {
      var value = source.queryObj[name]
 
      if (util.isArray(value)) {
        value.map(function (val) {
          code.push(util.format('%s==%s', name, val))
        })
      } else {
        code.push(util.format('%s==%s', name, value))
      }
    })
  }
 
  // construct headers
  Object.keys(source.allHeaders).sort().map(function (key) {
    code.push(util.format('%s:%s', key, source.allHeaders[key]))
  })
 
  // construct post params
  Iif (!source.postData.text && source.postData.params && source.postData.params.length) {
    source.postData.params.map(function (param) {
      code.push(util.format('%s:%s', param.name, param.value))
    })
  }
 
  return code.join(opts.indent !== false ? ' \\\n' + opts.indent : ' ')
}
 
module.exports.info = {
  key: 'httpie',
  title: 'HTTPie',
  link: 'http://httpie.org/',
  description: 'a CLI, cURL-like tool for humans',
  extname: '.sh'
}