You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mitmproxy2swagger/testdata/testserver.py

41 lines
1.3 KiB

# -*- coding: utf-8 -*-
import http.server
import socketserver
from typing import Type
class TestServerHandler(http.server.BaseHTTPRequestHandler):
def do_POST(self):
content_length = int(self.headers["Content-Length"])
raw_data = self.rfile.read(content_length)
try:
# Decode received data
print(raw_data)
modified_data = self.transform_data(raw_data)
# Send the response
self.send_response(200)
self.send_header("Content-type", self.headers["Content-type"])
self.send_header("Content-length", len(modified_data))
self.end_headers()
self.wfile.write(modified_data)
except Exception as e:
print(f"Error processing request: {str(e)}")
self.send_response(500)
self.send_header("Content-type", "text/plain")
self.end_headers()
self.wfile.write(f"Error processing request: {str(e)}".encode())
def transform_data(self, raw_data):
raise NotImplementedError("Subclasses must implement this method")
def launchServerWith(handler: Type[TestServerHandler]):
PORT = 8082
with socketserver.TCPServer(("", PORT), handler) as httpd:
print(f"Serving on port {PORT}")
httpd.serve_forever()