class SproutRequest:
    def __init__(self, environ):
        self.environ = environ
        self.path = environ.get("PATH_INFO", "/")
        self.method = environ.get("REQUEST_METHOD", "GET")

        self.body = self._parse_body()

    def _parse_body(self):
        try:
            content_length = int(self.environ.get("CONTENT_LENGTH", 0))
            if content_length:
                body = self.environ["wsgi.input"].read(content_length)
                return json.loads(body.decode())
        except Exception:
            pass
        return {}

    def handle_request(self, router):
        return router.route_request(self.path, self.method, self.body)