From 3d67cf989417f50054f859a26504802047d29207 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 29 Jan 2025 13:17:03 +0200 Subject: [PATCH] remove redundant domain.Agent struct --- internal/api/agent.go | 22 ++++++++++----------- internal/core/domain/agent.go | 14 ------------- internal/core/ports/claim_service.go | 2 +- internal/core/ports/discovery_service.go | 5 ++--- internal/core/services/claims.go | 25 +++++++++++++++++------- internal/core/services/discovery.go | 21 ++++++++++++-------- 6 files changed, 45 insertions(+), 44 deletions(-) delete mode 100644 internal/core/domain/agent.go diff --git a/internal/api/agent.go b/internal/api/agent.go index 2eab5f5d4..3a5f1877a 100644 --- a/internal/api/agent.go +++ b/internal/api/agent.go @@ -3,9 +3,9 @@ package api import ( "context" + "github.com/iden3/iden3comm/v2" "github.com/iden3/iden3comm/v2/protocol" - "github.com/polygonid/sh-id-platform/internal/core/domain" "github.com/polygonid/sh-id-platform/internal/core/ports" "github.com/polygonid/sh-id-platform/internal/log" ) @@ -23,7 +23,7 @@ func (s *Server) Agent(ctx context.Context, request AgentRequestObject) (AgentRe return Agent400JSONResponse{N400JSONResponse{"cannot proceed with the given request"}}, nil } - var agent *domain.Agent + var response *iden3comm.BasicMessage if basicMessage.Type == protocol.DiscoverFeatureQueriesMessageType { req, err := ports.NewDiscoveryAgentRequest(basicMessage) @@ -32,7 +32,7 @@ func (s *Server) Agent(ctx context.Context, request AgentRequestObject) (AgentRe return Agent400JSONResponse{N400JSONResponse{err.Error()}}, nil } - agent, err = s.discoveryService.Agent(ctx, req) + response, err = s.discoveryService.Agent(ctx, req) if err != nil { log.Error(ctx, "agent error", "err", err) return Agent400JSONResponse{N400JSONResponse{err.Error()}}, nil @@ -45,7 +45,7 @@ func (s *Server) Agent(ctx context.Context, request AgentRequestObject) (AgentRe return Agent400JSONResponse{N400JSONResponse{err.Error()}}, nil } - agent, err = s.claimService.Agent(ctx, req, mediatype) + response, err = s.claimService.Agent(ctx, req, mediatype) if err != nil { log.Error(ctx, "agent error", "err", err) return Agent400JSONResponse{N400JSONResponse{err.Error()}}, nil @@ -53,13 +53,13 @@ func (s *Server) Agent(ctx context.Context, request AgentRequestObject) (AgentRe } return Agent200JSONResponse{ - Body: agent.Body, - From: agent.From, - Id: agent.ID, - ThreadID: agent.ThreadID, - To: agent.To, - Typ: string(agent.Typ), - Type: string(agent.Type), + Body: response.Body, + From: response.From, + Id: response.ID, + ThreadID: response.ThreadID, + To: response.To, + Typ: string(response.Typ), + Type: string(response.Type), }, nil } diff --git a/internal/core/domain/agent.go b/internal/core/domain/agent.go deleted file mode 100644 index da087deb3..000000000 --- a/internal/core/domain/agent.go +++ /dev/null @@ -1,14 +0,0 @@ -package domain - -import "github.com/iden3/iden3comm/v2" - -// Agent struct -type Agent struct { - ID string `json:"id"` - Typ iden3comm.MediaType `json:"typ,omitempty"` - Type iden3comm.ProtocolMessage `json:"type"` - ThreadID string `json:"thid,omitempty"` - Body interface{} `json:"body,omitempty"` - From string `json:"from,omitempty"` - To string `json:"to,omitempty"` -} diff --git a/internal/core/ports/claim_service.go b/internal/core/ports/claim_service.go index 7def70bc6..78b94d6ef 100644 --- a/internal/core/ports/claim_service.go +++ b/internal/core/ports/claim_service.go @@ -221,7 +221,7 @@ type ClaimService interface { GetRevocationStatus(ctx context.Context, issuerDID w3c.DID, nonce uint64) (*verifiable.RevocationStatus, error) GetByID(ctx context.Context, issID *w3c.DID, id uuid.UUID) (*domain.Claim, error) GetCredentialQrCode(ctx context.Context, issID *w3c.DID, id uuid.UUID, hostURL string) (*GetCredentialQrCodeResponse, error) - Agent(ctx context.Context, req *AgentRequest, mediatype iden3comm.MediaType) (*domain.Agent, error) + Agent(ctx context.Context, req *AgentRequest, mediatype iden3comm.MediaType) (*iden3comm.BasicMessage, error) GetAuthClaim(ctx context.Context, did *w3c.DID) (*domain.Claim, error) GetFirstNonRevokedAuthClaim(ctx context.Context, did *w3c.DID) (*domain.Claim, error) GetAuthClaimForPublishing(ctx context.Context, did *w3c.DID, state string) (*domain.Claim, error) diff --git a/internal/core/ports/discovery_service.go b/internal/core/ports/discovery_service.go index 3d61f847b..c4bd2d5b2 100644 --- a/internal/core/ports/discovery_service.go +++ b/internal/core/ports/discovery_service.go @@ -5,15 +5,14 @@ import ( "fmt" "github.com/iden3/go-iden3-core/v2/w3c" + "github.com/iden3/iden3comm/v2" comm "github.com/iden3/iden3comm/v2" "github.com/iden3/iden3comm/v2/protocol" - - "github.com/polygonid/sh-id-platform/internal/core/domain" ) // DiscoveryService is the interface implemented by the discovery service type DiscoveryService interface { - Agent(ctx context.Context, req *AgentRequest) (*domain.Agent, error) + Agent(ctx context.Context, req *AgentRequest) (*iden3comm.BasicMessage, error) } // NewDiscoveryAgentRequest validates the inputs and returns a new AgentRequest diff --git a/internal/core/services/claims.go b/internal/core/services/claims.go index 6ad039de2..f36683f8b 100644 --- a/internal/core/services/claims.go +++ b/internal/core/services/claims.go @@ -414,7 +414,7 @@ func (c *claim) GetCredentialQrCode(ctx context.Context, issID *w3c.DID, id uuid }, nil } -func (c *claim) Agent(ctx context.Context, req *ports.AgentRequest, mediatype iden3comm.MediaType) (*domain.Agent, error) { +func (c *claim) Agent(ctx context.Context, req *ports.AgentRequest, mediatype iden3comm.MediaType) (*iden3comm.BasicMessage, error) { if !c.mediatypeManager.AllowMediaType(req.Type, mediatype) { err := fmt.Errorf("unsupported media type '%s' for message type '%s'", mediatype, req.Type) log.Error(ctx, "agent: unsupported media type", "err", err) @@ -756,7 +756,7 @@ func (c *claim) canRevokeNonce(ctx context.Context, did *w3c.DID, querier db.Que return canBeRevoked, nil } -func (c *claim) getRevocationStatus(ctx context.Context, basicMessage *ports.AgentRequest) (*domain.Agent, error) { +func (c *claim) getRevocationStatus(ctx context.Context, basicMessage *ports.AgentRequest) (*iden3comm.BasicMessage, error) { revData := &protocol.RevocationStatusRequestMessageBody{} err := json.Unmarshal(basicMessage.Body, revData) if err != nil { @@ -769,18 +769,24 @@ func (c *claim) getRevocationStatus(ctx context.Context, basicMessage *ports.Age return nil, fmt.Errorf("failed get revocation status: %w", err) } - return &domain.Agent{ + body, err := json.Marshal(protocol.RevocationStatusResponseMessageBody{RevocationStatus: *revStatus}) + if err != nil { + log.Error(ctx, "marshaling body", "err", err) + return nil, err + } + + return &iden3comm.BasicMessage{ ID: uuid.NewString(), Type: protocol.RevocationStatusResponseMessageType, ThreadID: basicMessage.ThreadID, - Body: protocol.RevocationStatusResponseMessageBody{RevocationStatus: *revStatus}, + Body: body, From: basicMessage.IssuerDID.String(), To: basicMessage.UserDID.String(), Typ: packers.MediaTypePlainMessage, }, nil } -func (c *claim) getAgentCredential(ctx context.Context, basicMessage *ports.AgentRequest) (*domain.Agent, error) { +func (c *claim) getAgentCredential(ctx context.Context, basicMessage *ports.AgentRequest) (*iden3comm.BasicMessage, error) { fetchRequestBody := &protocol.CredentialFetchRequestMessageBody{} err := json.Unmarshal(basicMessage.Body, fetchRequestBody) if err != nil { @@ -815,12 +821,17 @@ func (c *claim) getAgentCredential(ctx context.Context, basicMessage *ports.Agen return nil, fmt.Errorf("failed to convert claim to w3cCredential: %w", err) } - return &domain.Agent{ + body, err := json.Marshal(protocol.IssuanceMessageBody{Credential: *vc}) + if err != nil { + log.Error(ctx, "marshaling body", "err", err) + return nil, err + } + return &iden3comm.BasicMessage{ ID: uuid.NewString(), Typ: packers.MediaTypePlainMessage, Type: protocol.CredentialIssuanceResponseMessageType, ThreadID: basicMessage.ThreadID, - Body: protocol.IssuanceMessageBody{Credential: *vc}, + Body: body, From: basicMessage.IssuerDID.String(), To: basicMessage.UserDID.String(), }, err diff --git a/internal/core/services/discovery.go b/internal/core/services/discovery.go index 7b11379dc..d562a4b50 100644 --- a/internal/core/services/discovery.go +++ b/internal/core/services/discovery.go @@ -12,7 +12,6 @@ import ( "github.com/iden3/iden3comm/v2/packers" "github.com/iden3/iden3comm/v2/protocol" - "github.com/polygonid/sh-id-platform/internal/core/domain" "github.com/polygonid/sh-id-platform/internal/core/ports" "github.com/polygonid/sh-id-platform/internal/log" ) @@ -33,7 +32,7 @@ func NewDiscovery(mediatypeManager *MediaTypeManager, packerManager *iden3comm.P return d } -func (c *discovery) Agent(ctx context.Context, req *ports.AgentRequest) (*domain.Agent, error) { +func (c *discovery) Agent(ctx context.Context, req *ports.AgentRequest) (*iden3comm.BasicMessage, error) { if !c.mediatypeManager.AllowMediaType(req.Type, req.Typ) { err := fmt.Errorf("unsupported media type '%s' for message type '%s'", req.Typ, req.Type) log.Error(ctx, "agent: unsupported media type", "err", err) @@ -80,16 +79,22 @@ func (c *discovery) Agent(ctx context.Context, req *ports.AgentRequest) (*domain to = req.UserDID.String() } - return &domain.Agent{ + body, err := json.Marshal(protocol.DiscoverFeatureDiscloseMessageBody{ + Disclosures: disclosures, + }) + if err != nil { + log.Error(ctx, "marshaling body", "err", err) + return nil, err + } + + return &iden3comm.BasicMessage{ ID: uuid.NewString(), Typ: packers.MediaTypePlainMessage, Type: protocol.DiscoverFeatureDiscloseMessageType, ThreadID: req.ThreadID, - Body: protocol.DiscoverFeatureDiscloseMessageBody{ - Disclosures: disclosures, - }, - From: from, - To: to, + Body: body, + From: from, + To: to, }, nil }