37 lines
859 B
Go
37 lines
859 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}
|
|
}
|