Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- r.Handle(endpoint.Path(), Adapt(r, NewRelicAdapter(endpoint), SecurityAdapter(endpoint), WithHeader(endpoint)))
- type Adapter func(http.Handler) http.Handler
- func Adapt(h http.Handler, adapters ...Adapter) http.Handler {
- for _, adapter := range reverseAdapters(adapters) {
- h = adapter(h)
- }
- return h
- }
- func NewRelicAdapter(endpoint rest.Endpoint) Adapter {
- return func(h http.Handler) http.Handler {
- return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- logrus.Infof("New Relic Checkpoint!!! %v", endpoint.Path())
- h.ServeHTTP(w, r)
- })
- }
- }
- func SecurityAdapter(endpoint rest.Endpoint) Adapter {
- return func(h http.Handler) http.Handler {
- return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- logrus.Infof("Security Checkpoint!!! %v", endpoint.Path())
- h.ServeHTTP(w, r)
- })
- }
- }
- func WithHeader(endpoint rest.Endpoint) Adapter {
- return func(h http.Handler) http.Handler {
- return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- logrus.Infof("Header Checkpoint!!! %v", endpoint.Path())
- h.ServeHTTP(w, r)
- })
- }
- }
- func reverseAdapters(adapters []Adapter) []Adapter {
- for i := 0; i < len(adapters)/2; i++ {
- j := len(adapters) - i - 1
- adapters[i], adapters[j] = adapters[j], adapters[i]
- }
- return adapters
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement