more work done
This commit is contained in:
parent
de359ab415
commit
abc6159044
24 changed files with 309 additions and 230 deletions
|
|
@ -8,6 +8,7 @@ import (
|
|||
"git.giftfish.de/ston1th/docstore/pkg/log"
|
||||
"git.giftfish.de/ston1th/docstore/pkg/otp"
|
||||
"git.giftfish.de/ston1th/jwt/v3"
|
||||
"html/template"
|
||||
"net/http"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
|
@ -178,10 +179,13 @@ func indexHandler(ctx *Context) {
|
|||
path := strings.TrimPrefix(ctx.Path(), core.IndexPrefix)
|
||||
switch ctx.Method() {
|
||||
case "GET":
|
||||
earlyErr := make(chan error)
|
||||
go func() {
|
||||
file, txt, err := ctx.Srv.Tesseract.Scan(path)
|
||||
file, txt, err := ctx.Srv.Scanner.Scan(path)
|
||||
if err != nil {
|
||||
log.Printf("scan: %s: %s", path, err)
|
||||
select {
|
||||
case earlyErr <- err:
|
||||
}
|
||||
return
|
||||
}
|
||||
id, err := ctx.Srv.DB.Index.Add(txt, "pdf")
|
||||
|
|
@ -195,6 +199,19 @@ func indexHandler(ctx *Context) {
|
|||
}
|
||||
}()
|
||||
p, _ := filepath.Split(path)
|
||||
p = filepath.Dir(p)
|
||||
select {
|
||||
case err := <-earlyErr:
|
||||
ctx.Template("iseHandler")
|
||||
ctx.Data = webData{
|
||||
Data: template.HTML(strings.ReplaceAll(err.Error(), "\n", "<br>")),
|
||||
Path: p,
|
||||
}
|
||||
ctx.Status(http.StatusInternalServerError)
|
||||
ctx.Exec()
|
||||
return
|
||||
case <-time.After(time.Second):
|
||||
}
|
||||
ctx.Redirect(p, http.StatusFound)
|
||||
}
|
||||
}
|
||||
|
|
@ -231,35 +248,35 @@ func moveHandler(ctx *Context) {
|
|||
|
||||
func deleteHandler(ctx *Context) {
|
||||
path := strings.TrimPrefix(ctx.Path(), core.DeletePrefix)
|
||||
mode, err := ctx.Srv.FS.Mode(path)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
switch mode {
|
||||
case fs.IsFile:
|
||||
ctx.Data = webData{
|
||||
Title: "Delete File",
|
||||
BodyTitle: "Delete File",
|
||||
}
|
||||
case fs.IsDir:
|
||||
ctx.Data = webData{
|
||||
Title: "Delete Directory",
|
||||
BodyTitle: "Delete Directory",
|
||||
}
|
||||
default:
|
||||
ctx.Data = webData{
|
||||
Title: "Delete",
|
||||
BodyTitle: "Delete",
|
||||
}
|
||||
ctx.Error(noSuchFile)
|
||||
return
|
||||
}
|
||||
ctx.Data.Path = path
|
||||
ctx.Data.Data = mode
|
||||
ctx.Template("deleteHandler")
|
||||
switch ctx.Method() {
|
||||
case "GET":
|
||||
mode, err := ctx.Srv.FS.Mode(path)
|
||||
if err != nil {
|
||||
ctx.Error(err)
|
||||
return
|
||||
}
|
||||
switch mode {
|
||||
case fs.IsFile:
|
||||
ctx.Data = webData{
|
||||
Title: "Delete File",
|
||||
BodyTitle: "Delete File",
|
||||
}
|
||||
case fs.IsDir:
|
||||
ctx.Data = webData{
|
||||
Title: "Delete Directory",
|
||||
BodyTitle: "Delete Directory",
|
||||
}
|
||||
default:
|
||||
ctx.Data = webData{
|
||||
Title: "Delete",
|
||||
BodyTitle: "Delete",
|
||||
}
|
||||
ctx.Error(noSuchFile)
|
||||
return
|
||||
}
|
||||
ctx.Data.Path = path
|
||||
ctx.Data.Data = mode
|
||||
ctx.Exec()
|
||||
case "POST":
|
||||
files, err := ctx.Srv.FS.Delete(path)
|
||||
|
|
@ -272,21 +289,22 @@ func deleteHandler(ctx *Context) {
|
|||
if err != nil {
|
||||
log.Printf("db: delete: %s %s", f, err)
|
||||
}
|
||||
if id == "" {
|
||||
continue
|
||||
}
|
||||
err = ctx.Srv.DB.Index.Delete(id)
|
||||
if err != nil {
|
||||
log.Printf("index: delete: %s %s", f, err)
|
||||
}
|
||||
}
|
||||
ctx.Redirect(core.IndexURI, http.StatusFound)
|
||||
p, _ := filepath.Split(path)
|
||||
p = filepath.Dir(p)
|
||||
ctx.Redirect(p, http.StatusFound)
|
||||
}
|
||||
}
|
||||
|
||||
func dirHandler(ctx *Context) {
|
||||
ctx.Template("dirHandler")
|
||||
ctx.Data = webData{
|
||||
Title: "Directory Viewer",
|
||||
BodyTitle: "Directory Viewer",
|
||||
}
|
||||
path := ctx.Path()
|
||||
switch ctx.Method() {
|
||||
case "GET":
|
||||
|
|
@ -297,12 +315,18 @@ func dirHandler(ctx *Context) {
|
|||
}
|
||||
switch mode {
|
||||
case fs.IsDir:
|
||||
ctx.Data = webData{
|
||||
Title: "Directory Viewer",
|
||||
}
|
||||
dir := ctx.Srv.FS.ReadDir(path)
|
||||
ctx.Srv.DB.GetIndexed(dir.Files)
|
||||
ctx.Data.Data = dir
|
||||
ctx.Data.Paths = fs.Paths(path)
|
||||
ctx.Exec()
|
||||
case fs.IsFile:
|
||||
ctx.Data = webData{
|
||||
Title: "Document Viewer",
|
||||
}
|
||||
ctx.Template("fileHandler")
|
||||
ctx.Data.Data = core.RawPrefix + path
|
||||
ctx.Data.Paths = fs.Paths(path)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue