(c *gin.Context)
| 274 | ) |
| 275 | |
| 276 | func (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 | |
| 315 | type ( |
| 316 | ListTaskService struct { |
no test coverage detected