Skip to content

Commit

Permalink
fix: object ids not necessarily known until finished
Browse files Browse the repository at this point in the history
Signed-off-by: Daniel Bluhm <dbluhm@pm.me>
  • Loading branch information
dbluhm committed May 5, 2023
1 parent 56640e0 commit 0eb5ac4
Show file tree
Hide file tree
Showing 7 changed files with 156 additions and 91 deletions.
28 changes: 14 additions & 14 deletions aries_cloudagent/anoncreds/base.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Base Registry."""
from abc import ABC, abstractmethod
from typing import Generic, Optional, Pattern, Tuple, TypeVar
from typing import Generic, Optional, Pattern, TypeVar

from ..config.injection_context import InjectionContext
from ..core.error import BaseError
Expand Down Expand Up @@ -47,35 +47,35 @@ class AnonCredsObjectAlreadyExists(AnonCredsRegistrationError, Generic[T]):
"""Raised when an AnonCreds object already exists."""

def __init__(
self, message: Optional[str] = None, obj: Optional[T] = None, *args, **kwargs
self,
message: str,
obj_id: str,
obj: T = None,
*args,
**kwargs,
):
"""Constructor."""
super().__init__(message, obj, *args, **kwargs)
super().__init__(message, obj_id, obj, *args, **kwargs)
self._message = message
self.obj_id = obj_id
self.obj = obj

@property
def message(self):
"""Message property."""
if self.args[0] and self.args[1]:
return f"{self.args[0]}: {self.args[1]}"
else:
return super().message
return f"{self._message}: {self.obj_id}, {self.obj}"


class AnonCredsSchemaAlreadyExists(
AnonCredsObjectAlreadyExists[Tuple[str, AnonCredsSchema]]
):
class AnonCredsSchemaAlreadyExists(AnonCredsObjectAlreadyExists[AnonCredsSchema]):
"""Raised when a schema already exists."""

@property
def schema_id(self):
"""Get Schema Id."""
return self.obj[0] if self.obj else None
return self.obj_id

@property
def schema(self):
"""Get Schema."""
return self.obj[1] if self.obj else None
return self.obj


class AnonCredsResolutionError(BaseAnonCredsError):
Expand Down
4 changes: 2 additions & 2 deletions aries_cloudagent/anoncreds/default/legacy_indy/registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,14 +207,14 @@ async def register_schema(
try:
seq_no = await shield(ledger.send_schema(schema_id, indy_schema))
except LedgerObjectAlreadyExistsError as err:
indy_schema = err.obj[1]
indy_schema = err.obj
schema = AnonCredsSchema(
name=indy_schema["name"],
version=indy_schema["version"],
attr_names=indy_schema["attrNames"],
issuer_id=indy_schema["id"].split(":")[0],
)
raise AnonCredsSchemaAlreadyExists(err.message, (err.obj[0], schema))
raise AnonCredsSchemaAlreadyExists(err.message, err.obj_id, schema)
except (AnonCredsIssuerError, LedgerError) as err:
raise AnonCredsRegistrationError("Failed to register schema") from err

Expand Down
Loading

0 comments on commit 0eb5ac4

Please sign in to comment.