Advertisement
Guest User

Untitled

a guest
Aug 19th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. r.Handle(endpoint.Path(), Adapt(r, NewRelicAdapter(endpoint), SecurityAdapter(endpoint), WithHeader(endpoint)))
  2.  
  3. type Adapter func(http.Handler) http.Handler
  4.  
  5. func Adapt(h http.Handler, adapters ...Adapter) http.Handler {
  6. for _, adapter := range reverseAdapters(adapters) {
  7. h = adapter(h)
  8. }
  9. return h
  10. }
  11.  
  12. func NewRelicAdapter(endpoint rest.Endpoint) Adapter {
  13. return func(h http.Handler) http.Handler {
  14. return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  15. logrus.Infof("New Relic Checkpoint!!! %v", endpoint.Path())
  16. h.ServeHTTP(w, r)
  17. })
  18. }
  19. }
  20.  
  21. func SecurityAdapter(endpoint rest.Endpoint) Adapter {
  22. return func(h http.Handler) http.Handler {
  23. return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  24. logrus.Infof("Security Checkpoint!!! %v", endpoint.Path())
  25. h.ServeHTTP(w, r)
  26. })
  27. }
  28. }
  29.  
  30. func WithHeader(endpoint rest.Endpoint) Adapter {
  31. return func(h http.Handler) http.Handler {
  32. return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  33. logrus.Infof("Header Checkpoint!!! %v", endpoint.Path())
  34. h.ServeHTTP(w, r)
  35. })
  36. }
  37. }
  38.  
  39. func reverseAdapters(adapters []Adapter) []Adapter {
  40. for i := 0; i < len(adapters)/2; i++ {
  41. j := len(adapters) - i - 1
  42. adapters[i], adapters[j] = adapters[j], adapters[i]
  43. }
  44. return adapters
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement