mirror of
https://github.com/cwinfo/matterbridge.git
synced 2025-07-03 11:57:45 +00:00
Update vendor
This commit is contained in:
82
vendor/github.com/labstack/echo/cookbook/middleware/server.go
generated
vendored
Normal file
82
vendor/github.com/labstack/echo/cookbook/middleware/server.go
generated
vendored
Normal file
@ -0,0 +1,82 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/labstack/echo"
|
||||
)
|
||||
|
||||
type (
|
||||
Stats struct {
|
||||
Uptime time.Time `json:"uptime"`
|
||||
RequestCount uint64 `json:"requestCount"`
|
||||
Statuses map[string]int `json:"statuses"`
|
||||
mutex sync.RWMutex
|
||||
}
|
||||
)
|
||||
|
||||
func NewStats() *Stats {
|
||||
return &Stats{
|
||||
Uptime: time.Now(),
|
||||
Statuses: make(map[string]int),
|
||||
}
|
||||
}
|
||||
|
||||
// Process is the middleware function.
|
||||
func (s *Stats) Process(next echo.HandlerFunc) echo.HandlerFunc {
|
||||
return func(c echo.Context) error {
|
||||
if err := next(c); err != nil {
|
||||
c.Error(err)
|
||||
}
|
||||
s.mutex.Lock()
|
||||
defer s.mutex.Unlock()
|
||||
s.RequestCount++
|
||||
status := strconv.Itoa(c.Response().Status)
|
||||
s.Statuses[status]++
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// Handle is the endpoint to get stats.
|
||||
func (s *Stats) Handle(c echo.Context) error {
|
||||
s.mutex.RLock()
|
||||
defer s.mutex.RUnlock()
|
||||
return c.JSON(http.StatusOK, s)
|
||||
}
|
||||
|
||||
// ServerHeader middleware adds a `Server` header to the response.
|
||||
func ServerHeader(next echo.HandlerFunc) echo.HandlerFunc {
|
||||
return func(c echo.Context) error {
|
||||
c.Response().Header().Set(echo.HeaderServer, "Echo/3.0")
|
||||
return next(c)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
e := echo.New()
|
||||
|
||||
// Debug mode
|
||||
e.Debug = true
|
||||
|
||||
//-------------------
|
||||
// Custom middleware
|
||||
//-------------------
|
||||
// Stats
|
||||
s := NewStats()
|
||||
e.Use(s.Process)
|
||||
e.GET("/stats", s.Handle) // Endpoint to get stats
|
||||
|
||||
// Server header
|
||||
e.Use(ServerHeader)
|
||||
|
||||
// Handler
|
||||
e.GET("/", func(c echo.Context) error {
|
||||
return c.String(http.StatusOK, "Hello, World!")
|
||||
})
|
||||
|
||||
// Start server
|
||||
e.Logger.Fatal(e.Start(":1323"))
|
||||
}
|
Reference in New Issue
Block a user