12
12
13
13
var util = require ( 'util' )
14
14
var CodeBuilder = require ( '../../helpers/code-builder' )
15
+ var helpers = require ( './helpers' )
15
16
16
17
module . exports = function ( source , options ) {
18
+ var opts = Object . assign ( {
19
+ indent : ' ' ,
20
+ pretty : true
21
+ } , options )
22
+
17
23
// Start snippet
18
24
var code = new CodeBuilder ( ' ' )
19
25
@@ -34,10 +40,23 @@ module.exports = function (source, options) {
34
40
}
35
41
36
42
// Construct payload
37
- var payload = JSON . stringify ( source . postData . text )
43
+ let hasPayload = false
44
+ let jsonPayload = false
45
+ switch ( source . postData . mimeType ) {
46
+ case 'application/json' :
47
+ if ( source . postData . jsonObj ) {
48
+ code . push ( 'payload = %s' , helpers . literalRepresentation ( source . postData . jsonObj , opts ) )
49
+ jsonPayload = true
50
+ hasPayload = true
51
+ }
52
+ break
38
53
39
- if ( payload ) {
40
- code . push ( 'payload = %s' , payload )
54
+ default :
55
+ var payload = JSON . stringify ( source . postData . text )
56
+ if ( payload ) {
57
+ code . push ( 'payload = %s' , payload )
58
+ hasPayload = true
59
+ }
41
60
}
42
61
43
62
// Construct headers
@@ -47,7 +66,7 @@ module.exports = function (source, options) {
47
66
48
67
if ( headerCount === 1 ) {
49
68
for ( header in headers ) {
50
- code . push ( 'headers = {\'%s\': \'%s\' }' , header , headers [ header ] )
69
+ code . push ( 'headers = {"%s": "%s" }' , header , headers [ header ] )
51
70
. blank ( )
52
71
}
53
72
} else if ( headerCount > 1 ) {
@@ -57,22 +76,26 @@ module.exports = function (source, options) {
57
76
58
77
for ( header in headers ) {
59
78
if ( count ++ !== headerCount ) {
60
- code . push ( 1 , '\'%s\' : "%s",' , header , headers [ header ] )
79
+ code . push ( 1 , '"%s" : "%s",' , header , headers [ header ] )
61
80
} else {
62
- code . push ( 1 , '\'%s\' : "%s"' , header , headers [ header ] )
81
+ code . push ( 1 , '"%s" : "%s"' , header , headers [ header ] )
63
82
}
64
83
}
65
84
66
- code . push ( 1 , '}' )
85
+ code . push ( '}' )
67
86
. blank ( )
68
87
}
69
88
70
89
// Construct request
71
90
var method = source . method
72
91
var request = util . format ( 'response = requests.request("%s", url' , method )
73
92
74
- if ( payload ) {
75
- request += ', data=payload'
93
+ if ( hasPayload ) {
94
+ if ( jsonPayload ) {
95
+ request += ', json=payload'
96
+ } else {
97
+ request += ', data=payload'
98
+ }
76
99
}
77
100
78
101
if ( headerCount > 0 ) {
@@ -100,5 +123,3 @@ module.exports.info = {
100
123
link : 'http://docs.python-requests.org/en/latest/api/#requests.request' ,
101
124
description : 'Requests HTTP library'
102
125
}
103
-
104
- // response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
0 commit comments