(c *gin.Context)
| 180 | ) |
| 181 | |
| 182 | func (service *ArchiveWorkflowService) CreateExtractTask(c *gin.Context) (*TaskResponse, error) { |
| 183 | dep := dependency.FromContext(c) |
| 184 | user := inventory.UserFromContext(c) |
| 185 | hasher := dep.HashIDEncoder() |
| 186 | m := manager.NewFileManager(dep, user) |
| 187 | defer m.Recycle() |
| 188 | |
| 189 | if !user.Edges.Group.Permissions.Enabled(int(types.GroupPermissionArchiveTask)) { |
| 190 | return nil, serializer.NewError(serializer.CodeGroupNotAllowed, "Group not allowed to compress files", nil) |
| 191 | } |
| 192 | |
| 193 | dst, err := fs.NewUriFromString(service.Dst) |
| 194 | if err != nil { |
| 195 | return nil, serializer.NewError(serializer.CodeParamErr, "Invalid destination", err) |
| 196 | } |
| 197 | |
| 198 | if len(service.Src) == 0 { |
| 199 | return nil, serializer.NewError(serializer.CodeParamErr, "No source files", nil) |
| 200 | } |
| 201 | |
| 202 | // Validate destination |
| 203 | if _, err := m.Get(c, dst, dbfs.WithRequiredCapabilities(dbfs.NavigatorCapabilityCreateFile)); err != nil { |
| 204 | return nil, serializer.NewError(serializer.CodeParamErr, "Invalid destination", err) |
| 205 | } |
| 206 | |
| 207 | // Create task |
| 208 | t, err := workflows.NewExtractArchiveTask(c, service.Src[0], service.Dst, service.Encoding, service.Password, service.FileMask) |
| 209 | if err != nil { |
| 210 | return nil, serializer.NewError(serializer.CodeCreateTaskError, "Failed to create task", err) |
| 211 | } |
| 212 | |
| 213 | if err := dep.IoIntenseQueue(c).QueueTask(c, t); err != nil { |
| 214 | return nil, serializer.NewError(serializer.CodeCreateTaskError, "Failed to queue task", err) |
| 215 | } |
| 216 | |
| 217 | return BuildTaskResponse(t, nil, hasher), nil |
| 218 | } |
| 219 | |
| 220 | // CreateCompressTask Create task to create an archive file |
| 221 | func (service *ArchiveWorkflowService) CreateCompressTask(c *gin.Context) (*TaskResponse, error) { |
no test coverage detected