Also return google bucket url in response

This commit is contained in:
2022-12-17 14:23:47 +01:00
parent 576a4e1579
commit 79d7c4068b
5 changed files with 25 additions and 21 deletions

View File

@@ -8,6 +8,7 @@ import (
type Image struct { type Image struct {
Path string `json:"path"` Path string `json:"path"`
URL string `json:"url,omitempty"` URL string `json:"url,omitempty"`
RemoteURL string `json:"remote_url"`
} }
// GetURL gets URL of the image, also in cases where MessageImage.URL is not defined. // GetURL gets URL of the image, also in cases where MessageImage.URL is not defined.

View File

@@ -2,26 +2,19 @@ package handler
import ( import (
"encoding/json" "encoding/json"
"github.com/kevinmidboe/planetposen-images/util"
"strings"
// "github.com/sirupsen/logrus"
// "encoding/json"
"fmt" "fmt"
"github.com/gorilla/mux"
"github.com/kevinmidboe/planetposen-images/clients/gcs" "github.com/kevinmidboe/planetposen-images/clients/gcs"
"github.com/kevinmidboe/planetposen-images/image" "github.com/kevinmidboe/planetposen-images/image"
// "github.com/dbmedialab/dearheart/event" "github.com/kevinmidboe/planetposen-images/util"
// "github.com/dbmedialab/dearheart/server/internal/serverutils"
"github.com/gorilla/mux"
"io" "io"
"net/http" "net/http"
"path/filepath" "path/filepath"
// "strconv" "strings"
// "strings"
) )
// UploadImages takes a request with file form and uploads the content to GCS // UploadImages takes a request with file form and uploads the content to GCS
func UploadImages(hostname string, gcsClient gcs.Client) http.HandlerFunc { func UploadImages(hostname string, bucketname string, gcsClient gcs.Client) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) {
// Get initial protocol data // Get initial protocol data
ctx := r.Context() ctx := r.Context()
@@ -54,9 +47,12 @@ func UploadImages(hostname string, gcsClient gcs.Client) http.HandlerFunc {
} }
finalURL := util.ImageURL(hostname, string(path)) finalURL := util.ImageURL(hostname, string(path))
decodedPath, err := path.Decode()
remoteURL := util.ImageRemoteURL(bucketname, string(decodedPath))
responseStruct := image.Image{ responseStruct := image.Image{
Path: string(path), Path: string(path),
URL: finalURL, URL: finalURL,
RemoteURL: remoteURL,
} }
logger.UploadSuccessMessage(string(path), finalURL) logger.UploadSuccessMessage(string(path), finalURL)

View File

@@ -10,7 +10,7 @@ func (s *Server) setupRoutes() {
s.Router.HandleFunc("/_healthz", handler.Healthz).Methods("GET").Name("Health") s.Router.HandleFunc("/_healthz", handler.Healthz).Methods("GET").Name("Health")
api := s.Router.PathPrefix(v1API).Subrouter() api := s.Router.PathPrefix(v1API).Subrouter()
api.HandleFunc("/images", handler.UploadImages(s.Config.Hostname, s.GCSClient)).Methods("POST").Name("UploadImages") api.HandleFunc("/images", handler.UploadImages(s.Config.Hostname, s.Config.GCSBucket, s.GCSClient)).Methods("POST").Name("UploadImages")
api.HandleFunc("/images", handler.ListImages(s.GCSClient)).Methods("GET").Name("ListImages") api.HandleFunc("/images", handler.ListImages(s.GCSClient)).Methods("GET").Name("ListImages")
// Raw image fetcher // Raw image fetcher

View File

@@ -1,8 +1,15 @@
package util package util
import "fmt" import (
"fmt"
)
// ImageURL creates imageURL from hostname and image name // ImageURL creates imageURL from hostname and image name
func ImageURL(hostname, name string) string { func ImageURL(hostname, name string) string {
return fmt.Sprintf("https://%s/api/v1/images/%s", hostname, name) return fmt.Sprintf("https://%s/api/v1/images/%s", hostname, name)
} }
// ImageRemoteURL creates imageURL to bucket file
func ImageRemoteURL(bucketname string, path string) string {
return fmt.Sprintf("https://storage.googleapis.com/%s/%s", bucketname, path)
}