stillbox/pkg/gordio/server/server.go
2024-07-14 13:47:48 -04:00

44 lines
840 B
Go

package server
import (
"log"
"net/http"
"dynatron.me/x/stillbox/pkg/gordio/config"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
"github.com/go-chi/jwtauth/v5"
)
type Server struct {
conf *config.Config
r *chi.Mux
jwt *jwtauth.JWTAuth
}
func New(cfg *config.Config) (*Server, error) {
r := chi.NewRouter()
srv := &Server{
conf: cfg,
r: r,
jwt: jwtauth.New("HS256", []byte(cfg.JWTSecret), nil),
}
_, tokenString, err := srv.jwt.Encode(map[string]interface{}{"user_id": 123})
if err != nil {
panic(err)
}
log.Printf("DEBUG token is %s", tokenString)
r.Use(middleware.RequestID)
r.Use(middleware.RealIP)
r.Use(middleware.Logger)
r.Use(middleware.Recoverer)
srv.setupRoutes()
return srv, nil
}
func (s *Server) Go() error {
http.ListenAndServe(s.conf.Listen, s.r)
return nil
}