MCPcopy Create free account
hub / github.com/cloudreve/cloudreve / Get

Method Get

service/explorer/file.go:613–660  ·  view source on GitHub ↗
(c *gin.Context)

Source from the content-addressed store, hash-verified

611)
612
613func (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
662func RedirectDirectLink(c *gin.Context, name string, download bool) error {
663 dep := dependency.FromContext(c)

Callers

nothing calls this directly

Calls 15

RecycleMethod · 0.95
TraverseFileMethod · 0.95
GetMethod · 0.95
FromContextFunction · 0.92
UserFromContextFunction · 0.92
NewFileManagerFunction · 0.92
NewErrorFunction · 0.92
NewUriFromStringFunction · 0.92
WithFilePublicMetadataFunction · 0.92
WithNotRootFunction · 0.92
WithExtendedInfoFunction · 0.92
WithEntityUserFunction · 0.92

Tested by

no test coverage detected