forked from mirror/client_golang
39 lines
851 B
Go
39 lines
851 B
Go
|
/*
|
||
|
Copyright (c) 2013, Matt T. Proud
|
||
|
All rights reserved.
|
||
|
|
||
|
Use of this source code is governed by a BSD-style license that can be found in
|
||
|
the LICENSE file.
|
||
|
*/
|
||
|
|
||
|
package contributor
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"strconv"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
unknownStatusCode = "unknown"
|
||
|
)
|
||
|
|
||
|
// ResponseWriterDelegator is a means of wrapping http.ResponseWriter to divine
|
||
|
// the response code from a given answer, especially in systems where the
|
||
|
// response is treated as a blackbox.
|
||
|
type ResponseWriterDelegator struct {
|
||
|
http.ResponseWriter
|
||
|
Status *string
|
||
|
}
|
||
|
|
||
|
func (r ResponseWriterDelegator) WriteHeader(code int) {
|
||
|
*r.Status = strconv.Itoa(code)
|
||
|
|
||
|
r.ResponseWriter.WriteHeader(code)
|
||
|
}
|
||
|
|
||
|
func NewResponseWriterDelegator(delegate http.ResponseWriter) ResponseWriterDelegator {
|
||
|
defaultStatusCode := unknownStatusCode
|
||
|
|
||
|
return ResponseWriterDelegator{delegate, &defaultStatusCode}
|
||
|
}
|