crowdsec/tests/mock-http.py
Thibault "bui" Koechlin e6a35e8714
Improve plugins grouping (alternative to #1424) (#1437)
* Fix races in test (#1446)

Co-authored-by: Shivam Sandbhor <shivam.sandbhor@gmail.com>
Co-authored-by: alteredCoder <kevin@crowdsec.net>
Co-authored-by: AlteredCoder <64792091+AlteredCoder@users.noreply.github.com>
2022-04-19 19:12:23 +02:00

47 lines
1.2 KiB
Python

#!/usr/bin/env python3
import json
import logging
import sys
from http.server import HTTPServer, BaseHTTPRequestHandler
class RequestHandler(BaseHTTPRequestHandler):
def do_POST(self):
request_path = self.path
request_body = self.rfile.read(int(self.headers['Content-Length']))
request_body = json.loads(request_body.decode())
log = {
"path": request_path,
"status": 200,
"request_body": request_body,
}
print(json.dumps(log))
self.send_response(200)
self.send_header('Content-type','application/json')
self.end_headers()
self.wfile.write(json.dumps({}).encode())
self.wfile.flush()
return
def log_message(self, format, *args):
return
def main(argv):
try:
port = int(argv[1])
except IndexError:
logging.fatal("Missing port number")
return 1
except ValueError:
logging.fatal("Invalid port number '%s'", argv[1])
return 1
server = HTTPServer(('', port), RequestHandler)
# logging.info('Listening on port %s', port)
server.serve_forever()
return 0
if __name__ == "__main__" :
logging.basicConfig(level=logging.INFO)
sys.exit(main(sys.argv))