Mercurial > gemma
comparison controllers/externalwfs.go @ 357:3e96a15600b7
merge
author | Thomas Junk <thomas.junk@intevation.de> |
---|---|
date | Tue, 07 Aug 2018 18:00:53 +0200 |
parents | e170075c22ac |
children | 55388227e7da |
comparison
equal
deleted
inserted
replaced
356:dc8052b60485 | 357:3e96a15600b7 |
---|---|
146 from := resp.Header.Get("X-Gemma-From") | 146 from := resp.Header.Get("X-Gemma-From") |
147 to := resp.Header.Get("X-Gemma-To") | 147 to := resp.Header.Get("X-Gemma-To") |
148 resp.Header.Del("X-Gemma-From") | 148 resp.Header.Del("X-Gemma-From") |
149 resp.Header.Del("X-Gemma-To") | 149 resp.Header.Del("X-Gemma-To") |
150 | 150 |
151 xml := isXML(resp.Header) | 151 if !isXML(resp.Header) { |
152 return nil | |
153 } | |
154 | |
155 log.Printf("rewrite from %s to %s\n", from, to) | |
156 | |
157 pr, pw := io.Pipe() | |
158 | |
159 var ( | |
160 r io.ReadCloser | |
161 w io.WriteCloser | |
162 err error | |
163 ) | |
152 | 164 |
153 reader, writer := encoding(resp.Header) | 165 reader, writer := encoding(resp.Header) |
154 | 166 |
155 if xml { | 167 if r, err = reader(resp.Body); err != nil { |
156 log.Printf("rewrite from %s to %s\n", from, to) | 168 return err |
157 | 169 } |
158 pr, pw := io.Pipe() | 170 |
159 | 171 if w, err = writer(pw); err != nil { |
160 var ( | 172 return err |
161 r io.ReadCloser | 173 } |
162 w io.WriteCloser | 174 |
163 err error | 175 go func(force io.ReadCloser) { |
164 ) | 176 defer func() { |
165 | 177 //r.Close() |
166 if r, err = reader(resp.Body); err != nil { | 178 w.Close() |
167 return err | 179 pw.Close() |
168 } | 180 force.Close() |
169 | 181 }() |
170 if w, err = writer(pw); err != nil { | 182 if err := rewrite(w, r, from, to); err != nil { |
171 return err | 183 log.Printf("rewrite failed: %v\n", err) |
172 } | 184 return |
173 | 185 } |
174 go func(force io.ReadCloser) { | 186 log.Println("rewrite successful") |
175 defer func() { | 187 }(resp.Body) |
176 //r.Close() | 188 |
177 w.Close() | 189 resp.Body = pr |
178 pw.Close() | 190 |
179 force.Close() | |
180 }() | |
181 if err := rewrite(w, r, from, to); err != nil { | |
182 log.Printf("rewrite failed: %v\n", err) | |
183 return | |
184 } | |
185 log.Println("rewrite successful") | |
186 }(resp.Body) | |
187 | |
188 resp.Body = pr | |
189 } | |
190 return nil | 191 return nil |
191 } | 192 } |
192 | 193 |
193 func isXML(h http.Header) bool { | 194 func isXML(h http.Header) bool { |
194 for _, t := range h["Content-Type"] { | 195 for _, t := range h["Content-Type"] { |