RestApiv2/internal/restserver/restserver.go

72 lines
1.3 KiB
Go

package restserver
import (
"io"
"net/http"
"git.ukamnya.ru/stulyaganov/RestApi/internal/bd"
"github.com/gorilla/mux"
"github.com/sirupsen/logrus"
)
type RestServer struct {
config *Config
logger *logrus.Logger
router *mux.Router
db *bd.Bd
}
func New(config *Config) *RestServer {
return &RestServer{
config: config,
logger: logrus.New(),
router: mux.NewRouter(),
}
}
func (r *RestServer) Start() error {
if err := r.configureLogger(); err != nil {
return err
}
if err := r.configurebd(); err != nil {
return err
}
r.configureRouter()
r.logger.Info("Starting Server")
r.logger.Info("Listen server on ", r.config.BindPort, " Port")
return http.ListenAndServe(r.config.BindPort, r.router)
}
func (r *RestServer) configureLogger() error {
level, err := logrus.ParseLevel(r.config.LogLevel)
if err != nil {
return err
}
r.logger.SetLevel(level)
return nil
}
func (r *RestServer) configureRouter() {
r.router.HandleFunc("/api/films", r.HandleHello())
}
func (r *RestServer) configurebd() error {
dataBase := bd.New(r.config.DB)
if err := dataBase.Open(); err != nil {
return err
}
r.db = dataBase
return nil
}
func (r *RestServer) HandleHello() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "TEsts Hello")
}
}