refactor: added more implementation details

This commit is contained in:
David Allen 2025-08-14 07:40:30 -06:00
parent 50e6b53091
commit a1a9c6407f
Signed by: towk
GPG key ID: 793B2924A49B3A3F
6 changed files with 86 additions and 4 deletions

View file

@ -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
}
}
}
}