def handle_request(raw_request): request = jim.unpack(raw_request) action_name = request.get('action') if validate_request(request): controller = resolve(action_name) if controller: try: response = controller(request) if response.get('code') != 200: logging.error('Wrong request format') else: logging.info( f'Request is valid and processed by controller') except Exception as err: logging.critical(err) response = make_response(request, 500, 'Internal server error') else: logging.error(f'Action {action_name} does not exits') response = make_404(request) else: logging.error('Request is not valid') response = make_400(request) return jim.pack(response)
def test_pack_unpack(): request = { 'time': datetime.now().timestamp(), 'action': 'now', 'data': 'Hello' } b_request = pack(request) request = unpack(b_request) assert request.get('action') == 'now' assert request.get('data') == 'Hello'
def main(): try: sock = socket.socket() sock.bind((host, port)) sock.listen(5) logging.info(f'Server started with {host}:{port}') while True: client, address = sock.accept() logging.info(f'Client detected {address}') b_request = client.recv(settings.BUFFERSIZE) request = jim.unpack(b_request) action_name = request.get('action') if validate_request(request): controller = resolve(action_name) if controller: try: response = controller(request) if response.get('code') != 200: logging.error('Wrong request format') else: logging.info( f'Request is valid and processed by controller' ) except Exception as err: logging.critical(err) response = make_response(request, 500, 'Internal server error') else: logging.error(f'Action {action_name} does not exits') response = make_404(request) else: logging.error('Request is not valid') response = make_400(request) response = jim.pack(response) logging.info('Send response to client') client.sendall(response) except KeyboardInterrupt: logging.info('Server closed')
if args.addr: host = args.addr if args.port: port = args.port try: sock = socket.socket() sock.bind((host, port)) sock.listen(5) print(f'Server started with {host}:{port}') while True: client, address = sock.accept() print(f'Client detected { address }') b_request = client.recv(settings.BUFFERSIZE) request = jim.unpack(b_request) action_name = request.get('action') if validate_request(request): controller = resolve(action_name) if controller: try: response = controller(request) except Exception as err: print(err) response = make_response(request, 500, 'Internal server error') else: print('Action { action_name } does not exits') response = make_404(request)
return jim.pack(msg) host = getattr(settings, 'HOST', '127.0.0.1') port = getattr(settings, 'PORT', 7777) parser = ArgumentParser() parser.add_argument('-a', '--addr', type=str, help='Sets ip address') parser.add_argument('-p', '--port', type=int, help='Sets port') args = parser.parse_args() if args.addr: host = args.addr if args.port: port = args.port try: sock = socket.socket() sock.connect((host, port)) print(f'Client started with {host}:{port}') while True: msg = get_presence_msg() sock.sendall(msg) response = sock.recv(settings.BUFFERSIZE) response = jim.unpack(response) print('Got next response from server:', response) except KeyboardInterrupt: print('Client closed')