aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2023-11-11 15:34:05 -0500
committerXe Iaso <me@xeiaso.net>2023-11-11 15:34:05 -0500
commitc39c71219c1601f092e92cdc460826290eec8d11 (patch)
tree2b90f4e8c1b44e8d17f4cdc4a47934972e683996 /cmd
parent8e1ff26b3996b72942d49eba18d4c0e6e8328cd6 (diff)
downloadx-c39c71219c1601f092e92cdc460826290eec8d11.tar.xz
x-c39c71219c1601f092e92cdc460826290eec8d11.zip
cmd/xedn: fix
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/xedn/imgoptimize.go38
-rw-r--r--cmd/xedn/main.go9
2 files changed, 39 insertions, 8 deletions
diff --git a/cmd/xedn/imgoptimize.go b/cmd/xedn/imgoptimize.go
index d1129d1..7ad5ff9 100644
--- a/cmd/xedn/imgoptimize.go
+++ b/cmd/xedn/imgoptimize.go
@@ -263,25 +263,49 @@ func (iu *ImageUploader) CreateImage(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
id := uuid.New().String()
- // Ten megabytes should be enough for anybody
- reader := http.MaxBytesReader(w, r.Body, 1024*1024*10)
+ os.MkdirAll(filepath.Join(*dir, "uploud"), 0700)
- buf := bytes.NewBuffer(make([]byte, r.ContentLength))
+ fout, err := os.Create(filepath.Join(*dir, "uploud", id+".png"))
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ slog.Error("cannot create temp file", "err", err)
+ return
+ }
- if _, err := io.Copy(buf, reader); err != nil {
+ if n, err := io.Copy(fout, r.Body); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
slog.Error("cannot copy image to buffer", "err", err)
return
+ } else {
+ slog.Info("copied image to buffer", "bytes", n, "content-length", r.ContentLength)
+ }
+
+ if err := fout.Close(); err != nil {
+ slog.Error("cannot close temp file", "err", err)
+ return
+ }
+
+ fin, err := os.Open(filepath.Join(*dir, "uploud", id+".png"))
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ slog.Error("cannot open temp file", "err", err)
+ return
}
- img, _, err := image.Decode(buf)
+ img, err := png.Decode(fin)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
slog.Error("cannot decode image", "err", err)
return
}
- directory, err := os.MkdirTemp(*staticDir, "uploud")
+ if err := fin.Close(); err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ slog.Error("cannot close temp file", "err", err)
+ return
+ }
+
+ directory, err := os.MkdirTemp(*dir, "uploud")
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
slog.Error("cannot create temp directory", "err", err)
@@ -328,7 +352,7 @@ func (iu *ImageUploader) CreateImage(w http.ResponseWriter, r *http.Request) {
_, err = s3c.PutObject(ctx, &s3.PutObjectInput{
Body: fin,
- Bucket: b2Backend,
+ Bucket: aws.String("christine-static"),
Key: aws.String("xedn/dynamic/" + id + "/" + finfo.Name()),
ContentType: aws.String(mimeTypes[filepath.Ext(finfo.Name())]),
})
diff --git a/cmd/xedn/main.go b/cmd/xedn/main.go
index 124aaf6..9d6cf83 100644
--- a/cmd/xedn/main.go
+++ b/cmd/xedn/main.go
@@ -167,7 +167,14 @@ func main() {
mux.HandleFunc("/metrics", tsweb.VarzHandler)
mux.HandleFunc("/xedn/optimize", iu.CreateImage)
- go http.ListenAndServe(*metricsAddr, http.HandlerFunc(tsweb.VarzHandler))
+ mux.HandleFunc("/", http.FileServer(http.Dir(filepath.Join(*dir, "uploud"))).ServeHTTP)
+
+ go http.ListenAndServe(*metricsAddr, tsweb.StdHandler(tsweb.ReturnHandlerFunc(func(w http.ResponseWriter, r *http.Request) error {
+ mux.ServeHTTP(w, r)
+ return nil
+ }), tsweb.HandlerOptions{
+ Logf: log.Printf,
+ }))
}
cdn := http.NewServeMux()