38 lines
760 B
Go
38 lines
760 B
Go
package rest
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"git.intra.yksa.space/gsn/gsn-proxy/internal/transport/middleware"
|
|
handler "git.intra.yksa.space/gsn/gsn-proxy/internal/transport/rest/handler"
|
|
api "git.intra.yksa.space/gsn/gsn-proxy/pkg/rest"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
type Transport struct {
|
|
lg *zap.Logger
|
|
cfg *Config
|
|
srv *api.Server
|
|
}
|
|
|
|
func New(lg *zap.Logger, handler *handler.Handler, cfg *Config) (*Transport, error) {
|
|
srv, err := api.NewServer(handler, api.WithMiddleware(middleware.Logging(lg)))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &Transport{
|
|
lg: lg,
|
|
srv: srv,
|
|
cfg: cfg,
|
|
}, nil
|
|
}
|
|
|
|
func (t *Transport) Run() {
|
|
t.lg.Info("started")
|
|
|
|
if err := http.ListenAndServe(fmt.Sprintf(":%d", t.cfg.Port), t.srv); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|