44 lines
840 B
Go
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
|
|
}
|
|
|