'Parse a Request-URI into (scheme, authority, path).
Note that Request-URI\'s must be one of::
Request-URI    = "*" | absoluteURI | abs_path | authority
Therefore, a Request-URI which starts with a double forward-slash
cannot be a "net_path"::
net_path      = "//" authority [ abs_path ]
Instead, it must be interpreted as an "abs_path" with an empty first
path segment::
abs_path      = "/"  path_segments
path_segments = segment *( "/" segment )
segment       = *pchar *( ";" param )
param         = *pchar'

def parse_request_uri(self, uri):

    if (uri == ASTERISK):
        return (None, None, uri)
    (scheme, sep, remainder) = uri.partition('://')
    if (sep and (QUESTION_MARK not in scheme)):
        (authority, path_a, path_b) = remainder.partition(FORWARD_SLASH)
        return (scheme.lower(), authority, (path_a + path_b))
    if uri.startswith(FORWARD_SLASH):
        return (None, None, uri)
    else:
        return (None, uri, None)
