Documentation ¶
Index ¶
- Constants
- func ConfigJson(config Configuration) json.RawMessage
- type Batch
- type BatchFactory
- type Configuration
- type ConnectionHandler
- type DefaultSubscriptionClientFactory
- type Factory
- type FederationConfiguration
- type FetchConfiguration
- type GraphQLBody
- type GraphQLSubscriptionClient
- type GraphQLSubscriptionClientFactory
- type GraphQLSubscriptionOptions
- type OnWsConnectionInitCallback
- type Options
- type Planner
- func (p *Planner) ConfigureFetch() plan.FetchConfiguration
- func (p *Planner) ConfigureSubscription() plan.SubscriptionConfiguration
- func (p *Planner) DataSourcePlanningBehavior() plan.DataSourcePlanningBehavior
- func (p *Planner) DownstreamResponseFieldAlias(downstreamFieldRef int) (alias string, exists bool)
- func (p *Planner) EnterArgument(_ int)
- func (p *Planner) EnterDirective(ref int)
- func (p *Planner) EnterDocument(_, _ *ast.Document)
- func (p *Planner) EnterField(ref int)
- func (p *Planner) EnterInlineFragment(ref int)
- func (p *Planner) EnterOperationDefinition(ref int)
- func (p *Planner) EnterSelectionSet(ref int)
- func (p *Planner) EnterVariableDefinition(ref int)
- func (p *Planner) LeaveDocument(_, _ *ast.Document)
- func (p *Planner) LeaveField(ref int)
- func (p *Planner) LeaveInlineFragment(_ int)
- func (p *Planner) LeaveOperationDefinition(_ int)
- func (p *Planner) LeaveSelectionSet(_ int)
- func (p *Planner) LeaveVariableDefinition(_ int)
- func (p *Planner) Register(visitor *plan.Visitor, configuration plan.DataSourceConfiguration, ...) error
- type SingleTypeField
- type Source
- type Subscription
- type SubscriptionClient
- type SubscriptionConfiguration
- type SubscriptionSource
Constants ¶
const (
ProtocolGraphQLTWS = "graphql-transport-ws"
)
websocket sub-protocol: https://github.com/enisdenjo/graphql-ws/blob/master/PROTOCOL.md
const (
ProtocolGraphQLWS = "graphql-ws"
)
websocket sub-protocol: https://github.com/apollographql/subscriptions-transport-ws/blob/master/PROTOCOL.md
Variables ¶
This section is empty.
Functions ¶
func ConfigJson ¶
func ConfigJson(config Configuration) json.RawMessage
Types ¶
type Batch ¶
type Batch struct {
// contains filtered or unexported fields
}
func (*Batch) Demultiplex ¶
func (*Batch) Input ¶
func (b *Batch) Input() *fastbuffer.FastBuffer
type BatchFactory ¶
type BatchFactory struct{}
func NewBatchFactory ¶
func NewBatchFactory() *BatchFactory
func (*BatchFactory) CreateBatch ¶
func (b *BatchFactory) CreateBatch(inputs [][]byte) (resolve.DataSourceBatch, error)
type Configuration ¶
type Configuration struct { Fetch FetchConfiguration Subscription SubscriptionConfiguration Federation FederationConfiguration UpstreamSchema string CustomScalarTypeFields []SingleTypeField }
func (*Configuration) ApplyDefaults ¶
func (c *Configuration) ApplyDefaults()
type ConnectionHandler ¶
type ConnectionHandler interface { StartBlocking(sub Subscription) SubscribeCH() chan<- Subscription }
type DefaultSubscriptionClientFactory ¶
type DefaultSubscriptionClientFactory struct{}
func (*DefaultSubscriptionClientFactory) NewSubscriptionClient ¶
func (d *DefaultSubscriptionClientFactory) NewSubscriptionClient(httpClient, streamingClient *http.Client, engineCtx context.Context, options ...Options) GraphQLSubscriptionClient
type Factory ¶
type Factory struct { BatchFactory resolve.DataSourceBatchFactory HTTPClient *http.Client StreamingClient *http.Client OnWsConnectionInitCallback *OnWsConnectionInitCallback SubscriptionClient *SubscriptionClient }
type FederationConfiguration ¶
type FetchConfiguration ¶
type GraphQLBody ¶
type GraphQLBody struct { Query string `json:"query,omitempty"` OperationName string `json:"operationName,omitempty"` Variables json.RawMessage `json:"variables,omitempty"` Extensions json.RawMessage `json:"extensions,omitempty"` }
type GraphQLSubscriptionClient ¶
type GraphQLSubscriptionClient interface {
Subscribe(ctx context.Context, options GraphQLSubscriptionOptions, next chan<- []byte) error
}
type GraphQLSubscriptionClientFactory ¶
type GraphQLSubscriptionClientFactory interface {
NewSubscriptionClient(httpClient, streamingClient *http.Client, engineCtx context.Context, options ...Options) GraphQLSubscriptionClient
}
GraphQLSubscriptionClientFactory abstracts the way of creating a new GraphQLSubscriptionClient. This can be very handy for testing purposes.
type Options ¶
type Options func(options *opts)
func WithLogger ¶
func WithLogger(log abstractlogger.Logger) Options
func WithOnWsConnectionInitCallback ¶
func WithOnWsConnectionInitCallback(callback *OnWsConnectionInitCallback) Options
func WithReadTimeout ¶
func WithWSSubProtocol ¶
type Planner ¶
type Planner struct {
// contains filtered or unexported fields
}
func (*Planner) ConfigureFetch ¶
func (p *Planner) ConfigureFetch() plan.FetchConfiguration
func (*Planner) ConfigureSubscription ¶
func (p *Planner) ConfigureSubscription() plan.SubscriptionConfiguration
func (*Planner) DataSourcePlanningBehavior ¶
func (p *Planner) DataSourcePlanningBehavior() plan.DataSourcePlanningBehavior
func (*Planner) DownstreamResponseFieldAlias ¶
func (*Planner) EnterArgument ¶
func (*Planner) EnterDirective ¶
func (*Planner) EnterDocument ¶
func (*Planner) EnterField ¶
func (*Planner) EnterInlineFragment ¶
func (*Planner) EnterOperationDefinition ¶
func (*Planner) EnterSelectionSet ¶
func (*Planner) EnterVariableDefinition ¶
func (*Planner) LeaveDocument ¶
func (*Planner) LeaveField ¶
func (*Planner) LeaveInlineFragment ¶
func (*Planner) LeaveOperationDefinition ¶
func (*Planner) LeaveSelectionSet ¶
func (*Planner) LeaveVariableDefinition ¶
type SingleTypeField ¶
type Subscription ¶
type Subscription struct {
// contains filtered or unexported fields
}
type SubscriptionClient ¶
type SubscriptionClient struct {
// contains filtered or unexported fields
}
SubscriptionClient allows running multiple subscriptions via the same WebSocket either SSE connection It takes care of de-duplicating connections to the same origin under certain circumstances If Hash(URL,Body,Headers) result in the same result, an existing connection is re-used
func (*SubscriptionClient) Subscribe ¶
func (c *SubscriptionClient) Subscribe(reqCtx context.Context, options GraphQLSubscriptionOptions, next chan<- []byte) error
Subscribe initiates a new GraphQL Subscription with the origin If an existing WS connection with the same ID (Hash) exists, it is being re-used If connection protocol is SSE, a new connection is always created If no connection exists, the client initiates a new one
type SubscriptionSource ¶
type SubscriptionSource struct {
// contains filtered or unexported fields
}