handler.go 834 B

12345678910111213141516171819202122232425262728293031323334
  1. package v2
  2. import (
  3. "net/http"
  4. "github.com/gorilla/mux"
  5. )
  6. // prefix is appended to the lock's prefix since the leader mod uses the lock mod.
  7. const prefix = "/_mod/leader"
  8. // handler manages the leader HTTP request.
  9. type handler struct {
  10. *mux.Router
  11. client *http.Client
  12. transport *http.Transport
  13. addr string
  14. }
  15. // NewHandler creates an HTTP handler that can be registered on a router.
  16. func NewHandler(addr string) (http.Handler) {
  17. transport := &http.Transport{DisableKeepAlives: false}
  18. h := &handler{
  19. Router: mux.NewRouter(),
  20. client: &http.Client{Transport: transport},
  21. transport: transport,
  22. addr: addr,
  23. }
  24. h.StrictSlash(false)
  25. h.HandleFunc("/{key:.*}", h.getHandler).Methods("GET")
  26. h.HandleFunc("/{key:.*}", h.setHandler).Methods("PUT")
  27. h.HandleFunc("/{key:.*}", h.deleteHandler).Methods("DELETE")
  28. return h
  29. }