Release Please / Release Please (push) Skipped
Release / GoReleaser (push) Skipped
Tests / Secret scan (gitleaks) (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Tests / Secret scan (gitleaks) (pull_request) Successful in 4s
Tests / Test (Go stable) (pull_request) Successful in 19s
Tests / Test (Go 1.25) (pull_request) Successful in 22s
- FileClient composes FileStore/Searcher backends; Read()/Write()/Search() select REST/DAV/PG/ES with transient read fallback. Client.Files() returns it and *FileClient implements FileStore, so existing callers keep working. - Entry gains backend-native Updated + folder FilesCount/FoldersCount so dav ls output round-trips. - cmd/oo dav/projects files and cmd/office/fetch download/preview/delete go through FileStore; oo search goes through the facade. - Mark transport methods that FileStore now abstracts as deprecated.
41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
package fetch
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/eslider/go-onlyoffice/cmd/office/model"
|
|
"github.com/eslider/go-onlyoffice/cmd/office/preview"
|
|
)
|
|
|
|
// PreviewMarkdown loads item data and returns markdown for the preview pane.
|
|
func (l *Loader) PreviewMarkdown(ctx context.Context, item model.Item) (string, error) {
|
|
if l == nil || l.Client == nil {
|
|
return "", fmt.Errorf("fetch: client is nil")
|
|
}
|
|
if item.Kind == model.KindFile {
|
|
return l.filePreviewMarkdown(ctx, item)
|
|
}
|
|
raw, err := l.Detail(ctx, item)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return preview.EntityMarkdown(string(item.Kind), raw), nil
|
|
}
|
|
|
|
func (l *Loader) filePreviewMarkdown(ctx context.Context, item model.Item) (string, error) {
|
|
if item.ID == "" {
|
|
return "", fmt.Errorf("file id missing")
|
|
}
|
|
name := item.Title
|
|
if e, err := l.fileStore().Stat(ctx, item.ID); err == nil && e.Title != "" {
|
|
name = e.Title
|
|
}
|
|
var buf bytes.Buffer
|
|
if _, err := l.fileStore().Download(ctx, item.ID, &buf); err != nil {
|
|
return "", err
|
|
}
|
|
return preview.FileBytesToMarkdown(name, buf.Bytes())
|
|
}
|