46 lines
950 B
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)
|
|
}
|