feat: some refactoring
This commit is contained in:
22
internal/apiserver/server/routes.go
Normal file
22
internal/apiserver/server/routes.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
_ "git.nwaifu.su/sergey/MyGoServer/internal/apiserver/docs"
|
||||
"git.nwaifu.su/sergey/MyGoServer/internal/apiserver/handlers"
|
||||
"git.nwaifu.su/sergey/MyGoServer/internal/apiserver/middleware"
|
||||
|
||||
httpSwagger "github.com/swaggo/http-swagger"
|
||||
)
|
||||
|
||||
// setupRoutes configures all routes
|
||||
func (s *Server) setupRoutes() {
|
||||
// Add request ID middleware to all routes
|
||||
s.router.Handle("/", middleware.RequestIDMiddleware(
|
||||
middleware.LoggingMiddleware(
|
||||
handlers.NewHomeHandler(),
|
||||
),
|
||||
))
|
||||
|
||||
// Swagger UI
|
||||
s.router.Handle("/swagger/", httpSwagger.WrapHandler)
|
||||
}
|
||||
70
internal/apiserver/server/server.go
Normal file
70
internal/apiserver/server/server.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net"
|
||||
"net/http"
|
||||
|
||||
"git.nwaifu.su/sergey/MyGoServer/cmd/apiserver/config"
|
||||
"git.nwaifu.su/sergey/MyGoServer/internal/apiserver/logger"
|
||||
)
|
||||
|
||||
type contextKey struct {
|
||||
key string
|
||||
}
|
||||
|
||||
var connContextKey = &contextKey{"http-conn"}
|
||||
|
||||
func saveConnInContext(ctx context.Context, c net.Conn) context.Context {
|
||||
return context.WithValue(ctx, connContextKey, c)
|
||||
}
|
||||
|
||||
// Server represents the HTTP server
|
||||
type Server struct {
|
||||
config *config.Config
|
||||
router *http.ServeMux
|
||||
server *http.Server
|
||||
}
|
||||
|
||||
// NewServer creates a new server instance
|
||||
func NewServer(cfg *config.Config) *Server {
|
||||
s := &Server{
|
||||
config: cfg,
|
||||
}
|
||||
|
||||
// Initialize logger
|
||||
logger.Initialize(cfg.Logging.Level, cfg.Logging.Format, cfg.Logging.Output)
|
||||
|
||||
// Create router
|
||||
s.router = http.NewServeMux()
|
||||
s.setupRoutes()
|
||||
|
||||
// Create HTTP server
|
||||
s.server = &http.Server{
|
||||
Addr: cfg.Server.Address,
|
||||
Handler: s.router,
|
||||
ConnContext: saveConnInContext,
|
||||
}
|
||||
|
||||
return s
|
||||
}
|
||||
|
||||
// Start starts the server
|
||||
func (s *Server) Start() error {
|
||||
return s.server.ListenAndServe()
|
||||
}
|
||||
|
||||
// GetRouter returns the HTTP router
|
||||
func (s *Server) GetRouter() *http.ServeMux {
|
||||
return s.router
|
||||
}
|
||||
|
||||
// GetServer returns the HTTP server instance
|
||||
func (s *Server) GetServer() *http.Server {
|
||||
return s.server
|
||||
}
|
||||
|
||||
// GetConfig returns the server configuration
|
||||
func (s *Server) GetConfig() *config.Config {
|
||||
return s.config
|
||||
}
|
||||
Reference in New Issue
Block a user