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

Method getExpand

internal/expand/handler.go:88–119  ·  view source on GitHub ↗

swagger:route GET /relation-tuples/expand permission expandPermissions # Expand a Relationship into permissions. Use this endpoint to expand a relationship tuple into permissions. Consumes: - application/x-www-form-urlencoded Produces: - application/json Schemes: http, https Responses:

(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

86// Extensions:
87// x-ory-ratelimit-bucket: keto-admin-medium
88func (h *Handler) getExpand(w http.ResponseWriter, r *http.Request) {
89 maxDepth, err := x.GetMaxDepthFromQuery(r.URL.Query())
90 if err != nil {
91 h.d.Writer().WriteError(w, r, herodot.ErrBadRequest.WithError(err.Error()))
92 return
93 }
94
95 subSet := (&ketoapi.SubjectSet{}).FromURLQuery(r.URL.Query())
96 internal, err := h.d.ReadOnlyMapper().FromSubjectSet(r.Context(), subSet)
97 if err != nil {
98 h.d.Writer().WriteError(w, r, err)
99 return
100 }
101
102 res, err := h.d.ExpandEngine().BuildTree(r.Context(), internal, maxDepth)
103 if err != nil {
104 h.d.Writer().WriteError(w, r, err)
105 return
106 }
107 if res == nil {
108 h.d.Writer().Write(w, r, herodot.ErrNotFound.WithError("no relation tuple found"))
109 return
110 }
111
112 tree, err := h.d.ReadOnlyMapper().ToTree(r.Context(), res)
113 if err != nil {
114 h.d.Writer().WriteError(w, r, err)
115 return
116 }
117
118 h.d.Writer().Write(w, r, tree)
119}
120
121func (h *Handler) Expand(ctx context.Context, req *rts.ExpandRequest) (*rts.ExpandResponse, error) {
122 var subSet *ketoapi.SubjectSet

Callers

nothing calls this directly

Calls 11

GetMaxDepthFromQueryFunction · 0.92
WithErrorMethod · 0.80
FromSubjectSetMethod · 0.80
BuildTreeMethod · 0.80
ToTreeMethod · 0.80
WriterMethod · 0.65
ReadOnlyMapperMethod · 0.65
ExpandEngineMethod · 0.65
ErrorMethod · 0.45
FromURLQueryMethod · 0.45
WriteMethod · 0.45

Tested by

no test coverage detected