Skip to content

Commit 44da58f

Browse files
authored
Update server.go
1 parent 35f2fad commit 44da58f

File tree

1 file changed

+48
-3
lines changed

1 file changed

+48
-3
lines changed

server/v2/api/swagger/server.go

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,23 @@ func New[T transaction.Tx](
3535
cfgOptions: cfgOptions,
3636
}
3737

38-
serverCfg := srv.Config().(*Config)
38+
serverCfg := DefaultConfig()
3939
if len(cfg) > 0 {
40-
if err := serverv2.UnmarshalSubConfig(cfg, srv.Name(), &serverCfg); err != nil {
40+
if err := serverv2.UnmarshalSubConfig(cfg, ServerName, serverCfg); err != nil {
4141
return nil, fmt.Errorf("failed to unmarshal config: %w", err)
4242
}
4343
}
44+
for _, opt := range cfgOptions {
45+
opt(serverCfg)
46+
}
4447
srv.config = serverCfg
4548

4649
if err := srv.config.Validate(); err != nil {
4750
return nil, err
4851
}
4952

5053
mux := http.NewServeMux()
51-
mux.Handle("/swagger/", &swaggerHandler{
54+
mux.Handle("/swagger", &swaggerHandler{
5255
swaggerFS: srv.config.SwaggerUI,
5356
})
5457

@@ -58,4 +61,46 @@ func New[T transaction.Tx](
5861
}
5962

6063
return srv, nil
64+
}
65+
66+
// Name returns the server's name
67+
func (s *Server[T]) Name() string {
68+
return ServerName
69+
}
70+
71+
// Config returns the server configuration
72+
func (s *Server[T]) Config() any {
73+
if s.config == nil {
74+
cfg := DefaultConfig()
75+
for _, opt := range s.cfgOptions {
76+
opt(cfg)
77+
}
78+
return cfg
79+
}
80+
return s.config
81+
}
82+
83+
// Start starts the server
84+
func (s *Server[T]) Start(ctx context.Context) error {
85+
if !s.config.Enable {
86+
s.logger.Info(fmt.Sprintf("%s server is disabled via config", s.Name()))
87+
return nil
88+
}
89+
90+
s.logger.Info("starting swagger server...", "address", s.config.Address)
91+
if err := s.server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
92+
return fmt.Errorf("failed to start swagger server: %w", err)
93+
}
94+
95+
return nil
96+
}
97+
98+
// Stop stops the server
99+
func (s *Server[T]) Stop(ctx context.Context) error {
100+
if !s.config.Enable {
101+
return nil
102+
}
103+
104+
s.logger.Info("stopping swagger server...", "address", s.config.Address)
105+
return s.server.Shutdown(ctx)
61106
}

0 commit comments

Comments
 (0)