MCPcopy
hub / github.com/ory/keto / Expand

Method Expand

internal/expand/handler.go:121–158  ·  view source on GitHub ↗
(ctx context.Context, req *rts.ExpandRequest)

Source from the content-addressed store, hash-verified

119}
120
121func (h *Handler) Expand(ctx context.Context, req *rts.ExpandRequest) (*rts.ExpandResponse, error) {
122 var subSet *ketoapi.SubjectSet
123
124 switch sub := req.Subject.Ref.(type) {
125 case *rts.Subject_Id:
126 return &rts.ExpandResponse{
127 Tree: &rts.SubjectTree{
128 NodeType: rts.NodeType_NODE_TYPE_LEAF,
129 Subject: rts.NewSubjectID(sub.Id),
130 },
131 }, nil
132 case *rts.Subject_Set:
133 subSet = &ketoapi.SubjectSet{
134 Namespace: sub.Set.Namespace,
135 Object: sub.Set.Object,
136 Relation: sub.Set.Relation,
137 }
138 }
139
140 internal, err := h.d.ReadOnlyMapper().FromSubjectSet(ctx, subSet)
141 if err != nil {
142 return nil, err
143 }
144 res, err := h.d.ExpandEngine().BuildTree(ctx, internal, int(req.MaxDepth))
145 if err != nil {
146 return nil, err
147 }
148 if res == nil {
149 return &rts.ExpandResponse{}, nil
150 }
151
152 tree, err := h.d.ReadOnlyMapper().ToTree(ctx, res)
153 if err != nil {
154 return nil, err
155 }
156
157 return &rts.ExpandResponse{Tree: tree.ToProto()}, nil
158}

Callers

nothing calls this directly

Calls 6

FromSubjectSetMethod · 0.80
BuildTreeMethod · 0.80
ToTreeMethod · 0.80
ReadOnlyMapperMethod · 0.65
ExpandEngineMethod · 0.65
ToProtoMethod · 0.65

Tested by

no test coverage detected