MCPcopy Create free account
hub / github.com/compozy/agh / decodeAgentChannelReplyRequest

Function decodeAgentChannelReplyRequest

internal/api/core/agent_channels.go:600–638  ·  view source on GitHub ↗
(c *gin.Context)

Source from the content-addressed store, hash-verified

598}
599
600func decodeAgentChannelReplyRequest(c *gin.Context) (decodedAgentChannelReplyRequest, error) {
601 if c == nil || c.Request == nil || c.Request.Body == nil {
602 return decodedAgentChannelReplyRequest{}, NewNetworkValidationError(
603 errors.New("reply request body is required"),
604 )
605 }
606 var raw map[string]json.RawMessage
607 if err := json.NewDecoder(c.Request.Body).Decode(&raw); err != nil {
608 return decodedAgentChannelReplyRequest{}, fmt.Errorf("decode agent channel reply request: %w", err)
609 }
610 if err := contract.ValidateNoRawClaimTokenField(raw); err != nil {
611 return decodedAgentChannelReplyRequest{}, NewNetworkValidationError(err)
612 }
613
614 var req decodedAgentChannelReplyRequest
615 if err := decodeRawString(raw["reply_to_message_id"], &req.ReplyToMessageID); err != nil {
616 return decodedAgentChannelReplyRequest{}, NewNetworkValidationError(fmt.Errorf("reply_to_message_id: %w", err))
617 }
618 if err := decodeRawString(raw["idempotency_key"], &req.IdempotencyKey); err != nil {
619 return decodedAgentChannelReplyRequest{}, NewNetworkValidationError(fmt.Errorf("idempotency_key: %w", err))
620 }
621 req.Body = cloneRawMessage(raw["body"])
622 if len(bytes.TrimSpace(req.Body)) == 0 {
623 return decodedAgentChannelReplyRequest{}, NewNetworkValidationError(errors.New("body is required"))
624 }
625
626 if metadataRaw := bytes.TrimSpace(raw["metadata"]); len(metadataRaw) > 0 &&
627 !bytes.Equal(metadataRaw, []byte("null")) &&
628 !bytes.Equal(metadataRaw, []byte("{}")) {
629 metadata, ok, err := decodeOptionalCoordinationMetadata(metadataRaw)
630 if err != nil {
631 return decodedAgentChannelReplyRequest{}, NewNetworkValidationError(fmt.Errorf("metadata: %w", err))
632 }
633 if ok {
634 req.Metadata = metadata
635 }
636 }
637 return req, nil
638}
639
640func decodeOptionalCoordinationMetadata(
641 raw json.RawMessage,

Callers 1

AgentChannelReplyMethod · 0.85

Calls 5

decodeRawStringFunction · 0.85
cloneRawMessageFunction · 0.70

Tested by

no test coverage detected