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