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  }