sent to the client on errors.
"Unauthenticated request, unsigned locator",
string(TEST_BLOCK),
response)
+
+ received_cl := response.Header().Get("Content-Length")
+ expected_cl := fmt.Sprintf("%d", len(TEST_BLOCK))
+ if received_cl != expected_cl {
+ t.Errorf("expected Content-Length %s, got %s", expected_cl, received_cl)
+ }
+
received_xbs := response.Header().Get("X-Block-Size")
expected_xbs := fmt.Sprintf("%d", len(TEST_BLOCK))
if received_xbs != expected_xbs {
"Authenticated request, signed locator", http.StatusOK, response)
ExpectBody(t,
"Authenticated request, signed locator", string(TEST_BLOCK), response)
+
received_xbs = response.Header().Get("X-Block-Size")
expected_xbs = fmt.Sprintf("%d", len(TEST_BLOCK))
if received_xbs != expected_xbs {
t.Errorf("expected X-Block-Size %s, got %s", expected_xbs, received_xbs)
}
+ received_cl = response.Header().Get("Content-Length")
+ expected_cl = fmt.Sprintf("%d", len(TEST_BLOCK))
+ if received_cl != expected_cl {
+ t.Errorf("expected Content-Length %s, got %s", expected_cl, received_cl)
+ }
+
// Authenticated request, unsigned locator
// => PermissionError
response = IssueRequest(&RequestTester{
return
}
+ resp.Header().Set("Content-Length", fmt.Sprintf("%d", len(block)))
+
+ // If/when we support HTTP Range header (#3734), then Content-Length
+ // could be smaller than Block size
resp.Header().Set("X-Block-Size", fmt.Sprintf("%d", len(block)))
_, err = resp.Write(block)
"github.com/gorilla/mux"
"log"
"net/http"
+ "strings"
)
type LoggingResponseWriter struct {
Status int
Length int
http.ResponseWriter
+ Response string
}
func (loggingWriter *LoggingResponseWriter) WriteHeader(code int) {
func (loggingWriter *LoggingResponseWriter) Write(data []byte) (int, error) {
loggingWriter.Length += len(data)
+ if loggingWriter.Status >= 400 {
+ loggingWriter.Response += string(data)
+ }
return loggingWriter.ResponseWriter.Write(data)
}
}
func (loggingRouter *LoggingRESTRouter) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
- loggingWriter := LoggingResponseWriter{200, 0, resp}
+ loggingWriter := LoggingResponseWriter{200, 0, resp, ""}
loggingRouter.router.ServeHTTP(&loggingWriter, req)
- log.Printf("[%s] %s %s %d %d", req.RemoteAddr, req.Method, req.URL.Path[1:], loggingWriter.Status, loggingWriter.Length)
+ if loggingWriter.Status >= 400 {
+ log.Printf("[%s] %s %s %d %d '%s'", req.RemoteAddr, req.Method, req.URL.Path[1:], loggingWriter.Status, loggingWriter.Length, strings.TrimSpace(loggingWriter.Response))
+ } else {
+ log.Printf("[%s] %s %s %d %d", req.RemoteAddr, req.Method, req.URL.Path[1:], loggingWriter.Status, loggingWriter.Length)
+ }
}