Add configurable CORS policy to Server

This commit is contained in:
Kory Prince 2023-11-13 18:10:05 -06:00
parent 8a11cca6bb
commit 2a038f8746

View file

@ -29,16 +29,16 @@ func RegisterServer(server Server, endpoints Endpoints, options ...ServerOption)
server: server, server: server,
endpoints: endpoints, endpoints: endpoints,
decoder: decoder, decoder: decoder,
corsOpts: defaultCORSOptions,
logger: slog.Default(), logger: slog.Default(),
} }
ws.router.Use(cors.New(defaultCORSOptions).Handler)
for _, option := range options { for _, option := range options {
option(ws) option(ws)
} }
ws.createRouter() ws.createRouter()
return ws return cors.New(ws.corsOpts).Handler(ws)
} }
type ServerOption func(s *webServer) type ServerOption func(s *webServer)
@ -66,6 +66,13 @@ func WithDecoder(decoder httphelper.Decoder) ServerOption {
} }
} }
// WithServerCORSOptions sets the CORS policy for the Server's router.
func WithServerCORSOptions(opts cors.Options) ServerOption {
return func(s *webServer) {
s.corsOpts = opts
}
}
// WithFallbackLogger overrides the fallback logger, which // WithFallbackLogger overrides the fallback logger, which
// is used when no logger was found in the context. // is used when no logger was found in the context.
// Defaults to [slog.Default]. // Defaults to [slog.Default].
@ -80,6 +87,7 @@ type webServer struct {
router *chi.Mux router *chi.Mux
endpoints Endpoints endpoints Endpoints
decoder httphelper.Decoder decoder httphelper.Decoder
corsOpts cors.Options
logger *slog.Logger logger *slog.Logger
} }