42 lines
933 B
Go
42 lines
933 B
Go
package application
|
|
|
|
import (
|
|
"github.com/tiburon-777/OTUS_Project/previewer/cache"
|
|
"github.com/tiburon-777/OTUS_Project/previewer/config"
|
|
"github.com/tiburon-777/OTUS_Project/previewer/logger"
|
|
oslog "log"
|
|
"net"
|
|
"net/http"
|
|
)
|
|
|
|
type App struct {
|
|
*http.Server
|
|
Log logger.Interface
|
|
Cache cache.Cache
|
|
}
|
|
|
|
func New(conf config.Config) *App {
|
|
loger, err := logger.New(conf.Log)
|
|
if err != nil {
|
|
oslog.Fatal("не удалось прикрутить логгер: ", err.Error())
|
|
}
|
|
c := cache.NewCache(conf.Cache.Capasity)
|
|
return &App{Server: &http.Server{Addr: net.JoinHostPort(conf.Server.Address, conf.Server.Port)}, Log: loger, Cache: c}
|
|
}
|
|
|
|
func (s *App) Start() error {
|
|
s.Log.Infof("Server starting")
|
|
s.Handler = loggingMiddleware(handler(s.Cache), s.Log)
|
|
_ = s.ListenAndServe()
|
|
s.Log.Infof("Server stoped")
|
|
return nil
|
|
}
|
|
|
|
func (s *App) Stop() error {
|
|
if err := s.Close(); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|