| 103 | ) |
| 104 | |
| 105 | func (p *PrefixHandler) ServeHTTP(rw http.ResponseWriter, req *http.Request) { |
| 106 | if !strings.HasPrefix(req.URL.Path, p.Prefix) { |
| 107 | http.Error(rw, "Inconfigured PrefixHandler", 500) |
| 108 | return |
| 109 | } |
| 110 | req.Header.Set(PathBaseHeader, p.Prefix) |
| 111 | req.Header.Set(PathSuffixHeader, strings.TrimPrefix(req.URL.Path, p.Prefix)) |
| 112 | p.Handler.ServeHTTP(rw, req) |
| 113 | } |
| 114 | |
| 115 | // PathBase returns a Request's base path, if it went via a PrefixHandler. |
| 116 | func PathBase(req *http.Request) string { return req.Header.Get(PathBaseHeader) } |