compile plus

This commit is contained in:
2025-05-15 01:16:37 +02:00
parent b2b27b2c3d
commit 35ce8c4707
3 changed files with 80 additions and 8 deletions

View File

@@ -3,8 +3,10 @@ package sync
import ( import (
"cloudsave/pkg/remote" "cloudsave/pkg/remote"
"context" "context"
"crypto/md5"
"flag" "flag"
"fmt" "fmt"
"io"
"os" "os"
"github.com/google/subcommands" "github.com/google/subcommands"
@@ -33,9 +35,31 @@ func (p *SyncCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{})
return subcommands.ExitFailure return subcommands.ExitFailure
} }
/*for _, remote := range remotes { for _, remote := range remotes {
}*/ }
return subcommands.ExitSuccess return subcommands.ExitSuccess
} }
func hash(path string) string {
f, err := os.OpenFile(path, os.O_RDONLY, 0)
if err != nil {
notFound("id not found", w, r)
return
}
defer f.Close()
// Create MD5 hasher
hasher := md5.New()
// Copy file content into hasher
if _, err := io.Copy(hasher, f); err != nil {
fmt.Fprintln(os.Stderr, "error: an error occured while reading data:", err)
internalServerError(w, r)
return
}
// Get checksum result
sum := hasher.Sum(nil)
}

View File

@@ -2,6 +2,7 @@ package api
import ( import (
"cloudsave/pkg/game" "cloudsave/pkg/game"
"crypto/md5"
"encoding/json" "encoding/json"
"fmt" "fmt"
"io" "io"
@@ -48,13 +49,14 @@ func NewServer(documentRoot string, creds map[string]string, port int) *HTTPServ
// Secured routes // Secured routes
r.Group(func(secureRouter chi.Router) { r.Group(func(secureRouter chi.Router) {
// Save files routes // Save files routes
secureRouter.Route("/games", func(gameRouter chi.Router) { secureRouter.Route("/games", func(gamesRouter chi.Router) {
// List all available saves // List all available saves
gameRouter.Get("/", s.all) gamesRouter.Get("/", s.all)
// Data routes // Data routes
gameRouter.Group(func(uploadRouter chi.Router) { gamesRouter.Group(func(saveRouter chi.Router) {
uploadRouter.Post("/{id}/data", s.upload) saveRouter.Post("/{id}/data", s.upload)
uploadRouter.Get("/{id}/data", s.download) saveRouter.Get("/{id}/data", s.download)
saveRouter.Get("/{id}/hash", s.hash)
}) })
}) })
}) })
@@ -179,3 +181,42 @@ func (s HTTPServer) upload(w http.ResponseWriter, r *http.Request) {
// Respond success // Respond success
w.WriteHeader(http.StatusCreated) w.WriteHeader(http.StatusCreated)
} }
func (s HTTPServer) hash(w http.ResponseWriter, r *http.Request) {
id := chi.URLParam(r, "id")
path := filepath.Clean(filepath.Join(s.documentRoot, "data", id))
sdir, err := os.Stat(path)
if err != nil {
notFound("id not found", w, r)
return
}
if !sdir.IsDir() {
notFound("id not found", w, r)
return
}
path = filepath.Join(path, "data.tar.gz")
f, err := os.OpenFile(path, os.O_RDONLY, 0)
if err != nil {
notFound("id not found", w, r)
return
}
defer f.Close()
// Create MD5 hasher
hasher := md5.New()
// Copy file content into hasher
if _, err := io.Copy(hasher, f); err != nil {
fmt.Fprintln(os.Stderr, "error: an error occured while reading data:", err)
internalServerError(w, r)
return
}
// Get checksum result
sum := hasher.Sum(nil)
ok(sum, w, r)
}

View File

@@ -97,3 +97,10 @@ func Remove(gameID string) error {
} }
return nil return nil
} }
func Hash(gameID string) (string, error) {
content, err := os.ReadFile(filepath.Join(datastorepath, d.Name(), "data.tar.gz"))
if err != nil {
}
}