66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
package servers
|
|
|
|
import (
|
|
"reflect"
|
|
"strings"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"gorm.io/gorm"
|
|
"lst.net/internal/models"
|
|
"lst.net/pkg/logger"
|
|
)
|
|
|
|
func getServers(c *gin.Context, log *logger.CustomLogger, db *gorm.DB) {
|
|
|
|
servers, err := GetServers(log, db)
|
|
log.Info("Current Settings", "system", map[string]interface{}{
|
|
"endpoint": "/api/v1/settings",
|
|
"client_ip": c.ClientIP(),
|
|
"user_agent": c.Request.UserAgent(),
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
log.Error("Current Settings", "system", map[string]interface{}{
|
|
"endpoint": "/api/v1/settings",
|
|
"client_ip": c.ClientIP(),
|
|
"user_agent": c.Request.UserAgent(),
|
|
"error": err,
|
|
})
|
|
c.JSON(500, gin.H{"message": "There was an error getting the settings", "error": err})
|
|
return
|
|
}
|
|
|
|
c.JSON(200, gin.H{"message": "Current settings", "data": servers})
|
|
}
|
|
|
|
func GetServers(log *logger.CustomLogger, db *gorm.DB) ([]map[string]interface{}, error) {
|
|
var servers []models.Servers
|
|
res := db.Find(&servers)
|
|
|
|
if res.Error != nil {
|
|
return nil, res.Error
|
|
}
|
|
|
|
toLowercase := func(s models.Servers) map[string]interface{} {
|
|
t := reflect.TypeOf(s)
|
|
v := reflect.ValueOf(s)
|
|
|
|
data := make(map[string]interface{})
|
|
|
|
for i := 0; i < t.NumField(); i++ {
|
|
field := strings.ToLower(t.Field(i).Name)
|
|
data[field] = v.Field(i).Interface()
|
|
}
|
|
|
|
return data
|
|
}
|
|
|
|
var lowercaseServers []map[string]interface{}
|
|
for _, server := range servers {
|
|
lowercaseServers = append(lowercaseServers, toLowercase(server))
|
|
}
|
|
|
|
return lowercaseServers, nil
|
|
}
|