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

Method UpdateUserMetaNamespace

idm/meta/rest/handler.go:153–258  ·  view source on GitHub ↗
(req *restful.Request, rsp *restful.Response)

Source from the content-addressed store, hash-verified

151}
152
153func (s *UserMetaHandler) UpdateUserMetaNamespace(req *restful.Request, rsp *restful.Response) error {
154
155 var input idm.UpdateUserMetaNamespaceRequest
156 if err := req.ReadEntity(&input); err != nil {
157 return err
158 }
159 ctx := req.Request.Context()
160 // Validate input
161 for _, ns := range input.Namespaces {
162 if !strings.HasPrefix(ns.Namespace, common.MetaNamespaceUserspacePrefix) {
163 return errors.WithMessage(errors.InvalidParameters, "user defined meta must start with "+common.MetaNamespaceUserspacePrefix+" prefix")
164 }
165 // Use the helper to validate and get definition
166 definition, e := ns.UnmarshallDefinition()
167 if e != nil {
168 return errors.WithMessagef(errors.UnmarshalError, "invalid json definition for namespace: %s, %v", ns.Namespace, e)
169 }
170 if input.Operation == idm.UpdateUserMetaNamespaceRequest_PUT {
171 fieldType := definition.GetType()
172 if fieldType != "" {
173 if definition.GetEntityId() == "" {
174 // Set description
175 var desc = ""
176 if ns.Description != "" {
177 desc = ns.Description
178 } else {
179 desc = "Entity for " + fieldType + " namespace"
180 }
181 // Its somewhat dangerous to create before namespace has been created but its more efficient than doing it after
182 entity, err := s.ServiceClient(ctx).CreateEntity(ctx, &idm.CreateEntityRequest{
183 Entity: &idm.MetaEntity{
184 Label: "ns-entity-" + ns.Namespace,
185 Description: desc,
186 },
187 })
188 if err != nil {
189 return err
190 }
191
192 if def, ok := definition.(*idm.MetaNsDef); ok {
193 def.SetEntityId(entity.Entity.Uuid)
194 updatedJsDef, err := json.Marshal(def)
195 if err != nil {
196 return err
197 }
198 ns.JsonDefinition = string(updatedJsDef)
199 }
200 if slices.Contains(ns_with_ev, fieldType) {
201 // Create empty entity values
202 evs := []*idm.EntityValue{}
203 evs = s.parseEntityValues(definition)
204
205 _, err := s.ServiceClient(ctx).CreateEntityValues(ctx, &idm.CreateEntityValueRequest{
206 EntityValue: evs,
207 })
208 if err != nil {
209 return err
210 }

Callers

nothing calls this directly

Calls 12

parseEntityValuesMethod · 0.95
UnmarshallDefinitionMethod · 0.80
SetEntityIdMethod · 0.80
ContextMethod · 0.65
GetTypeMethod · 0.65
GetEntityIdMethod · 0.65
CreateEntityMethod · 0.65
ServiceClientMethod · 0.65
MarshalMethod · 0.65
CreateEntityValuesMethod · 0.65
DeleteEntityMethod · 0.65

Tested by

no test coverage detected