blob: aa5540d9012785609da85818aa5bf49cc7f4495c [file] [log] [blame]
package manager
import (
"fmt"
"net/http"
"veyron.io/veyron/veyron2/ipc/stream"
)
// HTTPHandler returns an http.Handler that dumps out debug information from
// the stream.Manager.
//
// If the stream.Manager was not created by InternalNew in this package, an error
// will be returned instead.
//
// TODO(ashankar): This should be made a secure handler that only exposes information
// on VCs that an identity authenticated over HTTPS has access to.
func HTTPHandler(mgr stream.Manager) (http.Handler, error) {
m, ok := mgr.(*manager)
if !ok {
return nil, fmt.Errorf("unrecognized stream.Manager implementation: %T", mgr)
}
return httpHandler{m}, nil
}
type httpHandler struct{ m *manager }
func (h httpHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/plain; charset=UTF-8")
w.Write([]byte(h.m.DebugString()))
}