コード例 #1
0
 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>")
コード例 #2
0
    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)