Source code for azure.keyvault.keys._shared

# ------------------------------------
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# ------------------------------------
try:
    import urllib.parse as parse
except ImportError:
    # pylint:disable=import-error
    import urlparse as parse  # type: ignore

from typing import TYPE_CHECKING
from .challenge_auth_policy import ChallengeAuthPolicy, ChallengeAuthPolicyBase
from .client_base import KeyVaultClientBase
from .http_challenge import HttpChallenge
from . import http_challenge_cache as HttpChallengeCache

if TYPE_CHECKING:
    # pylint: disable=unused-import
    from typing import Optional


__all__ = [
    "ChallengeAuthPolicy",
    "ChallengeAuthPolicyBase",
    "HttpChallenge",
    "HttpChallengeCache",
    "KeyVaultClientBase",
]

[docs]class KeyVaultResourceId(): """Represents a Key Vault identifier and its parsed contents. :param str source_id: The complete identifier received from Key Vault :param str vault_url: The vault URL :param str name: The name extracted from the ID :param str version: The version extracted from the ID """ def __init__( self, source_id, # type: str vault_url, # type: str name, # type: str version=None # type: Optional[str] ): self.source_id = source_id self.vault_url = vault_url self.name = name self.version = version
def parse_key_vault_id(source_id): # type: (str) -> KeyVaultResourceId try: parsed_uri = parse.urlparse(source_id) except Exception: # pylint: disable=broad-except raise ValueError("'{}' is not not a valid url".format(source_id)) if not (parsed_uri.scheme and parsed_uri.hostname): raise ValueError("'{}' is not not a valid url".format(source_id)) path = list(filter(None, parsed_uri.path.split("/"))) if len(path) < 2 or len(path) > 3: raise ValueError("'{}' is not not a valid vault url".format(source_id)) return KeyVaultResourceId( source_id=source_id, vault_url="{}://{}".format(parsed_uri.scheme, parsed_uri.hostname), name=path[1], version=path[2] if len(path) == 3 else None, ) try: # pylint:disable=unused-import from .async_challenge_auth_policy import AsyncChallengeAuthPolicy from .async_client_base import AsyncKeyVaultClientBase __all__.extend(["AsyncChallengeAuthPolicy", "AsyncKeyVaultClientBase"]) except (SyntaxError, ImportError): pass