package main import ( "basic-sensor-receiver/app" "basic-sensor-receiver/middleware" "basic-sensor-receiver/routes" "fmt" "log" "github.com/gin-gonic/gin" "github.com/joho/godotenv" _ "github.com/mattn/go-sqlite3" ) func main() { err := godotenv.Load() if err != nil { log.Println("Error loading .env file") } server := app.InitializeServer() gin.SetMode(server.Config.Mode) router := gin.Default() router.StaticFile("/", "client/index.html") router.Static("/js", "client/js") router.Static("/css", "client/css") router.POST("/api/login", routes.Login(server)) loginProtected := router.Group("/", middleware.LoginAuthMiddleware(server)) loginProtected.GET("/api/sensors", routes.GetSensors(server)) loginProtected.GET("/api/sensors/:sensor/values", routes.HandleGetSensorValues(server)) loginProtected.GET("/api/sensors/:sensor/config", routes.GetSensorConfig(server)) loginProtected.PUT("/api/sensors/:sensor/config/:key", routes.HandlePutSensorConfig(server)) loginProtected.POST("/api/logout", routes.Logout(server)) keyProtected := router.Group("/", middleware.KeyAuthMiddleware(server)) keyProtected.POST("/api/sensors/:sensor/values", routes.HandlePostSensorValues(server)) router.Run(fmt.Sprintf("%s:%d", server.Config.Ip, server.Config.Port)) }