Files
ucan/toolkit/_example/_protocol-issuer/request-resolver.go

42 lines
810 B
Go
Raw Normal View History

2025-02-06 14:19:30 +01:00
package protocol
import (
"encoding/json"
"net/http"
2025-08-05 12:11:20 +02:00
"github.com/MetaMask/go-did-it"
2025-02-06 14:19:30 +01:00
2025-08-05 12:11:20 +02:00
"github.com/ucan-wg/go-ucan/pkg/command"
"github.com/ucan-wg/go-ucan/toolkit/issuer"
2025-02-06 14:19:30 +01:00
)
func RequestResolver(r *http.Request) (*issuer.ResolvedRequest, error) {
// Let's make up a simple json protocol
req := struct {
Audience string `json:"aud"`
Cmd string `json:"cmd"`
Subject string `json:"sub"`
}{}
err := json.NewDecoder(r.Body).Decode(&req)
if err != nil {
return nil, err
}
aud, err := did.Parse(req.Audience)
if err != nil {
return nil, err
}
cmd, err := command.Parse(req.Cmd)
if err != nil {
return nil, err
}
sub, err := did.Parse(req.Subject)
if err != nil {
return nil, err
}
return &issuer.ResolvedRequest{
Audience: aud,
Cmd: cmd,
Subject: sub,
}, nil
}