package restserver import ( "net/http" "git.ukamnya.ru/stulyaganov/RestApiv2/internal/bd" "github.com/gorilla/mux" "github.com/sirupsen/logrus" ) const ( ContextKeyUser = iota defaultPermLvl = 1 writerPermLvl = 2 adminPermLvl = 3 ) 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.configureRouterFilms() r.configureRouterSiries() r.configureRouterUser() 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) configurebd() error { dataBase := bd.New(r.config.DB) if err := dataBase.Open(); err != nil { return err } r.db = dataBase return nil }