MCPcopy Index your code
hub / github.com/cloudreve/cloudreve / CreateImportTask

Method CreateImportTask

service/explorer/workflows.go:276–313  ·  view source on GitHub ↗
(c *gin.Context)

Source from the content-addressed store, hash-verified

274)
275
276func (service *ImportWorkflowService) CreateImportTask(c *gin.Context) (*TaskResponse, error) {
277 dep := dependency.FromContext(c)
278 user := inventory.UserFromContext(c)
279 hasher := dep.HashIDEncoder()
280 m := manager.NewFileManager(dep, user)
281 defer m.Recycle()
282
283 if !user.Edges.Group.Permissions.Enabled(int(types.GroupPermissionIsAdmin)) {
284 return nil, serializer.NewError(serializer.CodeGroupNotAllowed, "Only admin can import files", nil)
285 }
286
287 userId, err := hasher.Decode(service.UserID, hashid.UserID)
288 if err != nil {
289 return nil, serializer.NewError(serializer.CodeParamErr, "Invalid user id", err)
290 }
291
292 owner, err := dep.UserClient().GetLoginUserByID(c, userId)
293 if err != nil || owner.ID == 0 {
294 return nil, serializer.NewError(serializer.CodeDBError, "Failed to get user", err)
295 }
296
297 dst, err := fs.NewUriFromString(fs.NewMyUri(service.UserID))
298 if err != nil {
299 return nil, serializer.NewError(serializer.CodeParamErr, "Invalid destination", err)
300 }
301
302 // Create task
303 t, err := workflows.NewImportTask(c, owner, service.Src, service.Recursive, dst.Join(service.Dst).String(), service.PolicyID)
304 if err != nil {
305 return nil, serializer.NewError(serializer.CodeCreateTaskError, "Failed to create task", err)
306 }
307
308 if err := dep.IoIntenseQueue(c).QueueTask(c, t); err != nil {
309 return nil, serializer.NewError(serializer.CodeCreateTaskError, "Failed to queue task", err)
310 }
311
312 return BuildTaskResponse(t, nil, hasher), nil
313}
314
315type (
316 ListTaskService struct {

Callers 1

ImportFilesFunction · 0.80

Calls 15

RecycleMethod · 0.95
FromContextFunction · 0.92
UserFromContextFunction · 0.92
NewFileManagerFunction · 0.92
NewErrorFunction · 0.92
NewUriFromStringFunction · 0.92
NewMyUriFunction · 0.92
NewImportTaskFunction · 0.92
BuildTaskResponseFunction · 0.85
JoinMethod · 0.80
HashIDEncoderMethod · 0.65
EnabledMethod · 0.65

Tested by

no test coverage detected