"""HTTP response and request parsers This module contains parses for HTTP response and HTTP requests. """ import webhttp.message class RequestParser: """Class that parses a HTTP request""" def __init__(self): """Initialize the RequestParser""" self.buff = '' def parse_requests(self, buff): """Parse requests in a buffer Args: buff (str): the buffer contents received from socket Returns: list of webhttp.Request """ self.buff += buff requests = self.get_requests() for request in requests: http_request = webhttp.message.Request() http_request.parse(request) yield http_request def get_requests(self): """Split multiple requests from buffer Returns: list of str """ requests = self.buff.split('\r\n\r\n') self.buff = requests[-1] for req in requests[:-1]: yield req.lstrip() + '\r\n\r\n' class ResponseParser: """Class that parses a HTTP response""" def __init__(self): """Initialize the ResponseParser""" pass def parse_response(self, buff): """Parse responses in buffer Args: buff (str): the buffer contents received from socket Returns: webhttp.Response """ response = webhttp.message.Response() response.parse(buff) return response