def do_POST(self): # Doesn't do anything with posted data self._set_headers() ctype, pdict = cgi.parse_header(self.headers.getheader('content-type')) if ctype == 'application/json': data_string = self.rfile.read(int(self.headers['Content-Length'])) print data_string data = json.loads(data_string) self.end_headers() if self.path == "/payload": webhook_deploy(self, data) self.wfile.write("<html><body><h1>POST!</h1></body></html>")
def do_POST(self): logging.warning("======= POST STARTED =======") logging.warning(self.headers) form = cgi.FieldStorage( fp=self.rfile, headers=self.headers, environ={"REQUEST_METHOD": "POST", "CONTENT_TYPE": self.headers["Content-Type"]}, ) logging.warning("======= POST VALUES =======") # Begin the response self.send_response(200) self.end_headers() self.wfile.write("Client: %s\n" % str(self.client_address)) self.wfile.write("User-agent: %s\n" % str(self.headers["user-agent"])) self.wfile.write("Path: %s\n" % self.path) self.wfile.write("Form data:\n") ctype, pdict = cgi.parse_header(self.headers.getheader("content-type")) print ctype if ctype == "application/json": length = int(self.headers["Content-Length"]) # data = cgi.parse_qs(self.rfile.read(length)) data = self.rfile.read(length) print data jdata = json.loads(data) data = json.dumps(jdata) print data # Extract and print the contents of the POST length = int(self.headers["Content-Length"]) post_data = urlparse.parse_qs(self.rfile.read(length).decode("utf-8")) for key, value in post_data.iteritems(): print "%s=%s" % (key, value) for field in form.keys(): field_item = form[field] if field_item.filename: # The field contains an uploaded file file_data = field_item.file.read() file_len = len(file_data) del file_data self.wfile.write('\tUploaded %s as "%s" (%d bytes)\n' % (field, field_item.filename, file_len)) else: # Regular form value self.wfile.write("\t%s=%s\n" % (field, form[field].value)) self.wfile.write(self.rfile) if self.path == "/payload": webhook_deploy(self) SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)