http-add-on/interceptor/handler/static.go

43 lines
1.0 KiB
Go

package handler
import (
"net/http"
"github.com/kedacore/http-add-on/pkg/k8s"
"github.com/kedacore/http-add-on/pkg/routing"
"github.com/kedacore/http-add-on/pkg/util"
)
type Static struct {
statusCode int
err error
}
func NewStatic(statusCode int, err error) *Static {
return &Static{
statusCode: statusCode,
err: err,
}
}
var _ http.Handler = (*Static)(nil)
func (sh *Static) ServeHTTP(w http.ResponseWriter, r *http.Request) {
r = util.RequestWithLoggerWithName(r, "StaticHandler")
ctx := r.Context()
logger := util.LoggerFromContext(ctx)
httpso := util.HTTPSOFromContext(ctx)
stream := util.StreamFromContext(ctx)
statusText := http.StatusText(sh.statusCode)
routingKey := routing.NewKeyFromRequest(r)
namespacedName := k8s.NamespacedNameFromObject(httpso)
logger.Error(sh.err, statusText, "routingKey", routingKey, "namespacedName", namespacedName, "stream", stream)
w.WriteHeader(sh.statusCode)
if _, err := w.Write([]byte(statusText)); err != nil {
logger.Error(err, "write failed")
}
}