2025-02-06 14:19:30 +01:00
|
|
|
package protocol
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"encoding/json"
|
|
|
|
|
"net/http"
|
|
|
|
|
|
2026-01-08 15:45:56 -05:00
|
|
|
"code.sonr.org/go/did-it"
|
2025-02-06 14:19:30 +01:00
|
|
|
|
2026-01-08 15:45:56 -05:00
|
|
|
"code.sonr.org/go/ucan/pkg/command"
|
|
|
|
|
"code.sonr.org/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
|
|
|
|
|
}
|