@@ -305,24 +305,37 @@ func (s *Container) Run(
305305 }),
306306 }
307307
308- mux := runtime .NewServeMux (muxOpts ... )
308+ // Create the gRPC gateway mux
309+ grpcMux := runtime .NewServeMux (muxOpts ... )
309310
310- if err = grpcV1 .RegisterPermissionHandler (ctx , mux , conn ); err != nil {
311+ if err = grpcV1 .RegisterPermissionHandler (ctx , grpcMux , conn ); err != nil {
311312 return err
312313 }
313- if err = grpcV1 .RegisterSchemaHandler (ctx , mux , conn ); err != nil {
314+ if err = grpcV1 .RegisterSchemaHandler (ctx , grpcMux , conn ); err != nil {
314315 return err
315316 }
316- if err = grpcV1 .RegisterDataHandler (ctx , mux , conn ); err != nil {
317+ if err = grpcV1 .RegisterDataHandler (ctx , grpcMux , conn ); err != nil {
317318 return err
318319 }
319- if err = grpcV1 .RegisterBundleHandler (ctx , mux , conn ); err != nil {
320+ if err = grpcV1 .RegisterBundleHandler (ctx , grpcMux , conn ); err != nil {
320321 return err
321322 }
322- if err = grpcV1 .RegisterTenancyHandler (ctx , mux , conn ); err != nil {
323+ if err = grpcV1 .RegisterTenancyHandler (ctx , grpcMux , conn ); err != nil {
323324 return err
324325 }
325326
327+ // Create a new http.ServeMux for serving your OpenAPI file and gRPC gateway
328+ httpMux := http .NewServeMux ()
329+
330+ if srv .HTTP .ExposeOpenAPI {
331+ httpMux .HandleFunc ("/openapi.json" , func (w http.ResponseWriter , r * http.Request ) {
332+ http .ServeFile (w , r , "./docs/api-reference/openapi.json" )
333+ })
334+ }
335+
336+ // Handle all gRPC gateway routes
337+ httpMux .Handle ("/" , grpcMux )
338+
326339 httpServer = & http.Server {
327340 Addr : ":" + srv .HTTP .Port ,
328341 Handler : cors .New (cors.Options {
@@ -333,7 +346,7 @@ func (s *Container) Run(
333346 http .MethodGet , http .MethodPost ,
334347 http .MethodHead , http .MethodPatch , http .MethodDelete , http .MethodPut ,
335348 },
336- }).Handler (mux ),
349+ }).Handler (httpMux ),
337350 ReadHeaderTimeout : 5 * time .Second ,
338351 }
339352
0 commit comments