diff options
| author | Max Resnick <max@ofmax.li> | 2020-05-23 07:56:12 -0700 |
|---|---|---|
| committer | Max Resnick <max@ofmax.li> | 2020-06-22 22:37:17 -0700 |
| commit | 85e7eaa3a1c9024c02cc9a63744cdfb144cc3737 (patch) | |
| tree | a44855abcf5424126c54ee636463dc866e558561 /internal/image/handler.go | |
| parent | 4e77ad5762539d8f9edf40d2668a998c38e834d3 (diff) | |
| download | iserv-85e7eaa3a1c9024c02cc9a63744cdfb144cc3737.tar.gz | |
adds tmpl, css, and fileserver
Diffstat (limited to 'internal/image/handler.go')
| -rw-r--r-- | internal/image/handler.go | 33 |
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 } |