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' } |