Mercurial > gemma
changeset 349:56f6c5ab0f3d
Made WFS proxy rewriting work (to some degrees).
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 06 Aug 2018 17:50:45 +0200 |
parents | 9543ca97aa70 |
children | 1ea90a22bd15 |
files | controllers/externalwfs.go |
diffstat | 1 files changed, 18 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/controllers/externalwfs.go Mon Aug 06 17:10:23 2018 +0200 +++ b/controllers/externalwfs.go Mon Aug 06 17:50:45 2018 +0200 @@ -62,26 +62,30 @@ abort("Invalid url: %v\n", err) } req.URL = u - req.Header.Set("X-Gemma-Prefix", prefix) + req.Header.Set("X-Gemma-From", prefix) + to := useHTTPS(req) + "://" + req.Host + "/api/externalwfs/" + wfs + req.Header.Set("X-Gemma-To", to) + req.Host = u.Host + + //log.Printf("headers: %v\n", req.Header) } func externalWFSTransport(req *http.Request) (*http.Response, error) { - prefix := req.Header.Get("X-Gemma-Prefix") - req.Header.Del("X-Gemma-Prefix") + from := req.Header.Get("X-Gemma-From") + to := req.Header.Get("X-Gemma-To") + req.Header.Del("X-Gemma-From") + req.Header.Del("X-Gemma-To") + + // To prevent some caching effects. + req.Header.Del("If-None-Match") resp, err := http.DefaultTransport.RoundTrip(req) if err != nil { return nil, err } - - resp.Header.Set("X-Gemma-Prefix", prefix) - to := useHTTPS(req) + "://" + req.Host - if !strings.HasPrefix(req.URL.Path, "/") { - to += "/" - } - to += req.URL.Path + resp.Header.Set("X-Gemma-From", from) resp.Header.Set("X-Gemma-To", to) return resp, err @@ -89,9 +93,9 @@ func externalWFSModifyResponse(resp *http.Response) error { - prefix := resp.Header.Get("X-Gemma-Prefix") + from := resp.Header.Get("X-Gemma-From") to := resp.Header.Get("X-Gemma-To") - resp.Header.Del("X-Gemma-Prefix") + resp.Header.Del("X-Gemma-From") resp.Header.Del("X-Gemma-To") xml := isXML(resp.Header) @@ -99,7 +103,7 @@ gzipped := strings.Contains(resp.Header.Get("Content-Encoding"), "gzip") if xml { - log.Printf("rewrite from %s to %s\n", prefix, to) + log.Printf("rewrite from %s to %s\n", from, to) pr, pw := io.Pipe() @@ -129,7 +133,7 @@ return } */ - if err := rewrite(w, r, prefix, to); err != nil { + if err := rewrite(w, r, from, to); err != nil { log.Printf("rewrite failed: %v\n", err) return }