diff options
| author | Horus3 | 2015-08-02 00:16:24 +0200 |
|---|---|---|
| committer | Horus3 | 2015-08-02 00:16:24 +0200 |
| commit | 4e1f9ae3e7864e791d6df2c215ca70bd1e42eaf6 (patch) | |
| tree | 604ce9614a40875b5d21a367c3ef9ab175520c88 /server/server.go | |
| parent | 6afcbc7ba57d80bacace21b6e73ca474dd8217ca (diff) | |
| download | mandible-4e1f9ae3e7864e791d6df2c215ca70bd1e42eaf6.tar.gz | |
Added multidomain support.
Diffstat (limited to 'server/server.go')
| -rw-r--r-- | server/server.go | 25 |
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") +} |
