// ServeHTTP implements the httpserver.Handler interface. func (rw Rewrite) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) { if rule := httpserver.ConfigSelector(rw.Rules).Select(r); rule != nil { rule.(Rule).Rewrite(rw.FileSys, r) } return rw.Next.ServeHTTP(w, r) }
// ServeHTTP implements the httpserver.Handler interface. func (rw Rewrite) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) { if rule := httpserver.ConfigSelector(rw.Rules).Select(r); rule != nil { switch result := rule.(Rule).Rewrite(rw.FileSys, r); result { case RewriteStatus: // only valid for complex rules. if cRule, ok := rule.(*ComplexRule); ok && cRule.Status != 0 { return cRule.Status, nil } } } return rw.Next.ServeHTTP(w, r) }
// ServeHTTP implements the httpserver.Handler interface func (status Status) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) { if cfg := httpserver.ConfigSelector(status.Rules).Select(r); cfg != nil { rule := cfg.(*Rule) if rule.StatusCode < 400 { // There's no ability to return response body -- // write the response status code in header and signal // to other handlers that response is already handled w.WriteHeader(rule.StatusCode) return 0, nil } return rule.StatusCode, nil } return status.Next.ServeHTTP(w, r) }