github.com/crowdsecurity/crowdsec@v1.6.1/test/bin/mock-http.py (about) 1 #!/usr/bin/env python3 2 3 import json 4 import logging 5 import sys 6 7 from http.server import HTTPServer, BaseHTTPRequestHandler 8 9 class RequestHandler(BaseHTTPRequestHandler): 10 def do_POST(self): 11 request_path = self.path 12 request_body = self.rfile.read(int(self.headers['Content-Length'])) 13 request_body = json.loads(request_body.decode()) 14 log = { 15 "path": request_path, 16 "status": 200, 17 "request_body": request_body, 18 } 19 print(json.dumps(log)) 20 self.send_response(200) 21 self.send_header('Content-type','application/json') 22 self.end_headers() 23 self.wfile.write(json.dumps({}).encode()) 24 self.wfile.flush() 25 return 26 27 def log_message(self, format, *args): 28 return 29 30 def main(argv): 31 try: 32 port = int(argv[1]) 33 except IndexError: 34 logging.fatal("Missing port number") 35 return 1 36 except ValueError: 37 logging.fatal("Invalid port number '%s'", argv[1]) 38 return 1 39 server = HTTPServer(('', port), RequestHandler) 40 # logging.info('Listening on port %s', port) 41 server.serve_forever() 42 return 0 43 44 45 if __name__ == "__main__" : 46 logging.basicConfig(level=logging.INFO) 47 sys.exit(main(sys.argv))