MCPcopy Create free account
hub / github.com/pydio/cells / SearchWorkspaces

Method SearchWorkspaces

idm/workspace/rest/handler.go:198–253  ·  view source on GitHub ↗
(req *restful.Request, rsp *restful.Response)

Source from the content-addressed store, hash-verified

196}
197
198func (h *WorkspaceHandler) SearchWorkspaces(req *restful.Request, rsp *restful.Response) error {
199
200 ctx := req.Request.Context()
201 var restRequest rest.SearchWorkspaceRequest
202 if err := req.ReadEntity(&restRequest); err != nil {
203 return err
204 }
205
206 // Transform to standard query
207 query := &service.Query{
208 Limit: restRequest.Limit,
209 Offset: restRequest.Offset,
210 GroupBy: restRequest.GroupBy,
211 Operation: restRequest.Operation,
212 }
213
214 for _, q := range restRequest.Queries {
215 anyfied, _ := anypb.New(q)
216 query.SubQueries = append(query.SubQueries, anyfied)
217 }
218
219 var er error
220 if query.ResourcePolicyQuery, er = h.RestToServiceResourcePolicy(ctx, restRequest.ResourcePolicyQuery); er != nil {
221 return errors.Tag(er, errors.StatusForbidden)
222 }
223
224 cli := idmc.WorkspaceServiceClient(ctx)
225
226 collection := &rest.WorkspaceCollection{}
227 var uuids []string
228 wss := make(map[string]*idm.Workspace)
229
230 streamer, err := cli.SearchWorkspace(ctx, &idm.SearchWorkspaceRequest{
231 Query: query,
232 })
233 if err = commons.ForEach(streamer, err, func(resp *idm.SearchWorkspaceResponse) error {
234 resp.Workspace.PoliciesContextEditable = h.IsContextEditable(ctx, resp.Workspace.UUID, resp.Workspace.Policies)
235 uuids = append(uuids, resp.Workspace.UUID)
236 wss[resp.Workspace.UUID] = resp.Workspace
237 collection.Workspaces = append(collection.Workspaces, resp.Workspace)
238 collection.Total++
239 return nil
240 }); err != nil {
241 return err
242 }
243 if len(collection.Workspaces) > 0 {
244 if e := permissions.LoadRootNodesForWorkspaces(ctx, uuids, wss, h.virtualPathResolver()); e != nil {
245 log.Logger(ctx).Warn("Error while calling LoadRootNodesForWorkspaces", zap.Error(e))
246 }
247 if e := permissions.BulkReadDefaultRights(ctx, uuids, wss); e != nil {
248 log.Logger(ctx).Warn("Error while calling BulkReadDefaultRights", zap.Error(e))
249 }
250 }
251 return rsp.WriteEntity(collection)
252
253}
254
255func (h *WorkspaceHandler) loadPoliciesForResource(ctx context.Context, resourceId string, resourceClient interface{}) (policies []*service.ResourcePolicy, e error) {

Callers

nothing calls this directly

Calls 15

virtualPathResolverMethod · 0.95
TagFunction · 0.92
WorkspaceServiceClientFunction · 0.92
ForEachFunction · 0.92
LoggerFunction · 0.92
BulkReadDefaultRightsFunction · 0.92
makeFunction · 0.85
ContextMethod · 0.65
NewMethod · 0.65
SearchWorkspaceMethod · 0.65

Tested by

no test coverage detected