mirror of
https://github.com/nabbar/golib.git
synced 2025-10-31 02:56:26 +08:00
Package Monitoring : - use packag dedicated to monitor component - each monitor work as standalone server to monitor health - collect metrics to export them to prometheus exporter Package Prometheus : - review to simplify use for API and not API metrics - optimize code Package Status : - Rework to use Monitor package - Rework to use native json / text Marshaller interface Context : - rework context config (context var) to use sync map and sync RWMutex (WORM) - move gin context to dedicated sub package (dependancies of logger make circular dependencies) - optimize code Config : - rework to optimize sync / collect of component - rework status to monitor - remove monitor managment from config to each component - add a func to set default logger to implement inherit default logger options - optimize code IOUtils : - isolate logger / closer interface as a usable & public interface & instance - this interface / instance allow to collect io.closer over a context to close all if context is done Logger : - rework to use context.config map - rework to use ioutils closer - rework to allow options to inherit a default options, or the last version of options - optimize code Size : - Add package Size to calculate and manipulate size Byte or bit - Add encoding : Text/JSON/Yaml/Toml... - Add option to défine default unit : Byte or bit Other : - adjust following code - optimize code - limit use of atomic value - rework to use RWMutex instead of sync.Mutex to maximize capabilities of read instead of write - remove 32bit build for CI/CD - add darwin/arm64 build for CI/CD Bump Dependencies
Package Static
This package help to manage static file router in an API to embedded files into the go binary api.
This package requires packr tools, golib/router & go Gin Tonic API Framework.
Example of implementation
We will work on an example of file/folder tree like this :
/
bin/
api/
config/
routers/
static/
get.go
static/
static/
...some_static_files...
in the get.go file, we will implement the static package call :
package static
import (
"github.com/gin-gonic/gin"
"github.com/gobuffalo/packr"
"github.com/nabbar/golib/static"
"myapp/release"
"myapp/bin/api/config"
"myapp/bin/api/routers"
)
const UrlPrefix = "/static"
func init() {
staticStcFile := static.NewStatic(false, UrlPrefix, packr.NewBox("../../../../static/static"), GetHeader)
staticStcFile.SetDownloadAll()
staticStcFile.Register(routers.RouterList.Register)
}
func GetHeader(c *gin.Context) {
// any function to return global & generic header (like CSP, HSTS, ...)
}