Compare commits

..

No commits in common. "main" and "v1.11.0" have entirely different histories.

7 changed files with 6 additions and 72 deletions

View file

@ -1,4 +1,4 @@
package webutils package http
import ( import (
"net/http" "net/http"

View file

@ -1,4 +1,4 @@
package webutils package http
import ( import (
"context" "context"

View file

@ -1,4 +1,4 @@
package webutils package http
import ( import (
"encoding/json" "encoding/json"
@ -32,8 +32,8 @@ func ProblemDetails(
details *string, details *string,
extras map[string]any, extras map[string]any,
) { ) {
w.Header().Add("Content-Type", "application/problem+json")
w.WriteHeader(statusCode) w.WriteHeader(statusCode)
w.Header().Add("Content-Type", "application/problem+json")
data := map[string]any{ data := map[string]any{
"type": errorType, "type": errorType,
"status": statusCode, "status": statusCode,
@ -58,8 +58,8 @@ func ProblemDetails(
// Write a simple problem details response. // Write a simple problem details response.
// It only provides the status code, as defined in RFC 9457, section 4.2.1 // It only provides the status code, as defined in RFC 9457, section 4.2.1
func ProblemDetailsStatusOnly(w http.ResponseWriter, statusCode int) { func ProblemDetailsStatusOnly(w http.ResponseWriter, statusCode int) {
w.Header().Add("Content-Type", "application/problem+json")
w.WriteHeader(statusCode) w.WriteHeader(statusCode)
w.Header().Add("Content-Type", "application/problem+json")
data := map[string]any{ data := map[string]any{
"type": "about:blank", "type": "about:blank",
"title": http.StatusText(statusCode), "title": http.StatusText(statusCode),

View file

@ -1,17 +0,0 @@
package webutils
import (
"encoding/json"
"fmt"
"net/http"
)
func SendJson(w http.ResponseWriter, data any) error {
encoded, err := json.Marshal(data)
if err != nil {
return err
}
w.Header().Add("Content-Type", "application/json")
fmt.Fprint(w, string(encoded))
return nil
}

View file

@ -1,4 +1,4 @@
package webutils package http
import ( import (
"net/http" "net/http"
@ -9,33 +9,6 @@ import (
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
) )
func BuildLoggingMiddleware(extras map[string]string) HandlerBuilder {
return func(h http.Handler) http.Handler {
return ChainMiddlewares(h,
hlog.NewHandler(log.Logger),
hlog.AccessHandler(func(r *http.Request, status, size int, duration time.Duration) {
if strings.HasPrefix(r.URL.Path, "/assets") {
return
}
logger := hlog.FromRequest(r).Info().
Str("method", r.Method).
Stringer("url", r.URL).
Int("status", status).
Int("size", size).
Dur("duration", duration)
for k, v := range extras {
logger = logger.Str(k, v)
}
logger.Send()
}),
hlog.RemoteAddrHandler("ip"),
hlog.UserAgentHandler("user_agent"),
hlog.RefererHandler("referer"),
hlog.RequestIDHandler("req_id", "Request-Id"),
)
}
}
func LoggingMiddleware(handler http.Handler) http.Handler { func LoggingMiddleware(handler http.Handler) http.Handler {
return ChainMiddlewares(handler, return ChainMiddlewares(handler,
hlog.NewHandler(log.Logger), hlog.NewHandler(log.Logger),

View file

@ -1,13 +0,0 @@
package mathutils
type SignedNumber interface {
~int | ~int8 | ~int16 | ~int32 | ~int64 | ~float32 | ~float64
}
func Abs[T SignedNumber](num T) T {
if num > 0 {
return num
} else {
return num * -1
}
}

View file

@ -81,15 +81,6 @@ func Contains[T comparable](a []T, b T) bool {
return false return false
} }
func ContainsFunc[T any](a []T, f func(t T) bool) bool {
for _, v := range a {
if f(v) {
return true
}
}
return false
}
func Compact[T any](a []T, compactor func(acc T, next T) T) T { func Compact[T any](a []T, compactor func(acc T, next T) T) T {
var acc T var acc T
for _, v := range a { for _, v := range a {