|
|
- # noinspection PyUnresolvedReferences
- import future
- import socket
-
- from http.server import BaseHTTPRequestHandler, HTTPServer
- from threading import Thread
- from .logsList import logs_list
- from .persistentFlags import persistent_flags
-
-
- class ListenerHandler(BaseHTTPRequestHandler):
- def do_POST(self):
- try:
- content_length = int(self.headers.get("Content-Length"))
- all_logs = self.rfile.read(content_length).decode("utf-8").split('\n')
- if len(all_logs) == 0:
- self._set_response(400, "Bad Request", b"Bad request you got there, pal")
- return
-
- for log in all_logs:
- if log != "":
- if persistent_flags.get_server_error():
- self._set_response(500, "Issue!!!!!!!", b"Not good, not good at all.")
- return
-
- logs_list.list.append(log)
-
- self._set_response(200, "OK", b"Shabam! got logs.")
- return
-
- except IndexError:
- self._set_response(400, "Bad Request", b"Bad request you got there, pal")
- return
-
- def _set_response(self, http_code, http_description, byte_body):
- self.send_response(http_code, http_description)
- self.send_header('Content-type', 'text/html')
- self.end_headers()
- self.wfile.write(byte_body)
-
-
- class MockLogzioListener:
- def __init__(self):
- self.port = _find_available_port()
- self.host = "localhost"
-
- self.server = HTTPServer((self.host, self.port), ListenerHandler)
-
- self.listening_thread = Thread(target=self._start_listening)
- self.listening_thread.daemon = True
- self.listening_thread.name = "mock-logzio-listener"
- self.listening_thread.start()
- self.logs_list = logs_list.list
- self.persistent_flags = persistent_flags
-
- def _start_listening(self):
- self.server.serve_forever()
-
- def get_port(self):
- return self.port
-
- def get_host(self):
- return self.host
-
- def find_log(self, search_log):
- for current_log in self.logs_list:
- if search_log in current_log:
- return True
-
- return False
-
- def get_number_of_logs(self):
- return len(self.logs_list)
-
- def clear_logs_buffer(self):
- self.logs_list[:] = []
-
- def set_server_error(self):
- self.persistent_flags.set_server_error()
-
- def clear_server_error(self):
- self.persistent_flags.clear_server_error()
-
-
- def _find_available_port():
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- sock.bind(("", 0))
- sock.listen(1)
- port = sock.getsockname()[1]
- sock.close()
- return port
|