summaryrefslogtreecommitdiff
path: root/server/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/server.go')
-rw-r--r--server/server.go25
1 files changed, 18 insertions, 7 deletions
diff --git a/server/server.go b/server/server.go
index 37fa8aa..58c8411 100644
--- a/server/server.go
+++ b/server/server.go
@@ -38,7 +38,7 @@ func CreateServer(c *config.Configuration) *Server {
return &Server{c, httpclient, store, hashGenerator}
}
-func (s *Server) uploadFile(uploadFile io.Reader, w http.ResponseWriter, fileName string, thumbs []*uploadedfile.ThumbFile) {
+func (s *Server) uploadFile(uploadFile io.Reader, w http.ResponseWriter, fileName string, thumbs []*uploadedfile.ThumbFile, responseUrl string) {
w.Header().Set("Content-Type", "application/json")
tmpFile, err := ioutil.TempFile(os.TempDir(), "image")
@@ -84,7 +84,7 @@ func (s *Server) uploadFile(uploadFile io.Reader, w http.ResponseWriter, fileNam
factory := imagestore.NewFactory(s.Config)
obj := factory.NewStoreObject(upload.GetHash(), upload.GetMime(), "original")
- obj, err = s.imageStore.Save(upload.GetPath(), obj)
+ obj, err = s.imageStore.Save(upload.GetPath(), obj, responseUrl)
if err != nil {
ErrorResponse(w, "Unable to save image!", http.StatusInternalServerError)
return
@@ -94,7 +94,7 @@ func (s *Server) uploadFile(uploadFile io.Reader, w http.ResponseWriter, fileNam
for _, t := range upload.GetThumbs() {
thumbName := fmt.Sprintf("%s/%s", upload.GetHash(), t.GetName())
tObj := factory.NewStoreObject(thumbName, upload.GetMime(), "t")
- tObj, err = s.imageStore.Save(t.GetPath(), tObj)
+ tObj, err = s.imageStore.Save(t.GetPath(), tObj, responseUrl)
if err != nil {
ErrorResponse(w, "Unable to save thumbnail!", http.StatusInternalServerError)
return
@@ -145,7 +145,7 @@ func (s *Server) Start() {
return
}
- s.uploadFile(uploadFile, w, header.Filename, thumbs)
+ s.uploadFile(uploadFile, w, header.Filename, thumbs, getResponseUrl(r))
uploadFile.Close()
}
@@ -163,7 +163,7 @@ func (s *Server) Start() {
return
}
- s.uploadFile(uploadFile, w, "", thumbs)
+ s.uploadFile(uploadFile, w, "", thumbs, getResponseUrl(r))
uploadFile.Close()
}
@@ -178,7 +178,7 @@ func (s *Server) Start() {
return
}
- s.uploadFile(uploadFile, w, "", thumbs)
+ s.uploadFile(uploadFile, w, "", thumbs, getResponseUrl(r))
}
rootHandler := func(w http.ResponseWriter, r *http.Request) {
@@ -199,7 +199,7 @@ func (s *Server) Start() {
err := templ.ExecuteTemplate(w, "api.html", struct {
OriginUrl string
ResponseUrl string
- }{os.Getenv("ORIGIN_URL"), os.Getenv("UPLOAD_URL")})
+ }{getOriginUrl(r), getResponseUrl(r)})
if err != nil {
ErrorResponse(w, err.Error(), http.StatusInternalServerError)
return
@@ -315,3 +315,14 @@ func parseThumbs(r *http.Request) ([]*uploadedfile.ThumbFile, error) {
return thumbs, nil
}
+
+func getResponseUrl(r *http.Request) string {
+ return r.Header.Get("X-Response-Url")
+}
+
+func getOriginUrl(r *http.Request) string {
+ if r.Header.Get("X-Origin-Url") != "" {
+ return r.Header.Get("X-Origin-Url")
+ }
+ return os.Getenv("ORIGIN_URL")
+}