graphql_datasource

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 16, 2022 License: MIT Imports: 27 Imported by: 4

Documentation

Index

Constants

View Source
const (
	MessageTypeConnectionAck       = "connection_ack"
	MessageTypeConnectionError     = "connection_error"
	MessageTypeConnectionKeepAlive = "ka"
	MessageTypeData                = "data"
	MessageTypeError               = "error"
	MessageTypeComplete            = "complete"
)

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 (b *Batch) Demultiplex(responseBufPair *resolve.BufPair, bufPairs []*resolve.BufPair) (err error)

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
}

func (*Configuration) ApplyDefaults

func (c *Configuration) ApplyDefaults()

type Factory

type Factory struct {
	BatchFactory resolve.DataSourceBatchFactory
	HTTPClient   *http.Client
	// contains filtered or unexported fields
}

func (*Factory) Planner

func (f *Factory) Planner(ctx context.Context) plan.DataSourcePlanner

type FederationConfiguration

type FederationConfiguration struct {
	Enabled    bool
	ServiceSDL string
}

type FetchConfiguration

type FetchConfiguration struct {
	URL    string
	Method string
	Header http.Header
}

type GraphQLBody

type GraphQLBody struct {
	Query         string          `json:"query,omitempty"`
	OperationName string          `json:"operationName,omitempty"`
	Variables     json.RawMessage `json:"variables,omitempty"`
}

type GraphQLSubscriptionClient

type GraphQLSubscriptionClient interface {
	Subscribe(ctx context.Context, options GraphQLSubscriptionOptions, next chan<- []byte) error
}

type GraphQLSubscriptionOptions

type GraphQLSubscriptionOptions struct {
	URL    string      `json:"url"`
	Body   GraphQLBody `json:"body"`
	Header http.Header `json:"header"`
}

type Options

type Options func(options *opts)

func WithLogger

func WithLogger(log abstractlogger.Logger) Options

func WithReadTimeout

func WithReadTimeout(timeout time.Duration) Options

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 (p *Planner) DownstreamResponseFieldAlias(downstreamFieldRef int) (alias string, exists bool)

func (*Planner) EnterArgument

func (p *Planner) EnterArgument(ref int)

func (*Planner) EnterDirective

func (p *Planner) EnterDirective(ref int)

func (*Planner) EnterDocument

func (p *Planner) EnterDocument(operation, definition *ast.Document)

func (*Planner) EnterField

func (p *Planner) EnterField(ref int)

func (*Planner) EnterInlineFragment

func (p *Planner) EnterInlineFragment(ref int)

func (*Planner) EnterOperationDefinition

func (p *Planner) EnterOperationDefinition(ref int)

func (*Planner) EnterSelectionSet

func (p *Planner) EnterSelectionSet(ref int)

func (*Planner) EnterVariableDefinition

func (p *Planner) EnterVariableDefinition(ref int)

func (*Planner) LeaveDocument

func (p *Planner) LeaveDocument(operation, definition *ast.Document)

func (*Planner) LeaveField

func (p *Planner) LeaveField(ref int)

func (*Planner) LeaveInlineFragment

func (p *Planner) LeaveInlineFragment(_ int)

func (*Planner) LeaveOperationDefinition

func (p *Planner) LeaveOperationDefinition(ref int)

func (*Planner) LeaveSelectionSet

func (p *Planner) LeaveSelectionSet(ref int)

func (*Planner) LeaveVariableDefinition

func (p *Planner) LeaveVariableDefinition(_ int)

func (*Planner) Register

func (p *Planner) Register(visitor *plan.Visitor, configuration plan.DataSourceConfiguration, isNested bool) error

type Source

type Source struct {
	// contains filtered or unexported fields
}

func (*Source) Load

func (s *Source) Load(ctx context.Context, input []byte, writer io.Writer) (err error)

type SubscriptionConfiguration

type SubscriptionConfiguration struct {
	URL string
}

type SubscriptionSource

type SubscriptionSource struct {
	// contains filtered or unexported fields
}

func (*SubscriptionSource) Start

func (s *SubscriptionSource) Start(ctx context.Context, input []byte, next chan<- []byte) error

type WebSocketGraphQLSubscriptionClient

type WebSocketGraphQLSubscriptionClient struct {
	// contains filtered or unexported fields
}

WebSocketGraphQLSubscriptionClient is a WebSocket client that allows running multiple subscriptions via the same WebSocket Connection It takes care of de-duplicating WebSocket connections to the same origin under certain circumstances If Hash(URL,Body,Headers) result in the same result, an existing WS connection is re-used

func NewWebSocketGraphQLSubscriptionClient

func NewWebSocketGraphQLSubscriptionClient(httpClient *http.Client, ctx context.Context, options ...Options) *WebSocketGraphQLSubscriptionClient

func (*WebSocketGraphQLSubscriptionClient) Subscribe

func (c *WebSocketGraphQLSubscriptionClient) Subscribe(ctx context.Context, options GraphQLSubscriptionOptions, next chan<- []byte) error

Subscribe initiates a new GraphQL Subscription with the origin Each WebSocket (WS) to an origin is uniquely identified by the Hash(URL,Headers,Body) If an existing WS with the same ID (Hash) exists, it is being re-used If no connection exists, the client initiates a new one and sends the "init" and "connection ack" messages

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL