package api import ( "database/sql" "log" "net/http" "git.wntrmute.dev/kyle/mcias/data" _ "github.com/mattn/go-sqlite3" ) type Server struct { DB *sql.DB Router *http.ServeMux Logger *log.Logger Auth *data.AuthorizationService } func NewServer(db *sql.DB, logger *log.Logger) *Server { s := &Server{ DB: db, Router: http.NewServeMux(), Logger: logger, Auth: data.NewAuthorizationService(db), } s.registerRoutes() return s } func (s *Server) registerRoutes() { s.Router.HandleFunc("POST /v1/login/password", s.handlePasswordLogin) s.Router.HandleFunc("POST /v1/login/token", s.handleTokenLogin) s.Router.HandleFunc("GET /v1/database/credentials", s.handleDatabaseCredentials) } func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { s.Router.ServeHTTP(w, r) } func (s *Server) Start(addr string) error { s.Logger.Printf("Starting server on %s", addr) return http.ListenAndServe(addr, s) }