本文整理匯總了Golang中github.com/flynn/flynn/Godeps/_workspace/src/github.com/julienschmidt/httprouter.New函數的典型用法代碼示例。如果您正苦於以下問題:Golang New函數的具體用法?Golang New怎麽用?Golang New使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了New函數的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.GET(prefixPath("/cert"), api.WrapHandler(api.GetCert))
router.NotFound = router2.ServeHTTP
router2.GET(prefixPath("/*path"), api.WrapHandler(api.ServeAsset))
return httphelper.ContextInjector("dashboard",
httphelper.NewRequestLogger(
api.CorsHandler(router)))
}
示例2: NewHandler
// NewHandler returns a new instance of Handler.
func NewHandler() *Handler {
h := &Handler{router: httprouter.New()}
h.router.HandlerFunc("GET", status.Path, status.HealthyHandler.ServeHTTP)
h.router.PUT("/services/:service", h.servePutService)
h.router.DELETE("/services/:service", h.serveDeleteService)
h.router.GET("/services/:service", h.serveGetService)
h.router.PUT("/services/:service/meta", h.servePutServiceMeta)
h.router.GET("/services/:service/meta", h.serveGetServiceMeta)
h.router.PUT("/services/:service/instances/:instance_id", h.servePutInstance)
h.router.DELETE("/services/:service/instances/:instance_id", h.serveDeleteInstance)
h.router.GET("/services/:service/instances", h.serveGetInstances)
h.router.PUT("/services/:service/leader", h.servePutLeader)
h.router.GET("/services/:service/leader", h.serveGetLeader)
h.router.GET("/raft/leader", h.serveGetRaftLeader)
h.router.POST("/raft/nodes", h.servePostRaftNodes)
h.router.DELETE("/raft/nodes", h.serveDeleteRaftNodes)
h.router.GET("/ping", h.servePing)
return h
}
示例3: 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))
}
示例4: 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", 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()
api := &API{}
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: ServeHTTP
func ServeHTTP() error {
api := &httpAPI{
InstallerPrompts: make(map[string]*httpPrompt),
InstallerStacks: make(map[string]*httpInstaller),
}
if creds, err := aws.EnvCreds(); err == nil {
api.AWSEnvCreds = creds
}
httpRouter := httprouter.New()
httpRouter.GET("/", api.ServeTemplate)
httpRouter.GET("/install", api.ServeTemplate)
httpRouter.GET("/install/:id", api.ServeTemplate)
httpRouter.POST("/install", api.InstallHandler)
httpRouter.GET("/events/:id", api.EventsHandler)
httpRouter.POST("/prompt/:id", api.PromptHandler)
httpRouter.GET("/assets/*assetPath", api.ServeAsset)
l, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
return err
}
addr := fmt.Sprintf("http://localhost:%d", l.Addr().(*net.TCPAddr).Port)
if err := api.OpenAddr(addr); err != nil {
fmt.Printf("Open %s in your browser to continue.\n", addr)
}
return http.Serve(l, api.CorsHandler(httpRouter, addr))
}
示例7: ServeHTTP
func ServeHTTP() error {
logger := log.New()
installer := NewInstaller(logger)
api := &httpAPI{
Installer: installer,
logger: logger,
clientConfig: installerJSConfig{
Endpoints: map[string]string{
"clusters": "/clusters",
"cluster": "/clusters/:id",
"upload_backup": "/clusters/:id/upload-backup",
"cert": "/clusters/:id/ca-cert",
"events": "/events",
"prompt": "/clusters/:id/prompts/:prompt_id",
"credentials": "/credentials",
"regions": "/regions",
"azureSubscriptions": "/azure/subscriptions",
},
},
}
if creds, err := aws.EnvCreds(); err == nil {
api.AWSEnvCreds = creds
if c, err := creds.Credentials(); err == nil {
api.clientConfig.HasAWSEnvCredentials = true
api.clientConfig.AWSEnvCredentialsID = c.AccessKeyID
}
}
httpRouter := httprouter.New()
httpRouter.GET("/", api.ServeTemplate)
httpRouter.GET("/credentials", api.ServeTemplate)
httpRouter.GET("/credentials/:id", api.ServeTemplate)
httpRouter.GET("/clusters/:id", api.ServeTemplate)
httpRouter.POST("/clusters/:id/upload-backup", api.ReceiveBackup)
httpRouter.GET("/clusters/:id/ca-cert", api.GetCert)
httpRouter.GET("/clusters/:id/delete", api.ServeTemplate)
httpRouter.GET("/oauth/azure", api.ServeTemplate)
httpRouter.DELETE("/clusters/:id", api.DeleteCluster)
httpRouter.GET("/clusters", api.RedirectRoot)
httpRouter.POST("/clusters", api.LaunchCluster)
httpRouter.GET("/events", api.Events)
httpRouter.POST("/clusters/:id/prompts/:prompt_id", api.Prompt)
httpRouter.GET("/assets/*assetPath", api.ServeAsset)
httpRouter.POST("/credentials", api.NewCredential)
httpRouter.DELETE("/credentials/:type/:id", api.DeleteCredential)
httpRouter.GET("/regions", api.GetCloudRegions)
httpRouter.GET("/azure/subscriptions", api.GetAzureSubscriptions)
l, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
return err
}
addr := fmt.Sprintf("http://localhost:%d", l.Addr().(*net.TCPAddr).Port)
fmt.Printf("Open %s in your browser to continue.\n", addr)
browser.OpenURL(addr)
return http.Serve(l, api.CorsHandler(httpRouter, addr))
}
示例8: NewHTTPHandler
func NewHTTPHandler(ds Datastore) http.Handler {
router := httprouter.New()
api := &httpAPI{
Store: ds,
}
router.PUT("/services/:service", api.AddService)
router.DELETE("/services/:service", api.RemoveService)
router.GET("/services/:service", api.GetServiceStream)
router.PUT("/services/:service/meta", api.SetServiceMeta)
router.GET("/services/:service/meta", api.GetServiceMeta)
router.PUT("/services/:service/instances/:instance_id", api.AddInstance)
router.DELETE("/services/:service/instances/:instance_id", api.RemoveInstance)
router.GET("/services/:service/instances", api.GetInstances)
router.PUT("/services/:service/leader", api.SetLeader)
router.GET("/services/:service/leader", api.GetLeader)
router.GET("/ping", func(http.ResponseWriter, *http.Request, httprouter.Params) {})
return router
}
示例9: 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
}
示例10: NewHandler
// NewHandler returns a new instance of Handler.
func NewHandler() *Handler {
h := &Handler{
router: httprouter.New(),
}
h.router.Handler("GET", status.Path, status.Handler(h.healthStatus))
h.router.GET("/status", h.handleGetStatus)
h.router.POST("/stop", h.handlePostStop)
return h
}
示例11: 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),
)
}
示例12: NewHandler
// NewAPIHandler returns a new instance of APIHandler.
func NewHandler() *Handler {
h := &Handler{
router: httprouter.New(),
Logger: log15.New(),
}
h.router.POST("/clusters", h.servePostCluster)
h.router.DELETE("/clusters", h.serveDeleteCluster)
h.router.GET("/ping", h.serveGetPing)
return h
}
示例13: 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),
)
}
示例14: 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)))
}
示例15: ServeHTTP
func ServeHTTP(pg *Postgres, peer *state.Peer, hb discoverd.Heartbeater, log log15.Logger) error {
api := &HTTP{
pg: pg,
peer: peer,
hb: hb,
log: log,
}
r := httprouter.New()
r.Handler("GET", status.Path, status.Handler(api.GetHealthStatus))
r.GET("/status", api.GetStatus)
r.POST("/stop", api.Stop)
return http.ListenAndServe(":5433", r)
}