1212
1313var util = require ( 'util' )
1414var CodeBuilder = require ( '../../helpers/code-builder' )
15+ var helpers = require ( './helpers' )
1516
1617module . exports = function ( source , options ) {
18+ var opts = Object . assign ( {
19+ indent : ' ' ,
20+ pretty : true
21+ } , options )
22+
1723 // Start snippet
1824 var code = new CodeBuilder ( ' ' )
1925
@@ -34,10 +40,23 @@ module.exports = function (source, options) {
3440 }
3541
3642 // 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
3853
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+ }
4160 }
4261
4362 // Construct headers
@@ -47,7 +66,7 @@ module.exports = function (source, options) {
4766
4867 if ( headerCount === 1 ) {
4968 for ( header in headers ) {
50- code . push ( 'headers = {\'%s\': \'%s\' }' , header , headers [ header ] )
69+ code . push ( 'headers = {"%s": "%s" }' , header , headers [ header ] )
5170 . blank ( )
5271 }
5372 } else if ( headerCount > 1 ) {
@@ -57,22 +76,26 @@ module.exports = function (source, options) {
5776
5877 for ( header in headers ) {
5978 if ( count ++ !== headerCount ) {
60- code . push ( 1 , '\'%s\' : "%s",' , header , headers [ header ] )
79+ code . push ( 1 , '"%s" : "%s",' , header , headers [ header ] )
6180 } else {
62- code . push ( 1 , '\'%s\' : "%s"' , header , headers [ header ] )
81+ code . push ( 1 , '"%s" : "%s"' , header , headers [ header ] )
6382 }
6483 }
6584
66- code . push ( 1 , '}' )
85+ code . push ( '}' )
6786 . blank ( )
6887 }
6988
7089 // Construct request
7190 var method = source . method
7291 var request = util . format ( 'response = requests.request("%s", url' , method )
7392
74- if ( payload ) {
75- request += ', data=payload'
93+ if ( hasPayload ) {
94+ if ( jsonPayload ) {
95+ request += ', json=payload'
96+ } else {
97+ request += ', data=payload'
98+ }
7699 }
77100
78101 if ( headerCount > 0 ) {
@@ -100,5 +123,3 @@ module.exports.info = {
100123 link : 'http://docs.python-requests.org/en/latest/api/#requests.request' ,
101124 description : 'Requests HTTP library'
102125}
103-
104- // response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
0 commit comments