Skip to content

Commit dee57a8

Browse files
committed
fixing Python Requests (query)
1 parent b7ed85e commit dee57a8

3 files changed

Lines changed: 43 additions & 28 deletions

File tree

‎src/targets/python/requests.js‎

Lines changed: 41 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* @description
3-
* HTTP code snippet generator for Requests
3+
* HTTP code snippet generator for Python using Requests
44
*
55
* @author
66
* @montanaflynn
@@ -11,32 +11,29 @@
1111
'use strict'
1212

1313
var util = require('util')
14+
var CodeBuilder = require('../../helpers/code-builder')
1415

1516
module.exports = function (source, options) {
1617
// Start snippet
17-
var code = []
18+
var code = new CodeBuilder(' ')
1819

1920
// Import requests
20-
code.push('import requests\n')
21+
code.push('import requests')
22+
.blank()
2123

2224
// Set URL
23-
code.push(util.format('url = "%s"\n', source.url))
25+
code.push(util.format('url = "%s"', source.url))
26+
.blank()
2427

2528
// Construct query string
2629
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)
30+
code.push('querystring = ' + JSON.stringify(source.queryObj))
31+
.blank()
3632
}
3733

3834
// Construct payload
3935
var payload = JSON.stringify(source.postData.text)
36+
4037
if (payload) {
4138
code.push(util.format('payload = %s', payload))
4239
}
@@ -45,39 +42,57 @@ module.exports = function (source, options) {
4542
var header
4643
var headers = source.allHeaders
4744
var headerCount = Object.keys(headers).length
45+
4846
if (headerCount === 1) {
4947
for (header in headers) {
50-
code.push(util.format('headers = {\'%s\': \'%s\'}\n', header, headers[header]))
48+
code.push(util.format('headers = {\'%s\': \'%s\'}', header, headers[header]))
49+
.blank()
5150
}
5251
} else if (headerCount > 1) {
5352
var headerLine
5453
var count = 1
54+
5555
code.push('headers = {')
56+
5657
for (header in headers) {
5758
if (count++ !== headerCount) {
58-
headerLine = util.format(' \'%s\': "%s",', header, headers[header])
59+
headerLine = util.format('\'%s\': "%s",', header, headers[header])
5960
} else {
60-
headerLine = util.format(' \'%s\': "%s"', header, headers[header])
61+
headerLine = util.format('\'%s\': "%s"', header, headers[header])
6162
}
62-
code.push(headerLine)
63+
64+
code.push(1, headerLine)
6365
}
64-
code.push(' }\n')
66+
67+
code.push(1, '}')
68+
.blank()
6569
}
6670

6771
// Construct request
6872
var method = source.method
6973
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+
75+
if (payload) {
76+
request += ', data=payload'
77+
}
78+
79+
if (headerCount > 0) {
80+
request += ', headers=headers'
81+
}
82+
83+
if (qs) {
84+
request += ', params=querystring'
85+
}
86+
87+
request += ')'
88+
7489
code.push(request)
90+
.blank()
7591

76-
// Print response
77-
code.push('print(response.text)')
92+
// Print response
93+
.push('print(response.text)')
7894

79-
console.log(code.join('\n'))
80-
return code.join('\n')
95+
return code.join()
8196
}
8297

8398
module.exports.info = {

‎test/fixtures/output/python/requests/full.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
url = "http://mockbin.com/har"
44

5-
querystring = {'name':'foo','value':'bar','name':'foo','value':'baz','name':'baz','value':'abc'}
5+
querystring = {"foo":["bar","baz"],"baz":"abc","key":"value"}
66

77
payload = "foo=bar"
88
headers = {

‎test/fixtures/output/python/requests/query.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
url = "http://mockbin.com/har"
44

5-
querystring = {'name':'foo','value':'bar','name':'foo','value':'baz','name':'baz','value':'abc'}
5+
querystring = {"foo":["bar","baz"],"baz":"abc","key":"value"}
66

77
response = requests.request("GET", url, params=querystring)
88

0 commit comments

Comments
 (0)