mcias/api/server.go

46 lines
950 B
Go

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)
}