feat: methods to get image
This commit is contained in:
@ -1,11 +1,13 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"screenmark/screenmark/models"
|
"screenmark/screenmark/models"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -72,6 +74,26 @@ func main() {
|
|||||||
w.Header().Add("Access-Control-Allow-Headers", "*")
|
w.Header().Add("Access-Control-Allow-Headers", "*")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
mux.HandleFunc("GET /image/{id}", func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
imageId := r.PathValue("id")
|
||||||
|
|
||||||
|
// TODO: really need authorization here!
|
||||||
|
image, err := models.GetImage(imageId)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
w.WriteHeader(http.StatusNotFound)
|
||||||
|
fmt.Fprintf(w, "Could not get image")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: this could be part of the db table
|
||||||
|
extension := filepath.Ext(image.ImageName)
|
||||||
|
extension = extension[1:]
|
||||||
|
|
||||||
|
w.Header().Add("Content-Type", "image/"+extension)
|
||||||
|
w.Write(image.Image)
|
||||||
|
})
|
||||||
|
|
||||||
mux.HandleFunc("POST /image/{name}", func(w http.ResponseWriter, r *http.Request) {
|
mux.HandleFunc("POST /image/{name}", func(w http.ResponseWriter, r *http.Request) {
|
||||||
imageName := r.PathValue("name")
|
imageName := r.PathValue("name")
|
||||||
|
|
||||||
@ -95,13 +117,26 @@ func main() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = models.SaveImage(userId, imageName, image)
|
userImage, err := models.SaveImage(userId, imageName, image)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
fmt.Fprintf(w, "Could not save image to DB")
|
fmt.Fprintf(w, "Could not save image to DB")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
jsonUserImage, err := json.Marshal(userImage)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
|
fmt.Fprintf(w, "Could not create JSON response for this image")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Fprint(w, string(jsonUserImage))
|
||||||
|
w.Header().Add("Content-Type", "application/json")
|
||||||
|
|
||||||
|
w.WriteHeader(http.StatusCreated)
|
||||||
})
|
})
|
||||||
|
|
||||||
log.Println("Listening and serving on port 3040.")
|
log.Println("Listening and serving on port 3040.")
|
||||||
|
@ -3,8 +3,6 @@ package models
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
|
|
||||||
"screenmark/screenmark/.gen/haystack/haystack/model"
|
"screenmark/screenmark/.gen/haystack/haystack/model"
|
||||||
. "screenmark/screenmark/.gen/haystack/haystack/table"
|
. "screenmark/screenmark/.gen/haystack/haystack/table"
|
||||||
|
|
||||||
@ -13,18 +11,18 @@ import (
|
|||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
)
|
)
|
||||||
|
|
||||||
func SaveImage(userId string, imageName string, imageData []byte) error {
|
func SaveImage(userId string, imageName string, imageData []byte) (model.UserImages, error) {
|
||||||
stmt := UserImages.INSERT(UserImages.UserID, UserImages.ImageName, UserImages.Image).VALUES(userId, imageName, imageData)
|
stmt := UserImages.INSERT(UserImages.UserID, UserImages.ImageName, UserImages.Image).VALUES(userId, imageName, imageData).RETURNING(UserImages.ID, UserImages.UserID, UserImages.ImageName)
|
||||||
_, err := stmt.Exec(db)
|
|
||||||
|
|
||||||
return err
|
userImage := model.UserImages{}
|
||||||
|
err := stmt.Query(db, &userImage)
|
||||||
|
|
||||||
|
return userImage, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetImage(imageId string) (model.UserImages, error) {
|
func GetImage(imageId string) (model.UserImages, error) {
|
||||||
id := uuid.MustParse(imageId)
|
id := uuid.MustParse(imageId)
|
||||||
stmt := UserImages.SELECT(UserImages.ImageName, UserImages.Image).WHERE(UserImages.ID.EQ(UUID(id)))
|
stmt := UserImages.SELECT(UserImages.AllColumns).WHERE(UserImages.ID.EQ(UUID(id)))
|
||||||
|
|
||||||
log.Println(stmt.DebugSql())
|
|
||||||
|
|
||||||
images := []model.UserImages{}
|
images := []model.UserImages{}
|
||||||
err := stmt.Query(db, &images)
|
err := stmt.Query(db, &images)
|
||||||
|
Reference in New Issue
Block a user