Skip to content

Instantly share code, notes, and snippets.

@JanneSalokoski
Last active April 8, 2016 11:30
Show Gist options
  • Save JanneSalokoski/3166b803cc9e8d034e6024bcb1014fc9 to your computer and use it in GitHub Desktop.
Save JanneSalokoski/3166b803cc9e8d034e6024bcb1014fc9 to your computer and use it in GitHub Desktop.
$ ./httpclient.py 127.0.0.1 8000 test.json
--4d6735125320465f8a8d770448b68197
Content-Disposition: form-data; name="test.json"; filename="test.json"
{
"test": {
"lol": "uik",
"uik": "lol"
},
"uikz": "asdf"
}
--4d6735125320465f8a8d770448b68197--
#!/usr/bin/env python
import sys
import requests
def main(ip = "127.0.0.1", port = 8000, file = ""):
try:
r = requests.post("http://{0}:{1}/".format(ip, port), files = {file: open(file, "rb")})
except:
r = requests.post("http://{0}:{1}/".format(ip, port), data = {"file": "empty"})
print(r.text)
if __name__ == "__main__":
if len(sys.argv) == 4:
main(str(sys.argv[1]), int(sys.argv[2]), str(sys.argv[3]))
else:
main()
#!/usr/bin/env python
import sys
from urllib.parse import urlparse
import http.server
import socketserver
html = "<html><h1>200</h1></html>"
class HTTPHandler(http.server.SimpleHTTPRequestHandler):
def _set_headers(self, response = 200, mimetype = "text/html"):
self.send_response(200)
self.send_header("Content-type", mimetype)
self.end_headers()
def do_GET(self):
self._set_headers()
self.wfile.write(html.encode("utf-8"))
def do_HEAD(self):
self._set_headers()
def do_POST(self):
self._set_headers(mimetype = "text/json")
data = urlparse(self.rfile.read(int(self.headers["Content-Length"])).decode("utf-8"))
self.wfile.write("{0}".format(str(data.geturl())).encode("utf-8"))
print(data)
def main(server = socketserver, handler = HTTPHandler, port = 8000):
ip = "127.0.0.1"
httpd = server.TCPServer(("", port), handler)
print("Serving at {0}:{1}".format(ip, port))
try:
httpd.serve_forever()
except KeyboardInterrupt as e:
httpd.shutdown()
httpd.socket.close()
print("\n", end="") # I want a newline after the ^C on my prompt
except:
pass
if __name__ == "__main__":
if len(sys.argv) > 1:
main(port = int(sys.argv[1]))
else:
main()
$ ./httpserver.py 8000
127.0.0.1 - - [08/Apr/2016 14:26:08] "POST / HTTP/1.1" 200 -
ParseResult(scheme='', netloc='', path='--4d6735125320465f8a8d770448b68197\r\nContent-Disposition: form-data', params=' name="test.json"; filename="test.json"\r\n\r\n{\n "test": {\n "lol": "uik",\n "uik": "lol"\n },\n "uikz": "asdf"\n}\n\r\n--4d6735125320465f8a8d770448b68197--\r\n', query='', fragment='')
{
"test": {
"lol": "uik",
"uik": "lol"
},
"uikz": "asdf"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment