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))