From 2a038f8746473bf3ba98696c587d42572c62d73f Mon Sep 17 00:00:00 2001 From: Kory Prince Date: Mon, 13 Nov 2023 18:10:05 -0600 Subject: [PATCH] Add configurable CORS policy to Server --- pkg/op/server_http.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pkg/op/server_http.go b/pkg/op/server_http.go index 6d379c6..6fd2a29 100644 --- a/pkg/op/server_http.go +++ b/pkg/op/server_http.go @@ -29,16 +29,16 @@ func RegisterServer(server Server, endpoints Endpoints, options ...ServerOption) server: server, endpoints: endpoints, decoder: decoder, + corsOpts: defaultCORSOptions, logger: slog.Default(), } - ws.router.Use(cors.New(defaultCORSOptions).Handler) for _, option := range options { option(ws) } ws.createRouter() - return ws + return cors.New(ws.corsOpts).Handler(ws) } 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 // is used when no logger was found in the context. // Defaults to [slog.Default]. @@ -80,6 +87,7 @@ type webServer struct { router *chi.Mux endpoints Endpoints decoder httphelper.Decoder + corsOpts cors.Options logger *slog.Logger }