Azpect3120 5cbe004318 FEAT: Sessions are complete!
Queries are also complete...
Needs some bug testing and such but the queries are running and
displaying!
2024-08-07 15:04:02 -07:00

69 lines
1.4 KiB
Go

package http
import (
"encoding/gob"
"fmt"
"net/http"
"github.com/gin-contrib/cors"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/sessions/cookie"
"github.com/gin-gonic/gin"
)
type Server struct {
port string
Router *gin.Engine
config cors.Config
}
// Create a new instance of the http.Server struct
func New(port string) *Server {
gin.SetMode(gin.DebugMode)
var server *Server = &Server{
port: port,
Router: gin.Default(),
config: cors.DefaultConfig(),
}
server.config.AllowOrigins = []string{"*"}
server.Router.Use(cors.New(server.config))
// Session configuration
gob.Register([]byte{})
gob.Register(map[string]string{})
store := cookie.NewStore([]byte("secret"))
store.Options(sessions.Options{
Path: "/",
Domain: "",
MaxAge: 86400 * 7, // 7 days
Secure: true,
HttpOnly: true,
SameSite: http.SameSiteLaxMode,
})
server.Router.Use(sessions.Sessions("mysession", store))
return server
}
// Setup the server with the necessary configurations
func (s *Server) Setup() *Server {
v1 := s.Router.Group("/v1")
web_g := v1.Group("/web")
api_g := v1.Group("/api")
web_g.Static("/static", "./web/static")
web_g.Static("/assets", "./assets")
s.Router.LoadHTMLGlob("./web/templates/*.html")
populate(web_g, api_g)
return s
}
// Run the server with the port defined on instantiation
func (s *Server) Start() {
s.Router.Run(fmt.Sprintf(":%s", s.port))
}