remove ginext/mongoext (no-dep lib)
This commit is contained in:
parent
568d7bd5e3
commit
47f123b86f
@ -1,3 +0,0 @@
|
|||||||
module blackforestbytes.com/goext/error
|
|
||||||
|
|
||||||
go 1.19
|
|
@ -1,69 +0,0 @@
|
|||||||
package ginext
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bringman.de/common/shared/bmerror"
|
|
||||||
"github.com/gin-gonic/gin"
|
|
||||||
"github.com/go-playground/validator/v10"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
func ShouldBind(g *gin.Context, uri interface{}, query interface{}, body interface{}) error {
|
|
||||||
if uri != nil {
|
|
||||||
if err := g.ShouldBindUri(uri); err != nil {
|
|
||||||
if vErrs, ok := err.(validator.ValidationErrors); ok {
|
|
||||||
return bmerror.Wrap(vErrs, "Could not validate request parameter (uri)").
|
|
||||||
Errs("inner", convertValidationErrors(vErrs)).
|
|
||||||
WithType(bmerror.ErrQueryValidation).
|
|
||||||
WithStatuscode(http.StatusBadRequest).
|
|
||||||
Build()
|
|
||||||
} else {
|
|
||||||
return bmerror.Wrap(err, "Could not parse request parameter (uri)").
|
|
||||||
WithType(bmerror.ErrQueryParse).
|
|
||||||
WithStatuscode(http.StatusBadRequest).
|
|
||||||
Build()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if query != nil {
|
|
||||||
if err := g.ShouldBindQuery(query); err != nil {
|
|
||||||
if vErrs, ok := err.(validator.ValidationErrors); ok {
|
|
||||||
return bmerror.Wrap(vErrs, "Could not validate request parameter (query)").
|
|
||||||
Errs("inner", convertValidationErrors(vErrs)).
|
|
||||||
WithType(bmerror.ErrQueryValidation).
|
|
||||||
WithStatuscode(http.StatusBadRequest).
|
|
||||||
Build()
|
|
||||||
} else {
|
|
||||||
return bmerror.Wrap(err, "Could not parse request parameter (query)").
|
|
||||||
WithType(bmerror.ErrQueryParse).
|
|
||||||
WithStatuscode(http.StatusBadRequest).
|
|
||||||
Build()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if body != nil {
|
|
||||||
if err := g.ShouldBindJSON(body); err != nil {
|
|
||||||
if vErrs, ok := err.(validator.ValidationErrors); ok {
|
|
||||||
return bmerror.Wrap(vErrs, "Could not validate request parameter (body:json)").
|
|
||||||
Errs("inner", convertValidationErrors(vErrs)).
|
|
||||||
WithType(bmerror.ErrQueryValidation).
|
|
||||||
WithStatuscode(http.StatusBadRequest).
|
|
||||||
Build()
|
|
||||||
} else {
|
|
||||||
return bmerror.Wrap(err, "Could not parse request parameter (body:json)").
|
|
||||||
WithType(bmerror.ErrQueryParse).
|
|
||||||
WithStatuscode(http.StatusBadRequest).
|
|
||||||
Build()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func convertValidationErrors(e validator.ValidationErrors) []error {
|
|
||||||
r := make([]error, 0, len(e))
|
|
||||||
for _, v := range e {
|
|
||||||
r = append(r, v)
|
|
||||||
}
|
|
||||||
return r
|
|
||||||
}
|
|
@ -1,42 +0,0 @@
|
|||||||
package ginext
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bringman.de/common/shared/bmerror"
|
|
||||||
"context"
|
|
||||||
"github.com/gin-gonic/gin"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
func NewEngine() *gin.Engine {
|
|
||||||
engine := gin.New()
|
|
||||||
|
|
||||||
engine.RedirectFixedPath = false
|
|
||||||
engine.RedirectTrailingSlash = false
|
|
||||||
|
|
||||||
engine.Use(gin.CustomRecovery(func(c *gin.Context, err interface{}) {
|
|
||||||
ctx := context.Background()
|
|
||||||
|
|
||||||
bmerror.
|
|
||||||
New(bmerror.ErrGinPanic, "gin request caused panic").
|
|
||||||
Interface("panic-object", err).
|
|
||||||
Stack().
|
|
||||||
GinReq(ctx, c, c.Request).
|
|
||||||
WithStatuscode(http.StatusInternalServerError).
|
|
||||||
Output(ctx, c)
|
|
||||||
}))
|
|
||||||
|
|
||||||
return engine
|
|
||||||
}
|
|
||||||
|
|
||||||
func NoRouteHandler() func(c *gin.Context) {
|
|
||||||
return func(g *gin.Context) {
|
|
||||||
bmerror.New(bmerror.ErrRouteNotFound, "Route not found").
|
|
||||||
Str("FullPath", g.FullPath()).
|
|
||||||
Str("Method", g.Request.Method).
|
|
||||||
Str("URL", g.Request.URL.String()).
|
|
||||||
Str("RequestURI", g.Request.RequestURI).
|
|
||||||
Str("Proto", g.Request.Proto).
|
|
||||||
Any("Header", g.Request.Header).
|
|
||||||
Output(context.Background(), g)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
module blackforestbytes.com/goext/gin
|
|
||||||
|
|
||||||
go 1.19
|
|
@ -1,6 +0,0 @@
|
|||||||
module blackforestbytes.com/goext/mongo
|
|
||||||
|
|
||||||
require (
|
|
||||||
go.mongodb.org/mongo-driver v1.5.3
|
|
||||||
)
|
|
||||||
go 1.19
|
|
@ -2,6 +2,7 @@ package timeext
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -125,3 +126,8 @@ func Max(a time.Time, b time.Time) time.Time {
|
|||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func UnixFloatSeconds(v float64) time.Time {
|
||||||
|
sec, dec := math.Modf(v)
|
||||||
|
return time.Unix(int64(sec), int64(dec*(1e9)))
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user