github.com/kubeshop/testkube@v1.17.23/internal/graphql/server.go (about) 1 package graphql 2 3 import ( 4 "net/http" 5 "time" 6 7 "github.com/99designs/gqlgen/graphql/handler" 8 "github.com/99designs/gqlgen/graphql/handler/extension" 9 "github.com/99designs/gqlgen/graphql/handler/transport" 10 "github.com/gorilla/websocket" 11 12 executorsclientv1 "github.com/kubeshop/testkube-operator/pkg/client/executors/v1" 13 "github.com/kubeshop/testkube/internal/graphql/gen" 14 "github.com/kubeshop/testkube/internal/graphql/resolvers" 15 "github.com/kubeshop/testkube/internal/graphql/services" 16 "github.com/kubeshop/testkube/pkg/event/bus" 17 "github.com/kubeshop/testkube/pkg/log" 18 ) 19 20 func GetServer(eventBus bus.Bus, executorsClient *executorsclientv1.ExecutorsClient) *handler.Server { 21 service := services.NewService(eventBus, log.DefaultLogger) 22 resolver := &resolvers.Resolver{ 23 ExecutorsService: services.NewExecutorsService(service, executorsClient), 24 } 25 srv := handler.New(gen.NewExecutableSchema(gen.Config{Resolvers: resolver})) 26 srv.AddTransport(transport.Websocket{ 27 KeepAlivePingInterval: 10 * time.Second, 28 Upgrader: websocket.Upgrader{ 29 CheckOrigin: func(r *http.Request) bool { 30 return true 31 }, 32 ReadBufferSize: 1024, 33 WriteBufferSize: 1024, 34 }, 35 }) 36 srv.AddTransport(transport.Options{}) 37 srv.AddTransport(transport.GET{}) 38 srv.AddTransport(transport.POST{}) 39 srv.AddTransport(transport.MultipartForm{}) 40 srv.Use(extension.Introspection{}) 41 42 return srv 43 44 }