diff options
| author | Bobby <[email protected]> | 2026-03-03 16:54:33 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-03-03 16:54:33 +0530 |
| commit | f6e671264734b8d82b48102041ad7f92ec2f1048 (patch) | |
| tree | e0bd44e095f5732c698f7adbfe64680ca424a545 | |
| parent | 8631dd7420c35ce8c8b7da5f19eb4b516abcddc3 (diff) | |
| download | pagoda-f6e671264734b8d82b48102041ad7f92ec2f1048.tar.xz pagoda-f6e671264734b8d82b48102041ad7f92ec2f1048.zip | |
refactor: standardize context variable naming in middleware and meta packages
| -rw-r--r-- | shrine/middleware/logger.go | 12 | ||||
| -rw-r--r-- | shrine/middleware/request.go | 8 | ||||
| -rw-r--r-- | shrine/utils/logger/logger.go | 85 | ||||
| -rw-r--r-- | shrine/utils/logger/types.go | 39 | ||||
| -rw-r--r-- | shrine/utils/meta/body.go | 11 | ||||
| -rw-r--r-- | shrine/utils/meta/builder.go | 18 | ||||
| -rw-r--r-- | shrine/utils/meta/functions.go | 12 | ||||
| -rw-r--r-- | shrine/utils/meta/request.go | 38 | ||||
| -rw-r--r-- | shrine/utils/meta/types.go | 14 | ||||
| -rw-r--r-- | shrine/utils/meta/value.go | 6 |
10 files changed, 119 insertions, 124 deletions
diff --git a/shrine/middleware/logger.go b/shrine/middleware/logger.go index 56b13eb..500c2ac 100644 --- a/shrine/middleware/logger.go +++ b/shrine/middleware/logger.go @@ -11,16 +11,16 @@ import ( ) func httpLogger() fiber.Handler { - return func(c *fiber.Ctx) error { + return func(context *fiber.Ctx) error { start := time.Now() - err := c.Next() + err := context.Next() duration := time.Since(start) - status := c.Response().StatusCode() - method := c.Method() - path := c.Path() - ip := c.IP() + status := context.Response().StatusCode() + method := context.Method() + path := context.Path() + ip := context.IP() // Pad method for alignment paddedMethod := method diff --git a/shrine/middleware/request.go b/shrine/middleware/request.go index 2577f16..3ddb545 100644 --- a/shrine/middleware/request.go +++ b/shrine/middleware/request.go @@ -7,9 +7,9 @@ import ( ) func request() fiber.Handler { - return func(c *fiber.Ctx) error { - req := meta.BuildRequest(c) - c.Locals(meta.RequestKey, req) - return c.Next() + return func(context *fiber.Ctx) error { + req := meta.BuildRequest(context) + context.Locals(meta.RequestKey, req) + return context.Next() } } diff --git a/shrine/utils/logger/logger.go b/shrine/utils/logger/logger.go index 9fc1bc7..176a173 100644 --- a/shrine/utils/logger/logger.go +++ b/shrine/utils/logger/logger.go @@ -4,7 +4,6 @@ import ( "fmt" "os" "strings" - "time" "go.uber.org/zap" "go.uber.org/zap/zapcore" @@ -15,23 +14,20 @@ const prefixWidth = 15 var ( loggerInstance *zap.Logger level zap.AtomicLevel - showTimestamp bool ) -func timeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) { - enc.AppendString(Gray + t.Format(time.RFC3339) + Reset) -} - -func levelEncoder(l zapcore.Level, enc zapcore.PrimitiveArrayEncoder) { +func levelBadge(l logLevel) string { switch l { - case zapcore.DebugLevel: - enc.AppendString(LevelColorDebug) - case zapcore.WarnLevel: - enc.AppendString(LevelColorWarn) - case zapcore.ErrorLevel: - enc.AppendString(LevelColorError) + case levelDebug: + return levelColorDebug + case levelWarn: + return levelColorWarn + case levelError: + return levelColorError + case levelSuccess: + return levelColorSuccess default: - enc.AppendString(LevelColorInfo) + return levelColorInfo } } @@ -45,21 +41,21 @@ func formatPrefix(prefix string) string { padding = strings.Repeat(" ", prefixWidth-len(prefix)) } - return Cyan + "[" + prefix + "]" + Reset + padding + return cyan + "[" + prefix + "]" + reset + padding } -func colorMessage(level LogLevel, msg string) string { - switch level { - case Debug: - return MessageColorDebug + msg + Reset - case Warn: - return MessageColorWarn + msg + Reset - case Error: - return MessageColorError + msg + Reset - case Success: - return MessageColorSuccess + msg + Reset +func colorMessage(l logLevel, msg string) string { + switch l { + case levelDebug: + return messageColorDebug + msg + reset + case levelWarn: + return messageColorWarn + msg + reset + case levelError: + return messageColorError + msg + reset + case levelSuccess: + return messageColorSuccess + msg + reset default: - return MessageColorInfo + msg + Reset + return messageColorInfo + msg + reset } } @@ -67,15 +63,8 @@ func Init() { level = zap.NewAtomicLevelAt(zapcore.InfoLevel) encoderCfg := zapcore.EncoderConfig{ - LevelKey: "level", - MessageKey: "msg", - LineEnding: "\n", - EncodeLevel: levelEncoder, - } - - if showTimestamp { - encoderCfg.TimeKey = "ts" - encoderCfg.EncodeTime = timeEncoder + MessageKey: "msg", + LineEnding: "\n", } encoder := zapcore.NewConsoleEncoder(encoderCfg) @@ -92,11 +81,7 @@ func Init() { })), ) - loggerInstance = zap.New(core, zap.AddCaller()) -} - -func SetTimestamp(enabled bool) { - showTimestamp = enabled + loggerInstance = zap.New(core) } func SetDebug(enabled bool) { @@ -108,38 +93,38 @@ func SetDebug(enabled bool) { } func Debugf(prefix, format string, args ...any) { - log(Debug, zapcore.DebugLevel, prefix, fmt.Sprintf(format, args...)) + log(levelDebug, zapcore.DebugLevel, prefix, fmt.Sprintf(format, args...)) } func Infof(prefix, format string, args ...any) { - log(Info, zapcore.InfoLevel, prefix, fmt.Sprintf(format, args...)) + log(levelInfo, zapcore.InfoLevel, prefix, fmt.Sprintf(format, args...)) } func Successf(prefix, format string, args ...any) { - log(Success, zapcore.InfoLevel, prefix, fmt.Sprintf(format, args...)) + log(levelSuccess, zapcore.InfoLevel, prefix, fmt.Sprintf(format, args...)) } func Warnf(prefix, format string, args ...any) { - log(Warn, zapcore.WarnLevel, prefix, fmt.Sprintf(format, args...)) + log(levelWarn, zapcore.WarnLevel, prefix, fmt.Sprintf(format, args...)) } func Errorf(prefix, format string, args ...any) { - log(Error, zapcore.ErrorLevel, prefix, fmt.Sprintf(format, args...)) + log(levelError, zapcore.ErrorLevel, prefix, fmt.Sprintf(format, args...)) } func Fatalf(prefix, format string, args ...any) { - log(Error, zapcore.ErrorLevel, prefix, fmt.Sprintf(format, args...)) + log(levelError, zapcore.ErrorLevel, prefix, fmt.Sprintf(format, args...)) os.Exit(1) } -func log(levelLabel LogLevel, zapLevel zapcore.Level, prefix string, msg any) { +func log(label logLevel, zapLevel zapcore.Level, prefix string, msg any) { if loggerInstance == nil { panic("logger.Init() was not called") } message := fmt.Sprint(msg) - colored := colorMessage(levelLabel, message) - fullMessage := formatPrefix(prefix) + colored + colored := colorMessage(label, message) + fullMessage := levelBadge(label) + " " + formatPrefix(prefix) + colored loggerInstance.Log(zapLevel, fullMessage) -} +}
\ No newline at end of file diff --git a/shrine/utils/logger/types.go b/shrine/utils/logger/types.go index 9a92b01..cdbacda 100644 --- a/shrine/utils/logger/types.go +++ b/shrine/utils/logger/types.go @@ -1,29 +1,28 @@ package logger -type LogLevel string +type logLevel string const ( - Debug LogLevel = "debug" - Info LogLevel = "info" - Warn LogLevel = "warn" - Error LogLevel = "error" - Success LogLevel = "success" + levelDebug logLevel = "debug" + levelInfo logLevel = "info" + levelWarn logLevel = "warn" + levelError logLevel = "error" + levelSuccess logLevel = "success" ) const ( - Reset = "\033[0m" - Cyan = "\033[36m" - Gray = "\033[90m" + reset = "\033[0m" + cyan = "\033[36m" - LevelColorInfo = "\033[34mINFO \033[0m" - LevelColorWarn = "\033[33mWARN \033[0m" - LevelColorError = "\033[31mERROR \033[0m" - LevelColorDebug = "\033[35mDEBUG \033[0m" - LevelColorSuccess = "\033[32mSUCCESS\033[0m" + levelColorInfo = "\033[34mINFO \033[0m" + levelColorWarn = "\033[33mWARN \033[0m" + levelColorError = "\033[31mERROR \033[0m" + levelColorDebug = "\033[35mDEBUG \033[0m" + levelColorSuccess = "\033[32mSUCCESS\033[0m" - MessageColorInfo = "\033[97m" - MessageColorWarn = "\033[33m" - MessageColorError = "\033[31m" - MessageColorDebug = "\033[90m" - MessageColorSuccess = "\033[32m" -) + messageColorInfo = "\033[97m" + messageColorWarn = "\033[33m" + messageColorError = "\033[31m" + messageColorDebug = "\033[90m" + messageColorSuccess = "\033[32m" +)
\ No newline at end of file diff --git a/shrine/utils/meta/body.go b/shrine/utils/meta/body.go new file mode 100644 index 0000000..bfe9118 --- /dev/null +++ b/shrine/utils/meta/body.go @@ -0,0 +1,11 @@ +package meta + +import "github.com/gofiber/fiber/v2" + +func Body[T any](context *fiber.Ctx) (T, error) { + var body T + if err := context.BodyParser(&body); err != nil { + return body, err + } + return body, nil +}
\ No newline at end of file diff --git a/shrine/utils/meta/builder.go b/shrine/utils/meta/builder.go index 11d9d24..96bf61a 100644 --- a/shrine/utils/meta/builder.go +++ b/shrine/utils/meta/builder.go @@ -6,15 +6,15 @@ import ( "github.com/gofiber/fiber/v2" ) -func BuildRequest(c *fiber.Ctx) types.Request { +func BuildRequest(context *fiber.Ctx) types.Request { return types.Request{ - Path: c.Path(), - Method: c.Method(), - Query: buildQueryParams(c), - Params: buildRouteParams(c), - Headers: buildHeaders(c), - QueryString: string(c.Request().URI().QueryString()), - IP: c.IP(), - URL: c.OriginalURL(), + Path: context.Path(), + Method: context.Method(), + Query: buildQueryParams(context), + Params: buildRouteParams(context), + Headers: buildHeaders(context), + QueryString: string(context.Request().URI().QueryString()), + IP: context.IP(), + URL: context.OriginalURL(), } } diff --git a/shrine/utils/meta/functions.go b/shrine/utils/meta/functions.go index 5bcc550..e36e296 100644 --- a/shrine/utils/meta/functions.go +++ b/shrine/utils/meta/functions.go @@ -6,9 +6,9 @@ import ( "github.com/gofiber/fiber/v2" ) -func buildQueryParams(c *fiber.Ctx) []types.HTTPParam { +func buildQueryParams(context *fiber.Ctx) []types.HTTPParam { params := make([]types.HTTPParam, 0) - c.Request().URI().QueryArgs().VisitAll(func(k, v []byte) { + context.Request().URI().QueryArgs().VisitAll(func(k, v []byte) { params = append(params, types.HTTPParam{ Key: string(k), Value: string(v), @@ -17,9 +17,9 @@ func buildQueryParams(c *fiber.Ctx) []types.HTTPParam { return params } -func buildRouteParams(c *fiber.Ctx) []types.HTTPParam { +func buildRouteParams(context *fiber.Ctx) []types.HTTPParam { params := make([]types.HTTPParam, 0) - for k, v := range c.AllParams() { + for k, v := range context.AllParams() { params = append(params, types.HTTPParam{ Key: k, Value: v, @@ -28,9 +28,9 @@ func buildRouteParams(c *fiber.Ctx) []types.HTTPParam { return params } -func buildHeaders(c *fiber.Ctx) []types.HTTPParam { +func buildHeaders(context *fiber.Ctx) []types.HTTPParam { params := make([]types.HTTPParam, 0) - c.Request().Header.VisitAll(func(k, v []byte) { + context.Request().Header.VisitAll(func(k, v []byte) { params = append(params, types.HTTPParam{ Key: string(k), Value: string(v), diff --git a/shrine/utils/meta/request.go b/shrine/utils/meta/request.go index 7e499e7..b7fd909 100644 --- a/shrine/utils/meta/request.go +++ b/shrine/utils/meta/request.go @@ -7,20 +7,20 @@ import ( "github.com/gofiber/fiber/v2" ) -const RequestKey = "__request_ctx" +const RequestKey = "__request_context" -func Request(c *fiber.Ctx) facade { - req, ok := c.Locals(RequestKey).(types.Request) +func Request(context *fiber.Ctx) facade { + request, ok := context.Locals(RequestKey).(types.Request) if !ok { logger.Errorf("META", "RequestContext missing in fiber locals") return facade{} } - return facade{req: req, ctx: c} + return facade{request: request, context: context} } func (f facade) Param(key string) (string, bool) { - if f.ctx != nil { - val := f.ctx.Params(key) + if f.context != nil { + val := f.context.Params(key) if val != "" { return val, true } @@ -29,7 +29,7 @@ func (f facade) Param(key string) (string, bool) { } func (f facade) Query(key string) (string, bool) { - for _, q := range f.req.Query { + for _, q := range f.request.Query { if q.Key == key { return q.Value, true } @@ -38,7 +38,7 @@ func (f facade) Query(key string) (string, bool) { } func (f facade) Header(key string) (string, bool) { - for _, h := range f.req.Headers { + for _, h := range f.request.Headers { if h.Key == key { return h.Value, true } @@ -48,8 +48,8 @@ func (f facade) Header(key string) (string, bool) { func (r required) Param(key string) string { // Access params directly from fiber context (available after route matching) - if r.ctx != nil { - val := r.ctx.Params(key) + if r.context != nil { + val := r.context.Params(key) if val != "" { return val } @@ -59,7 +59,7 @@ func (r required) Param(key string) string { } func (r required) Query(key string) string { - for _, q := range r.req.Query { + for _, q := range r.request.Query { if q.Key == key { return q.Value } @@ -69,7 +69,7 @@ func (r required) Query(key string) string { } func (r required) Header(key string) string { - for _, h := range r.req.Headers { + for _, h := range r.request.Headers { if h.Key == key { return h.Value } @@ -79,29 +79,29 @@ func (r required) Header(key string) string { } func (d withDefault) Param(key string) string { - if d.ctx != nil { - val := d.ctx.Params(key) + if d.context != nil { + val := d.context.Params(key) if val != "" { return val } } - return d.def + return d.defaults } func (d withDefault) Query(key string) string { - for _, q := range d.req.Query { + for _, q := range d.request.Query { if q.Key == key { return q.Value } } - return d.def + return d.defaults } func (d withDefault) Header(key string) string { - for _, h := range d.req.Headers { + for _, h := range d.request.Headers { if h.Key == key { return h.Value } } - return d.def + return d.defaults } diff --git a/shrine/utils/meta/types.go b/shrine/utils/meta/types.go index 4d8be9b..2f2f504 100644 --- a/shrine/utils/meta/types.go +++ b/shrine/utils/meta/types.go @@ -7,17 +7,17 @@ import ( ) type facade struct { - req types.Request - ctx *fiber.Ctx + request types.Request + context *fiber.Ctx } type required struct { - req types.Request - ctx *fiber.Ctx + request types.Request + context *fiber.Ctx } type withDefault struct { - req types.Request - ctx *fiber.Ctx - def string + request types.Request + context *fiber.Ctx + defaults string } diff --git a/shrine/utils/meta/value.go b/shrine/utils/meta/value.go index 59345d3..5402b75 100644 --- a/shrine/utils/meta/value.go +++ b/shrine/utils/meta/value.go @@ -1,9 +1,9 @@ package meta func (f facade) MustHave() required { - return required{req: f.req, ctx: f.ctx} + return required{request: f.request, context: f.context} } -func (f facade) Default(def string) withDefault { - return withDefault{req: f.req, ctx: f.ctx, def: def} +func (f facade) Default(defaults string) withDefault { + return withDefault{request: f.request, context: f.context, defaults: defaults} } |
