49 lines
1.5 KiB
Python
Executable File
49 lines
1.5 KiB
Python
Executable File
|
|
#!/usr/bin/env python3
|
|
|
|
from http.server import HTTPServer, SimpleHTTPRequestHandler
|
|
|
|
HOST = ""
|
|
PORT = 9988
|
|
path = "./audio.pcm"
|
|
|
|
class TestHTTPRequestHandler(SimpleHTTPRequestHandler):
|
|
def do_POST(self):
|
|
self.send_response(200)
|
|
self.end_headers()
|
|
|
|
if "Content-Length" in self.headers:
|
|
content_length = int(self.headers["Content-Length"])
|
|
body = self.rfile.read(content_length)
|
|
with open(path, "wb") as out_file:
|
|
print("writing:", content_length)
|
|
out_file.write(body)
|
|
elif "chunked" in self.headers.get("Transfer-Encoding", ""):
|
|
with open(path, "wb") as out_file:
|
|
while True:
|
|
line = self.rfile.readline().strip()
|
|
print(line)
|
|
chunk_length = int(line, 16)
|
|
|
|
if chunk_length != 0:
|
|
print("writing chunk:", chunk_length)
|
|
chunk = self.rfile.read(chunk_length)
|
|
out_file.write(chunk)
|
|
|
|
# Each chunk is followed by an additional empty newline
|
|
# that we have to consume.
|
|
self.rfile.readline()
|
|
|
|
# Finally, a chunk size of 0 is an end indication
|
|
if chunk_length == 0:
|
|
break
|
|
|
|
def main():
|
|
httpd = HTTPServer((HOST, PORT), TestHTTPRequestHandler)
|
|
print("Serving at port:", httpd.server_port)
|
|
httpd.serve_forever()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|