本文整理匯總了Golang中github.com/flynn/flynn/pkg/httphelper.ContextInjector函數的典型用法代碼示例。如果您正苦於以下問題:Golang ContextInjector函數的具體用法?Golang ContextInjector怎麽用?Golang ContextInjector使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了ContextInjector函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: APIHandler
func APIHandler(conf *Config) http.Handler {
api := &API{
conf: conf,
}
if conf.Cache {
if err := api.cacheDashboardJS(); err != nil {
panic(err)
}
}
router := httprouter.New()
router2 := httprouter.New()
prefixPath := func(p string) string {
return path.Join(conf.PathPrefix, p)
}
router.HandlerFunc("GET", status.Path, status.HealthyHandler.ServeHTTP)
router.POST(prefixPath("/user/sessions"), api.WrapHandler(api.Login))
router.DELETE(prefixPath("/user/session"), api.WrapHandler(api.Logout))
router.GET(prefixPath("/config"), api.WrapHandler(api.GetConfig))
router.NotFound = router2.ServeHTTP
router2.GET(prefixPath("/*path"), api.WrapHandler(api.ServeAsset))
return httphelper.ContextInjector("dashboard",
httphelper.NewRequestLogger(
api.CorsHandler(router)))
}
示例2: main
func main() {
defer shutdown.Exit()
db := postgres.Wait(&postgres.Conf{
Service: serviceName,
User: "flynn",
Password: os.Getenv("PGPASSWORD"),
Database: "postgres",
}, nil)
api := &pgAPI{db}
router := httprouter.New()
router.POST("/databases", httphelper.WrapHandler(api.createDatabase))
router.DELETE("/databases", httphelper.WrapHandler(api.dropDatabase))
router.GET("/ping", httphelper.WrapHandler(api.ping))
port := os.Getenv("PORT")
if port == "" {
port = "3000"
}
addr := ":" + port
hb, err := discoverd.AddServiceAndRegister(serviceName+"-api", addr)
if err != nil {
shutdown.Fatal(err)
}
shutdown.BeforeExit(func() { hb.Close() })
handler := httphelper.ContextInjector(serviceName+"-api", httphelper.NewRequestLogger(router))
shutdown.Fatal(http.ListenAndServe(addr, handler))
}
示例3: NewHandler
// NewHandler returns a new instance of Handler.
func NewHandler() *Handler {
r := httprouter.New()
h := &Handler{Handler: r}
if os.Getenv("DEBUG") != "" {
h.Handler = hh.ContextInjector("discoverd", hh.NewRequestLogger(h.Handler))
}
r.HandlerFunc("GET", status.Path, status.HealthyHandler.ServeHTTP)
r.PUT("/services/:service", h.servePutService)
r.DELETE("/services/:service", h.serveDeleteService)
r.GET("/services/:service", h.serveGetService)
r.PUT("/services/:service/meta", h.servePutServiceMeta)
r.GET("/services/:service/meta", h.serveGetServiceMeta)
r.PUT("/services/:service/instances/:instance_id", h.servePutInstance)
r.DELETE("/services/:service/instances/:instance_id", h.serveDeleteInstance)
r.GET("/services/:service/instances", h.serveGetInstances)
r.PUT("/services/:service/leader", h.servePutLeader)
r.GET("/services/:service/leader", h.serveGetLeader)
r.GET("/raft/leader", h.serveGetRaftLeader)
r.POST("/raft/nodes", h.servePostRaftNodes)
r.DELETE("/raft/nodes", h.serveDeleteRaftNodes)
r.GET("/ping", h.servePing)
return h
}
示例4: main
func main() {
defer shutdown.Exit()
api := &API{}
router := httprouter.New()
router.POST("/databases", api.createDatabase)
router.DELETE("/databases", api.dropDatabase)
router.GET("/ping", api.ping)
port := os.Getenv("PORT")
if port == "" {
port = "3000"
}
addr := ":" + port
hb, err := discoverd.AddServiceAndRegister(serviceName+"-api", addr)
if err != nil {
shutdown.Fatal(err)
}
shutdown.BeforeExit(func() { hb.Close() })
handler := httphelper.ContextInjector(serviceName+"-api", httphelper.NewRequestLogger(router))
shutdown.Fatal(http.ListenAndServe(addr, handler))
}
示例5: main
func main() {
defer shutdown.Exit()
dsn := &mariadb.DSN{
Host: serviceHost + ":3306",
User: "flynn",
Password: os.Getenv("MYSQL_PWD"),
Database: "mysql",
}
db, err := sql.Open("mysql", dsn.String())
api := &API{db}
router := httprouter.New()
router.POST("/databases", httphelper.WrapHandler(api.createDatabase))
router.DELETE("/databases", httphelper.WrapHandler(api.dropDatabase))
router.GET("/ping", httphelper.WrapHandler(api.ping))
port := os.Getenv("PORT")
if port == "" {
port = "3000"
}
addr := ":" + port
hb, err := discoverd.AddServiceAndRegister(serviceName+"-api", addr)
if err != nil {
shutdown.Fatal(err)
}
shutdown.BeforeExit(func() { hb.Close() })
handler := httphelper.ContextInjector(serviceName+"-api", httphelper.NewRequestLogger(router))
shutdown.Fatal(http.ListenAndServe(addr, handler))
}
示例6: runServer
func runServer(_ *docopt.Args) error {
addr := ":" + os.Getenv("PORT")
db := postgres.Wait(nil, nil)
if err := dbMigrations.Migrate(db); err != nil {
return fmt.Errorf("error running DB migrations: %s", err)
}
mux := http.NewServeMux()
repo, err := data.NewFileRepoFromEnv(db)
if err != nil {
return err
}
hb, err := discoverd.AddServiceAndRegister("blobstore", addr)
if err != nil {
return err
}
shutdown.BeforeExit(func() { hb.Close() })
log.Println("Blobstore serving files on " + addr)
mux.Handle("/", handler(repo))
mux.Handle(status.Path, status.Handler(func() status.Status {
if err := db.Exec("SELECT 1"); err != nil {
return status.Unhealthy
}
return status.Healthy
}))
h := httphelper.ContextInjector("blobstore", httphelper.NewRequestLogger(mux))
return http.ListenAndServe(addr, h)
}
示例7: apiHandler
func apiHandler(agg *Aggregator) http.Handler {
api := aggregatorAPI{agg: agg}
r := httprouter.New()
r.GET("/log/:channel_id", httphelper.WrapHandler(api.GetLog))
return httphelper.ContextInjector(
"logaggregator-api",
httphelper.NewRequestLogger(r),
)
}
示例8: main
func main() {
key := os.Getenv("CONTROLLER_KEY")
if key == "" {
log.Fatal("missing CONTROLLER_KEY env var")
}
cc, err := controller.NewClient("", key)
if err != nil {
log.Fatalln("Unable to connect to controller:", err)
}
log.Fatal(http.ListenAndServe(":"+os.Getenv("PORT"), httphelper.ContextInjector("gitreceive", httphelper.NewRequestLogger(newGitHandler(cc, []byte(key))))))
}
示例9: apiHandler
func apiHandler(agg *Aggregator, cursors *HostCursors) http.Handler {
api := aggregatorAPI{agg, cursors}
r := httprouter.New()
r.Handler("GET", status.Path, status.HealthyHandler)
r.GET("/log/:channel_id", httphelper.WrapHandler(api.GetLog))
r.GET("/cursors", httphelper.WrapHandler(api.GetCursors))
return httphelper.ContextInjector(
"logaggregator-api",
httphelper.NewRequestLogger(r),
)
}
示例10: ServeHTTP
func (h *Host) ServeHTTP() {
r := httprouter.New()
r.POST("/attach", (&attachHandler{state: h.state, backend: h.backend}).ServeHTTP)
jobAPI := &jobAPI{host: h}
jobAPI.RegisterRoutes(r)
volAPI := volumeapi.NewHTTPAPI(cluster.NewClient(), h.vman)
volAPI.RegisterRoutes(r)
go http.Serve(h.listener, httphelper.ContextInjector("host", httphelper.NewRequestLogger(r)))
}
示例11: ServeHTTP
func (h *Host) ServeHTTP() {
r := httprouter.New()
r.POST("/attach", newAttachHandler(h.state, h.backend, h.log).ServeHTTP)
jobAPI := &jobAPI{
host: h,
addJobRateLimitBucket: NewRateLimitBucket(h.maxJobConcurrency),
}
jobAPI.RegisterRoutes(r)
h.volAPI.RegisterRoutes(r)
go http.Serve(h.listener, httphelper.ContextInjector("host", httphelper.NewRequestLogger(r)))
}
示例12: ServeHTTP
func (h *Host) ServeHTTP() {
r := httprouter.New()
r.POST("/attach", newAttachHandler(h.state, h.backend, h.log).ServeHTTP)
jobAPI := &jobAPI{
host: h,
addJobRatelimitBucket: make(chan struct{}, h.maxJobConcurrency),
}
jobAPI.RegisterRoutes(r)
volAPI := volumeapi.NewHTTPAPI(cluster.NewClient(), h.vman)
volAPI.RegisterRoutes(r)
go http.Serve(h.listener, httphelper.ContextInjector("host", httphelper.NewRequestLogger(r)))
}
示例13: apiHandler
func apiHandler(rtr *Router) http.Handler {
api := &API{router: rtr}
r := httprouter.New()
r.HandlerFunc("GET", status.Path, status.HealthyHandler.ServeHTTP)
r.POST("/routes", httphelper.WrapHandler(api.CreateRoute))
r.PUT("/routes/:route_type/:id", httphelper.WrapHandler(api.UpdateRoute))
r.GET("/routes", httphelper.WrapHandler(api.GetRoutes))
r.GET("/routes/:route_type/:id", httphelper.WrapHandler(api.GetRoute))
r.DELETE("/routes/:route_type/:id", httphelper.WrapHandler(api.DeleteRoute))
r.GET("/events", httphelper.WrapHandler(api.StreamEvents))
r.HandlerFunc("GET", "/debug/*path", pprof.Handler.ServeHTTP)
return httphelper.ContextInjector("router", httphelper.NewRequestLogger(r))
}
示例14: main
func main() {
defer shutdown.Exit()
flag.Parse()
addr := os.Getenv("PORT")
if addr == "" {
addr = *listenPort
}
addr = ":" + addr
var fs Filesystem
var storageDesc string
if *storageDir != "" {
fs = NewOSFilesystem(*storageDir)
storageDesc = *storageDir
} else {
var err error
db := postgres.Wait(nil, nil)
fs, err = NewPostgresFilesystem(db)
if err != nil {
shutdown.Fatal(err)
}
storageDesc = "Postgres"
}
if *serviceDiscovery {
hb, err := discoverd.AddServiceAndRegister("blobstore", addr)
if err != nil {
shutdown.Fatal(err)
}
shutdown.BeforeExit(func() { hb.Close() })
}
log.Println("Blobstore serving files on " + addr + " from " + storageDesc)
mux := http.NewServeMux()
mux.Handle("/", handler(fs))
mux.Handle(status.Path, status.Handler(fs.Status))
h := httphelper.ContextInjector("blobstore", httphelper.NewRequestLogger(mux))
shutdown.Fatal(http.ListenAndServe(addr, h))
}
示例15: NewHandler
// NewHandler returns a new instance of Handler.
func NewHandler(proxy bool, peers []string) *Handler {
r := httprouter.New()
h := &Handler{Handler: r}
h.Shutdown.Store(false)
h.Peers = peers
h.Proxy.Store(proxy)
if os.Getenv("DEBUG") != "" {
h.Handler = hh.ContextInjector("discoverd", hh.NewRequestLoggerCustom(h.Handler, loggerFn))
}
r.HandlerFunc("GET", status.Path, status.HealthyHandler.ServeHTTP)
r.PUT("/services/:service", h.servePutService)
r.DELETE("/services/:service", h.serveDeleteService)
r.GET("/services/:service", h.serveGetService)
r.PUT("/services/:service/meta", h.servePutServiceMeta)
r.GET("/services/:service/meta", h.serveGetServiceMeta)
r.PUT("/services/:service/instances/:instance_id", h.servePutInstance)
r.DELETE("/services/:service/instances/:instance_id", h.serveDeleteInstance)
r.GET("/services/:service/instances", h.serveGetInstances)
r.PUT("/services/:service/leader", h.servePutLeader)
r.GET("/services/:service/leader", h.serveGetLeader)
r.GET("/raft/leader", h.serveGetRaftLeader)
r.GET("/raft/peers", h.serveGetRaftPeers)
r.PUT("/raft/peers/:peer", h.servePutRaftPeer)
r.DELETE("/raft/peers/:peer", h.serveDeleteRaftPeer)
r.POST("/raft/promote", h.servePromote)
r.POST("/raft/demote", h.serveDemote)
r.GET("/ping", h.servePing)
r.POST("/shutdown", h.serveShutdown)
return h
}