(c *gin.Context)
| 611 | ) |
| 612 | |
| 613 | func (s *GetFileInfoService) Get(c *gin.Context) (*FileResponse, error) { |
| 614 | dep := dependency.FromContext(c) |
| 615 | user := inventory.UserFromContext(c) |
| 616 | m := manager.NewFileManager(dep, user) |
| 617 | defer m.Recycle() |
| 618 | |
| 619 | if s.ID != "" && s.Uri == "" { |
| 620 | fileId, err := dep.HashIDEncoder().Decode(s.ID, hashid.FileID) |
| 621 | if err != nil { |
| 622 | return nil, serializer.NewError(serializer.CodeParamErr, "unknown file id", err) |
| 623 | } |
| 624 | |
| 625 | file, err := m.TraverseFile(c, fileId) |
| 626 | if err != nil { |
| 627 | return nil, fmt.Errorf("failed to traverse file: %w", err) |
| 628 | } |
| 629 | |
| 630 | s.Uri = file.Uri(true).String() |
| 631 | } |
| 632 | |
| 633 | if s.Uri == "" { |
| 634 | return nil, serializer.NewError(serializer.CodeParamErr, "uri is required", nil) |
| 635 | } |
| 636 | |
| 637 | uri, err := fs.NewUriFromString(s.Uri) |
| 638 | if err != nil { |
| 639 | return nil, serializer.NewError(serializer.CodeParamErr, "unknown uri", err) |
| 640 | } |
| 641 | |
| 642 | opts := []fs.Option{dbfs.WithFilePublicMetadata(), dbfs.WithNotRoot()} |
| 643 | if s.ExtendedInfo { |
| 644 | opts = append(opts, dbfs.WithExtendedInfo(), dbfs.WithEntityUser(), dbfs.WithFileShareIfOwned()) |
| 645 | } |
| 646 | if s.FolderSummary { |
| 647 | opts = append(opts, dbfs.WithLoadFolderSummary()) |
| 648 | } |
| 649 | |
| 650 | file, err := m.Get(c, uri, opts...) |
| 651 | if err != nil { |
| 652 | return nil, fmt.Errorf("failed to get file: %w", err) |
| 653 | } |
| 654 | |
| 655 | if file == nil { |
| 656 | return nil, serializer.NewError(serializer.CodeNotFound, "file not found", nil) |
| 657 | } |
| 658 | |
| 659 | return BuildFileResponse(c, user, file, dep.HashIDEncoder(), nil), nil |
| 660 | } |
| 661 | |
| 662 | func RedirectDirectLink(c *gin.Context, name string, download bool) error { |
| 663 | dep := dependency.FromContext(c) |
nothing calls this directly
no test coverage detected