Skip to content

Commit 5caea9b

Browse files
committed
Merge branch 'master' of https://github.com/montanaflynn/httpsnippet into montanaflynn-master
Conflicts: src/targets/node/request.js
2 parents 1003085 + 004b2f8 commit 5caea9b

19 files changed

Lines changed: 221 additions & 4 deletions

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ Currently the following output [targets](/src/targets) are supported:
4444
- [pecl/http v2](http://devel-m6w6.rhcloud.com/mdref/http)
4545
- Python
4646
- [Python 3](https://docs.python.org/3/library/http.client.html)
47+
- [Requests](http://docs.python-requests.org/en/latest/api/#requests.request)
4748
- Objective-C
4849
- [NSURLSession](https://developer.apple.com/library/mac/documentation/Foundation/Reference/NSURLSession_class/index.html)
4950
- Go

src/targets/node/request.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,7 @@ module.exports = function (source, options) {
8787
if (source.cookies.length) {
8888
reqOpts.jar = 'JAR'
8989

90-
code.blank()
91-
.push('var jar = request.jar();')
90+
code.push('var jar = request.jar();')
9291

9392
var url = source.url
9493

src/targets/python/requests.js

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
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)

test/fixtures/available-targets.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,12 @@
122122
"title": "http.client",
123123
"link": "https://docs.python.org/3/library/http.client.html",
124124
"description": "Python3 HTTP Client"
125+
},
126+
{
127+
"key": "requests",
128+
"title": "Requests",
129+
"link": "http://docs.python-requests.org/en/latest/api/#requests.request",
130+
"description": "Requests HTTP library"
125131
}
126132
]
127133
},

test/fixtures/output/node/request/cookies.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
var request = require("request");
22

3-
43
var jar = request.jar();
54
jar.setCookie(request.cookie("foo=bar"), "http://mockbin.com/har");
65
jar.setCookie(request.cookie("bar=baz"), "http://mockbin.com/har");

test/fixtures/output/node/request/full.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
var request = require("request");
22

3-
43
var jar = request.jar();
54
jar.setCookie(request.cookie("foo=bar"), "http://mockbin.com/har");
65
jar.setCookie(request.cookie("bar=baz"), "http://mockbin.com/har");
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import requests
2+
3+
url = "http://mockbin.com/har"
4+
5+
payload = "foo=bar&hello=world"
6+
headers = {'content-type': 'application/x-www-form-urlencoded'}
7+
8+
response = requests.request("POST", url, data=payload, headers=headers)
9+
10+
print(response.text)
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import requests
2+
3+
url = "http://mockbin.com/har"
4+
5+
payload = "{\"number\": 1, \"string\": \"f\\\"oo\", \"arr\": [1, 2, 3], \"nested\": {\"a\": \"b\"}, \"arr_mix\": [1, \"a\", {\"arr_mix_nested\": {}}] }"
6+
headers = {'content-type': 'application/json'}
7+
8+
response = requests.request("POST", url, data=payload, headers=headers)
9+
10+
print(response.text)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import requests
2+
3+
url = "http://mockbin.com/har"
4+
5+
headers = {'cookie': 'foo=bar; bar=baz'}
6+
7+
response = requests.request("POST", url, headers=headers)
8+
9+
print(response.text)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import requests
2+
3+
url = "http://mockbin.com/har"
4+
5+
response = requests.request("PROPFIND", url)
6+
7+
print(response.text)

0 commit comments

Comments
 (0)