mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 13:31:56 +00:00
Feat(BE-36,37,38,39): master area, customer, kandang, location, warehouse
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
package trim
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"strings"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
)
|
||||
|
||||
// JSONBody trims whitespace from string fields in JSON request bodies.
|
||||
func JSONBody() fiber.Handler {
|
||||
return func(c *fiber.Ctx) error {
|
||||
contentType := c.Get(fiber.HeaderContentType)
|
||||
if !strings.Contains(contentType, fiber.MIMEApplicationJSON) {
|
||||
return c.Next()
|
||||
}
|
||||
|
||||
body := c.Body()
|
||||
if len(body) == 0 {
|
||||
return c.Next()
|
||||
}
|
||||
|
||||
var payload any
|
||||
if err := json.Unmarshal(body, &payload); err != nil {
|
||||
return c.Next()
|
||||
}
|
||||
|
||||
trimStrings(payload)
|
||||
|
||||
buf := bytes.Buffer{}
|
||||
encoder := json.NewEncoder(&buf)
|
||||
encoder.SetEscapeHTML(false)
|
||||
if err := encoder.Encode(payload); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
trimmedBody := bytes.TrimSpace(buf.Bytes())
|
||||
c.Request().SetBody(trimmedBody)
|
||||
|
||||
return c.Next()
|
||||
}
|
||||
}
|
||||
|
||||
func trimStrings(value any) {
|
||||
switch v := value.(type) {
|
||||
case map[string]any:
|
||||
for key, val := range v {
|
||||
if str, ok := val.(string); ok {
|
||||
v[key] = strings.TrimSpace(str)
|
||||
continue
|
||||
}
|
||||
trimStrings(val)
|
||||
}
|
||||
case []any:
|
||||
for i, elem := range v {
|
||||
if str, ok := elem.(string); ok {
|
||||
v[i] = strings.TrimSpace(str)
|
||||
continue
|
||||
}
|
||||
trimStrings(elem)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user