Source code for aries_cloudagent.wallet.did_posture

"""Ledger utilities."""

from collections import namedtuple
from enum import Enum
from typing import Mapping, Union

DIDPostureSpec = namedtuple("DIDPostureSpec", "moniker ordinal public posted")

[docs]class DIDPosture(Enum): """Enum for DID postures: public, posted but not public, or in wallet only.""" PUBLIC = DIDPostureSpec("public", 0, True, True) POSTED = DIDPostureSpec("posted", 1, False, True) WALLET_ONLY = DIDPostureSpec("wallet_only", 2, False, False)
[docs] @staticmethod def get(posture: Union[str, Mapping]) -> "DIDPosture": """Return enum instance corresponding to input string or DID metadata.""" if posture is None: return None elif isinstance(posture, str): for did_posture in DIDPosture: if posture.lower() == did_posture.value.moniker: return did_posture elif posture.get("public"): return DIDPosture.PUBLIC elif posture.get("posted"): return DIDPosture.POSTED elif isinstance(posture, Mapping): return DIDPosture.WALLET_ONLY return None
@property def moniker(self) -> str: """Name for DID posture.""" return self.value.moniker @property def metadata(self) -> Mapping: """DID metadata for DID posture.""" return {"public": self.value.public, "posted": self.value.posted} @property def ordinal(self) -> Mapping: """Ordinal for presentation: public first, then posted and wallet-only.""" return self.value.ordinal