@staticmethod
    def _verify_redirect_uris(registration_request):
        verified_redirect_uris = []
        try:
            client_type = registration_request["application_type"]
        except __HOLE__:  # default
            client_type = "web"

        if client_type == "web":
            try:
                if registration_request["response_types"] == ["code"]:
                    must_https = False
                else:  # one has to be implicit or hybrid
                    must_https = True
            except KeyError:
                must_https = True
        else:
            must_https = False

        for uri in registration_request["redirect_uris"]:
            p = urlparse(uri)
            if client_type == "native" and p.scheme == "http":
                if p.hostname != "localhost":
                    raise InvalidRedirectURIError(
                        "Http redirect_uri must use localhost")
            elif must_https and p.scheme != "https":
                raise InvalidRedirectURIError(
                    "None https redirect_uri not allowed")
            elif p.fragment:
                raise InvalidRedirectURIError(
                    "redirect_uri contains fragment")
            # This rule will break local testing.
            # elif must_https and p.hostname == "localhost":
            #     err = InvalidRedirectURIError(
            # "https redirect_uri with host localhost")

            base, query = splitquery(uri)
            if query:
                verified_redirect_uris.append((base, parse_qs(query)))
            else:
                verified_redirect_uris.append((base, query))

        return verified_redirect_uris
dataset/ETHPy150Open rohe/pyoidc/src/oic/oic/provider.py/Provider._verify_redirect_uris