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

@@ -9,9 +9,9 @@ import (
// Config contains environment variables.
type Config struct {
Hostname string `envconfig:"HOSTNAME"`
GCSBucket string `envconfig:"GCS_BUCKET" default:"p"`
Port string `envconfig:"PORT" default:"8000"`
Hostname string `envconfig:"HOSTNAME"`
GCSBucket string `envconfig:"GCS_BUCKET" default:"p"`
Port string `envconfig:"PORT" default:"8000"`
}
// LoadConfig reads environment variables, populates and returns Config.

View File

@@ -6,8 +6,9 @@ import (
// MessageImage is a representation of a single image in the database
type Image struct {
Path string `json:"path"`
URL string `json:"url,omitempty"`
Path string `json:"path"`
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.

View File

@@ -2,26 +2,19 @@ package handler
import (
"encoding/json"
"github.com/kevinmidboe/planetposen-images/util"
"strings"
// "github.com/sirupsen/logrus"
// "encoding/json"
"fmt"
"github.com/gorilla/mux"
"github.com/kevinmidboe/planetposen-images/clients/gcs"
"github.com/kevinmidboe/planetposen-images/image"
// "github.com/dbmedialab/dearheart/event"
// "github.com/dbmedialab/dearheart/server/internal/serverutils"
"github.com/gorilla/mux"
"github.com/kevinmidboe/planetposen-images/util"
"io"
"net/http"
"path/filepath"
// "strconv"
// "strings"
"strings"
)
// 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) {
// Get initial protocol data
ctx := r.Context()
@@ -54,9 +47,12 @@ func UploadImages(hostname string, gcsClient gcs.Client) http.HandlerFunc {
}
finalURL := util.ImageURL(hostname, string(path))
decodedPath, err := path.Decode()
remoteURL := util.ImageRemoteURL(bucketname, string(decodedPath))
responseStruct := image.Image{
Path: string(path),
URL: finalURL,
Path: string(path),
URL: finalURL,
RemoteURL: remoteURL,
}
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")
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")
// Raw image fetcher

View File

@@ -1,8 +1,15 @@
package util
import "fmt"
import (
"fmt"
)
// ImageURL creates imageURL from hostname and image name
func ImageURL(hostname, name string) string {
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)
}