github.com/gofiber/fiber/v2@v2.47.0/middleware/monitor/config.go (about) 1 package monitor 2 3 import ( 4 "time" 5 6 "github.com/gofiber/fiber/v2" 7 ) 8 9 // Config defines the config for middleware. 10 type Config struct { 11 // Metrics page title 12 // 13 // Optional. Default: "Fiber Monitor" 14 Title string 15 16 // Refresh period 17 // 18 // Optional. Default: 3 seconds 19 Refresh time.Duration 20 21 // Whether the service should expose only the monitoring API. 22 // 23 // Optional. Default: false 24 APIOnly bool 25 26 // Next defines a function to skip this middleware when returned true. 27 // 28 // Optional. Default: nil 29 Next func(c *fiber.Ctx) bool 30 31 // Custom HTML Code to Head Section(Before End) 32 // 33 // Optional. Default: empty 34 CustomHead string 35 36 // FontURL for specify font resource path or URL . also you can use relative path 37 // 38 // Optional. Default: https://fonts.googleapis.com/css2?family=Roboto:wght@400;900&display=swap 39 FontURL string 40 41 // ChartJsURL for specify ChartJS library path or URL . also you can use relative path 42 // 43 // Optional. Default: https://cdn.jsdelivr.net/npm/chart.js@2.9/dist/Chart.bundle.min.js 44 ChartJsURL string // TODO: Rename to "ChartJSURL" in v3 45 46 index string 47 } 48 49 var ConfigDefault = Config{ 50 Title: defaultTitle, 51 Refresh: defaultRefresh, 52 FontURL: defaultFontURL, 53 ChartJsURL: defaultChartJSURL, 54 CustomHead: defaultCustomHead, 55 APIOnly: false, 56 Next: nil, 57 index: newIndex(viewBag{ 58 defaultTitle, 59 defaultRefresh, 60 defaultFontURL, 61 defaultChartJSURL, 62 defaultCustomHead, 63 }), 64 } 65 66 func configDefault(config ...Config) Config { 67 // Users can change ConfigDefault.Title/Refresh which then 68 // become incompatible with ConfigDefault.index 69 if ConfigDefault.Title != defaultTitle || 70 ConfigDefault.Refresh != defaultRefresh || 71 ConfigDefault.FontURL != defaultFontURL || 72 ConfigDefault.ChartJsURL != defaultChartJSURL || 73 ConfigDefault.CustomHead != defaultCustomHead { 74 if ConfigDefault.Refresh < minRefresh { 75 ConfigDefault.Refresh = minRefresh 76 } 77 // update default index with new default title/refresh 78 ConfigDefault.index = newIndex(viewBag{ 79 ConfigDefault.Title, 80 ConfigDefault.Refresh, 81 ConfigDefault.FontURL, 82 ConfigDefault.ChartJsURL, 83 ConfigDefault.CustomHead, 84 }) 85 } 86 87 // Return default config if nothing provided 88 if len(config) < 1 { 89 return ConfigDefault 90 } 91 92 // Override default config 93 cfg := config[0] 94 95 // Set default values 96 if cfg.Title == "" { 97 cfg.Title = ConfigDefault.Title 98 } 99 100 if cfg.Refresh == 0 { 101 cfg.Refresh = ConfigDefault.Refresh 102 } 103 if cfg.FontURL == "" { 104 cfg.FontURL = defaultFontURL 105 } 106 107 if cfg.ChartJsURL == "" { 108 cfg.ChartJsURL = defaultChartJSURL 109 } 110 if cfg.Refresh < minRefresh { 111 cfg.Refresh = minRefresh 112 } 113 114 if cfg.Next == nil { 115 cfg.Next = ConfigDefault.Next 116 } 117 118 if !cfg.APIOnly { 119 cfg.APIOnly = ConfigDefault.APIOnly 120 } 121 122 // update cfg.index with custom title/refresh 123 cfg.index = newIndex(viewBag{ 124 title: cfg.Title, 125 refresh: cfg.Refresh, 126 fontURL: cfg.FontURL, 127 chartJSURL: cfg.ChartJsURL, 128 customHead: cfg.CustomHead, 129 }) 130 131 return cfg 132 }