zrok/util/proxy.go

33 lines
609 B
Go

package util
import (
"net/http"
"net/http/httputil"
"sync/atomic"
)
type proxyHandler struct {
proxy *httputil.ReverseProxy
requests int32
}
func NewProxyHandler(proxy *httputil.ReverseProxy) *proxyHandler {
handler := &proxyHandler{proxy: proxy}
director := proxy.Director
proxy.Director = func(req *http.Request) {
atomic.AddInt32(&handler.requests, 1)
director(req)
}
return handler
}
func (self *proxyHandler) Requests() int32 {
return atomic.LoadInt32(&self.requests)
}
func (self *proxyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
self.proxy.ServeHTTP(w, r)
}