| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- package monitor
- import (
- "time"
- "github.com/gofiber/fiber/v2"
- )
- // Config defines the config for middleware.
- type Config struct {
- // Metrics page title
- //
- // Optional. Default: "Fiber Monitor"
- Title string
- // Refresh period
- //
- // Optional. Default: 3 seconds
- Refresh time.Duration
- // Whether the service should expose only the monitoring API.
- //
- // Optional. Default: false
- APIOnly bool
- // Next defines a function to skip this middleware when returned true.
- //
- // Optional. Default: nil
- Next func(c *fiber.Ctx) bool
- // Custom HTML Code to Head Section(Before End)
- //
- // Optional. Default: empty
- CustomHead string
- // FontURL for specify font resource path or URL . also you can use relative path
- //
- // Optional. Default: https://fonts.googleapis.com/css2?family=Roboto:wght@400;900&display=swap
- FontURL string
- // ChartJsURL for specify ChartJS library path or URL . also you can use relative path
- //
- // Optional. Default: https://cdn.jsdelivr.net/npm/chart.js@2.9/dist/Chart.bundle.min.js
- ChartJsURL string // TODO: Rename to "ChartJSURL" in v3
- index string
- }
- var ConfigDefault = Config{
- Title: defaultTitle,
- Refresh: defaultRefresh,
- FontURL: defaultFontURL,
- ChartJsURL: defaultChartJSURL,
- CustomHead: defaultCustomHead,
- APIOnly: false,
- Next: nil,
- index: newIndex(viewBag{
- defaultTitle,
- defaultRefresh,
- defaultFontURL,
- defaultChartJSURL,
- defaultCustomHead,
- }),
- }
- func configDefault(config ...Config) Config {
- // Users can change ConfigDefault.Title/Refresh which then
- // become incompatible with ConfigDefault.index
- if ConfigDefault.Title != defaultTitle ||
- ConfigDefault.Refresh != defaultRefresh ||
- ConfigDefault.FontURL != defaultFontURL ||
- ConfigDefault.ChartJsURL != defaultChartJSURL ||
- ConfigDefault.CustomHead != defaultCustomHead {
- if ConfigDefault.Refresh < minRefresh {
- ConfigDefault.Refresh = minRefresh
- }
- // update default index with new default title/refresh
- ConfigDefault.index = newIndex(viewBag{
- ConfigDefault.Title,
- ConfigDefault.Refresh,
- ConfigDefault.FontURL,
- ConfigDefault.ChartJsURL,
- ConfigDefault.CustomHead,
- })
- }
- // Return default config if nothing provided
- if len(config) < 1 {
- return ConfigDefault
- }
- // Override default config
- cfg := config[0]
- // Set default values
- if cfg.Title == "" {
- cfg.Title = ConfigDefault.Title
- }
- if cfg.Refresh == 0 {
- cfg.Refresh = ConfigDefault.Refresh
- }
- if cfg.FontURL == "" {
- cfg.FontURL = defaultFontURL
- }
- if cfg.ChartJsURL == "" {
- cfg.ChartJsURL = defaultChartJSURL
- }
- if cfg.Refresh < minRefresh {
- cfg.Refresh = minRefresh
- }
- if cfg.Next == nil {
- cfg.Next = ConfigDefault.Next
- }
- if !cfg.APIOnly {
- cfg.APIOnly = ConfigDefault.APIOnly
- }
- // update cfg.index with custom title/refresh
- cfg.index = newIndex(viewBag{
- title: cfg.Title,
- refresh: cfg.Refresh,
- fontURL: cfg.FontURL,
- chartJSURL: cfg.ChartJsURL,
- customHead: cfg.CustomHead,
- })
- return cfg
- }
|