1
0
mirror of https://github.com/kataras/iris.git synced 2025-12-24 05:17:03 +00:00

update Blocks module

This commit is contained in:
Gerasimos (Makis) Maropoulos
2023-09-24 17:35:49 +03:00
parent e0ac28c1bb
commit e7b40398aa
16 changed files with 198 additions and 105 deletions

View File

@@ -2,13 +2,11 @@ package router
import (
"errors"
"fmt"
"net/http"
"sort"
"strings"
"sync"
"sync/atomic"
"time"
"github.com/kataras/iris/v12/context"
"github.com/kataras/iris/v12/core/errgroup"
@@ -16,7 +14,6 @@ import (
macroHandler "github.com/kataras/iris/v12/macro/handler"
"github.com/kataras/golog"
"github.com/kataras/pio"
)
type (
@@ -371,87 +368,7 @@ func (h *routerHandler) Build(provider RoutesProvider) error {
}
}
// TODO: move this and make it easier to read when all cases are, visually, tested.
if logger := h.logger; logger != nil && logger.Level == golog.DebugLevel && noLogCount < len(registeredRoutes) {
// group routes by method and print them without the [DBUG] and time info,
// the route logs are colorful.
// Note: don't use map, we need to keep registered order, use
// different slices for each method.
collect := func(method string) (methodRoutes []*Route) {
for _, r := range registeredRoutes {
if r.NoLog {
continue
}
if r.Method == method {
methodRoutes = append(methodRoutes, r)
}
}
return
}
type MethodRoutes struct {
method string
routes []*Route
}
allMethods := append(AllMethods, []string{MethodNone, ""}...)
methodRoutes := make([]MethodRoutes, 0, len(allMethods))
for _, method := range allMethods {
routes := collect(method)
if len(routes) > 0 {
methodRoutes = append(methodRoutes, MethodRoutes{method, routes})
}
}
if n := len(methodRoutes); n > 0 {
tr := "routes"
if len(registeredRoutes) == 1 {
tr = tr[0 : len(tr)-1]
}
bckpNewLine := logger.NewLine
logger.NewLine = false
debugLevel := golog.Levels[golog.DebugLevel]
// Replace that in order to not transfer it to the log handler (e.g. json)
// logger.Debugf("API: %d registered %s (", len(registeredRoutes), tr)
// with:
pio.WriteRich(logger.Printer, debugLevel.Title, debugLevel.ColorCode, debugLevel.Style...)
fmt.Fprintf(logger.Printer, " %s %sAPI: %d registered %s (", time.Now().Format(logger.TimeFormat), logger.Prefix, len(registeredRoutes)-noLogCount, tr)
//
logger.NewLine = bckpNewLine
for i, m := range methodRoutes {
// @method: @count
if i > 0 {
if i == n-1 {
fmt.Fprint(logger.Printer, " and ")
} else {
fmt.Fprint(logger.Printer, ", ")
}
}
if m.method == "" {
m.method = "ERROR"
}
fmt.Fprintf(logger.Printer, "%d ", len(m.routes))
pio.WriteRich(logger.Printer, m.method, TraceTitleColorCode(m.method))
}
fmt.Fprint(logger.Printer, ")\n")
}
for i, m := range methodRoutes {
for _, r := range m.routes {
r.Trace(logger.Printer, -1)
}
if i != len(allMethods)-1 {
logger.Printer.Write(pio.NewLine)
}
}
}
printRoutesInfo(h.logger, registeredRoutes, noLogCount)
return errgroup.Check(rp)
}