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  }