feat(oo): file deep links, login check, replace-in (fresh upload)
- link: print Products/Files/DocEditor.aspx?fileid=… deep links (title+url) - lib: FileEditorURL/FolderURL helpers (+tests) - users check: verify credentials (userName vs email) via authentication.json - projects files replace-in FOLDER_ID FILE...: hard delete same stem|ext in a folder + fresh upload → single clean version (no version history)
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
onlyoffice "github.com/eslider/go-onlyoffice"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(linkCmd())
|
||||
}
|
||||
|
||||
func linkCmd() *cobra.Command {
|
||||
return &cobra.Command{
|
||||
Use: "link FILE_ID [FILE_ID...]",
|
||||
Short: "Print OnlyOffice DocEditor deep links (Products/Files/DocEditor.aspx?fileid=…)",
|
||||
Args: cobra.MinimumNArgs(1),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
c, err := newOO(cmd)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, id := range args {
|
||||
printObject(map[string]any{
|
||||
"fileid": id,
|
||||
"title": fileTitle(cmd, c, id),
|
||||
"url": c.FileEditorURL(id),
|
||||
})
|
||||
}
|
||||
return nil
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// fileTitle best-effort resolves a file title; never fails the command.
|
||||
func fileTitle(cmd *cobra.Command, c *onlyoffice.Client, id string) string {
|
||||
f, err := c.GetFile(cmd.Context(), id)
|
||||
if err != nil || f == nil || f.Title == nil {
|
||||
return ""
|
||||
}
|
||||
return *f.Title
|
||||
}
|
||||
Reference in New Issue
Block a user