Add first routes and log middleware handling
This commit is contained in:
parent
b8bb280d0a
commit
9f39de9bca
9 changed files with 341 additions and 22 deletions
31
bootserver/helpers/helpers.go
Normal file
31
bootserver/helpers/helpers.go
Normal file
|
@ -0,0 +1,31 @@
|
|||
package helpers
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type ContextKey string
|
||||
|
||||
const ResponseInfoKey ContextKey = "response_info"
|
||||
|
||||
type ResponseInfo struct {
|
||||
ReturnCode int
|
||||
ContentLength int
|
||||
}
|
||||
|
||||
func HandleResponse(w http.ResponseWriter, r *http.Request, returncode int, content []byte, l *logrus.Logger) {
|
||||
w.WriteHeader(returncode)
|
||||
n, err := w.Write(content)
|
||||
if err != nil {
|
||||
l.Errorf("Failed to write content to response: %q", err.Error())
|
||||
}
|
||||
if n != len(content) {
|
||||
l.Errorf("Failed to write the entire response (%d/%d)", n, len(content))
|
||||
}
|
||||
|
||||
contextedReq := r.WithContext(context.WithValue(r.Context(), ResponseInfoKey, ResponseInfo{ReturnCode: returncode, ContentLength: len(content)}))
|
||||
*r = *contextedReq
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue