aboutsummaryrefslogtreecommitdiff
path: root/internal/image/handler.go
diff options
context:
space:
mode:
authorMax Resnick <max@ofmax.li>2020-05-23 07:56:12 -0700
committerMax Resnick <max@ofmax.li>2020-06-22 22:37:17 -0700
commit85e7eaa3a1c9024c02cc9a63744cdfb144cc3737 (patch)
treea44855abcf5424126c54ee636463dc866e558561 /internal/image/handler.go
parent4e77ad5762539d8f9edf40d2668a998c38e834d3 (diff)
downloadiserv-85e7eaa3a1c9024c02cc9a63744cdfb144cc3737.tar.gz
adds tmpl, css, and fileserver
Diffstat (limited to '')
-rw-r--r--internal/image/handler.go33
1 files changed, 27 insertions, 6 deletions
diff --git a/internal/image/handler.go b/internal/image/handler.go
index 8988a58..2db4c40 100644
--- a/internal/image/handler.go
+++ b/internal/image/handler.go
@@ -5,6 +5,8 @@ import (
"io/ioutil"
"log"
"net/http"
+
+ "github.com/go-chi/chi"
)
var fileTypes = map[string]string{
@@ -27,9 +29,22 @@ type imageHandler struct {
service Servicer
}
+// GetImage handler for returning an image
func (h *imageHandler) GetImage(w http.ResponseWriter, r *http.Request) {
- log.Print("serving image")
- http.ServeFile(w, r, "foo.jpg")
+ fileID := chi.URLParam(r, "fileName")
+ fileMeta, err := h.service.GetFile(fileID)
+ if err != nil {
+ w.WriteHeader(400)
+ log.Printf("error: %+v", err)
+ w.Write([]byte("WTF Incorrect Content Type"))
+ }
+ fileUrl := fmt.Sprintf("/f/%s", fileMeta.FilePath)
+ data := struct {
+ ImageUrl string
+ }{
+ fileUrl,
+ }
+ h.service.Render(w, "image.tmpl", data)
}
// PostImage handler for creating an image post
@@ -39,6 +54,7 @@ func (h *imageHandler) PostImage(w http.ResponseWriter, r *http.Request) {
file, handler, err := r.FormFile("file")
if err != nil {
log.Printf("%s", err)
+ return
}
defer file.Close()
fileBytes, err := ioutil.ReadAll(file)
@@ -63,9 +79,14 @@ func (h *imageHandler) PostImage(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Incorrect Content Type"))
return
}
- fileID, err := h.service.NewID()
- fileName := fmt.Sprintf("%s.%s", fileID, extension)
- h.service.AddFile(fileName, fileBytes)
+ fileName, fileID, err := h.service.AddFile(extension, fileType, fileBytes)
+ if err != nil {
+ log.Printf("failed to write file")
+ w.WriteHeader(500)
+ w.Write([]byte("An Internal Error Occured"))
+ return
+ }
w.WriteHeader(201)
- w.Write([]byte("ok"))
+ w.Write([]byte(fmt.Sprintf("%s %s", fileName, fileID)))
+ return
}