MCPcopy
hub / github.com/ory/hydra / toRequest

Method toRequest

persistence/sql/persister_device.go:56–102  ·  view source on GitHub ↗
(ctx context.Context, session fosite.Session, p *Persister)

Source from the content-addressed store, hash-verified

54}
55
56func (r *DeviceRequestSQL) toRequest(ctx context.Context, session fosite.Session, p *Persister) (_ *fosite.DeviceRequest, err error) {
57 ctx, span := p.r.Tracer(ctx).Tracer().Start(ctx, "persistence.sql.DeviceRequestSQL.toRequest")
58 defer otelx.End(span, &err)
59
60 sess := r.Session
61 if !gjson.ValidBytes(sess) {
62 var err error
63 sess, err = p.r.KeyCipher().Decrypt(ctx, string(sess), nil)
64 if err != nil {
65 return nil, errors.WithStack(err)
66 }
67 }
68
69 if session != nil {
70 if err := json.Unmarshal(sess, session); err != nil {
71 return nil, errors.WithStack(err)
72 }
73 } else {
74 p.l.Debugf("Got an empty session in toRequest")
75 }
76
77 c, err := p.GetClient(ctx, r.Client)
78 if err != nil {
79 return nil, err
80 }
81
82 val, err := url.ParseQuery(r.Form)
83 if err != nil {
84 return nil, errors.WithStack(err)
85 }
86
87 return &fosite.DeviceRequest{
88 UserCodeState: r.UserCodeState,
89 Request: fosite.Request{
90 ID: r.Request,
91 RequestedAt: r.RequestedAt,
92 // ExpiresAt does not need to be populated as we get the expiry time from the session.
93 Client: c,
94 RequestedScope: stringsx.Splitx(r.Scopes, "|"),
95 GrantedScope: stringsx.Splitx(r.GrantedScope, "|"),
96 RequestedAudience: stringsx.Splitx(r.RequestedAudience, "|"),
97 GrantedAudience: stringsx.Splitx(r.GrantedAudience, "|"),
98 Form: val,
99 Session: session,
100 },
101 }, nil
102}
103
104func (p *Persister) sqlDeviceSchemaFromRequest(ctx context.Context, deviceCodeSignature, userCodeSignature string, r fosite.DeviceRequester, expiresAt time.Time) (*DeviceRequestSQL, error) {
105 subject := ""

Callers 3

GetDeviceCodeSessionMethod · 0.95
GetUserCodeSessionMethod · 0.95

Calls 5

DebugfMethod · 0.80
TracerMethod · 0.65
DecryptMethod · 0.65
KeyCipherMethod · 0.65
GetClientMethod · 0.65

Tested by

no test coverage detected