|
| 1 | +/** |
| 2 | + * @description |
| 3 | + * HTTP code snippet generator for Requests |
| 4 | + * |
| 5 | + * @author |
| 6 | + * @montanaflynn |
| 7 | + * |
| 8 | + * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author. |
| 9 | + */ |
| 10 | + |
| 11 | +'use strict' |
| 12 | + |
| 13 | +var util = require('util') |
| 14 | + |
| 15 | +module.exports = function (source, options) { |
| 16 | + // Start snippet |
| 17 | + var code = [] |
| 18 | + |
| 19 | + // Import requests |
| 20 | + code.push('import requests\n') |
| 21 | + |
| 22 | + // Set URL |
| 23 | + code.push(util.format('url = "%s"\n', source.url)) |
| 24 | + |
| 25 | + // Construct query string |
| 26 | + if (source.queryString.length) { |
| 27 | + var qs = 'querystring = {' |
| 28 | + for (var i = 0; i < source.queryString.length; i++) { |
| 29 | + for (var key in source.queryString[i]) { |
| 30 | + qs += "'" + key + "':" + "'" + source.queryString[i][key] + "'," |
| 31 | + } |
| 32 | + } |
| 33 | + qs = qs.substring(0, qs.length - 1) |
| 34 | + qs += '}\n' |
| 35 | + code.push(qs) |
| 36 | + } |
| 37 | + |
| 38 | + // Construct payload |
| 39 | + var payload = JSON.stringify(source.postData.text) |
| 40 | + if (payload) { |
| 41 | + code.push(util.format('payload = %s', payload)) |
| 42 | + } |
| 43 | + |
| 44 | + // Construct headers |
| 45 | + var header |
| 46 | + var headers = source.allHeaders |
| 47 | + var headerCount = Object.keys(headers).length |
| 48 | + if (headerCount === 1) { |
| 49 | + for (header in headers) { |
| 50 | + code.push(util.format('headers = {\'%s\': \'%s\'}\n', header, headers[header])) |
| 51 | + } |
| 52 | + } else if (headerCount > 1) { |
| 53 | + var headerLine |
| 54 | + var count = 1 |
| 55 | + code.push('headers = {') |
| 56 | + for (header in headers) { |
| 57 | + if (count++ !== headerCount) { |
| 58 | + headerLine = util.format(' \'%s\': "%s",', header, headers[header]) |
| 59 | + } else { |
| 60 | + headerLine = util.format(' \'%s\': "%s"', header, headers[header]) |
| 61 | + } |
| 62 | + code.push(headerLine) |
| 63 | + } |
| 64 | + code.push(' }\n') |
| 65 | + } |
| 66 | + |
| 67 | + // Construct request |
| 68 | + var method = source.method |
| 69 | + var request = util.format('response = requests.request("%s", url', method) |
| 70 | + if (payload) request += ', data=payload' |
| 71 | + if (headerCount > 0) request += ', headers=headers' |
| 72 | + if (qs) request += ', params=querystring' |
| 73 | + request += ')\n' |
| 74 | + code.push(request) |
| 75 | + |
| 76 | + // Print response |
| 77 | + code.push('print(response.text)') |
| 78 | + |
| 79 | + console.log(code.join('\n')) |
| 80 | + return code.join('\n') |
| 81 | +} |
| 82 | + |
| 83 | +module.exports.info = { |
| 84 | + key: 'requests', |
| 85 | + title: 'Requests', |
| 86 | + link: 'http://docs.python-requests.org/en/latest/api/#requests.request', |
| 87 | + description: 'Requests HTTP library' |
| 88 | +} |
| 89 | + |
| 90 | +// response = requests.request("POST", url, data=payload, headers=headers, params=querystring) |
0 commit comments