diff options
Diffstat (limited to 'submit.go')
| -rw-r--r-- | submit.go | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/submit.go b/submit.go new file mode 100644 index 0000000..2c65d6b --- /dev/null +++ b/submit.go @@ -0,0 +1,39 @@ +package main + +import ( + "crypto/sha256" + "fmt" + "io" + "net/http" + "time" +) + +func handleSubmit(w http.ResponseWriter, r *http.Request, dataDir string) error { + if r.Method != "POST" { + return fmt.Errorf("Expexted POST request") + } + + bytes, err := io.ReadAll(r.Body) + if err != nil { + return err + } + + entry, err := newEntry(bytes) + if err != nil { + return err + } + + filePath := fmt.Sprintf("%s/%s/%x.json", dataDir, + time.Now().Format("2006"), sha256.Sum256(bytes)) + + jsonStr, err := entry.serialize() + if err != nil { + return err + } + + if err := saveFile(filePath, jsonStr); err != nil { + return err + } + + return nil +} |
