refactor: added more implementation details
This commit is contained in:
parent
50e6b53091
commit
a1a9c6407f
6 changed files with 86 additions and 4 deletions
|
|
@ -4,10 +4,42 @@ import (
|
|||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"git.towk2.me/towk/configurator/pkg/util"
|
||||
)
|
||||
|
||||
func (s *Service) Download() http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var (
|
||||
path = strings.TrimPrefix(r.URL.Path, "/download")
|
||||
fileInfo os.FileInfo
|
||||
out *os.File
|
||||
err error
|
||||
)
|
||||
|
||||
fmt.Printf("download path: %v\n", path)
|
||||
|
||||
// determine if path is directory, file, or exists
|
||||
if fileInfo, err = os.Stat(filepath.Clean(path)); err != nil {
|
||||
if fileInfo.IsDir() {
|
||||
// recursively walk dir acompressednd get all filenames
|
||||
// download directory as archive
|
||||
out, err = os.Create(fmt.Sprintf("%s.tar", path))
|
||||
if err != nil {
|
||||
|
||||
}
|
||||
err = util.CreateArchive([]string{path}, out)
|
||||
if err != nil {
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
// download individual file
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package service
|
|||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
|
|
@ -53,7 +54,7 @@ func (s *Service) Serve() error {
|
|||
|
||||
} else {
|
||||
// general
|
||||
router.Get("/download", s.Download())
|
||||
router.Get("/download/*", s.Download())
|
||||
router.Post("/upload", s.Upload())
|
||||
router.Get("/list", s.List())
|
||||
|
||||
|
|
@ -77,7 +78,7 @@ func (s *Service) Serve() error {
|
|||
|
||||
// always available public routes go here
|
||||
router.HandleFunc("/status", s.GetStatus)
|
||||
return nil
|
||||
return http.ListenAndServe(":8080", router)
|
||||
}
|
||||
|
||||
func (s *Service) requireAuth() bool {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue