graphql

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Sep 16, 2021 License: MIT Imports: 7 Imported by: 373

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client interface {
	// MakeRequest must make a request to the client's GraphQL API.
	//
	// ctx is the context that should be used to make this request.  If context
	// is disabled in the genqlient settings, this will be set to
	// context.Background().
	//
	// query is the literal string representing the GraphQL query, e.g.
	// `query myQuery { myField }`.  variables contains the GraphQL variables
	// to be sent along with the query, or may be nil if there are none.
	// Typically, GraphQL APIs will accept a JSON payload of the form
	//	{"query": "query myQuery { ... }", "variables": {...}}`
	// but MakeRequest may use some other transport, handle extensions, or set
	// other parameters, if it wishes.
	//
	// retval is a pointer to the struct representing the query result, e.g.
	// new(myQueryResponse).  Typically, GraphQL APIs will return a JSON
	// payload of the form
	//	{"data": {...}, "errors": {...}}
	// and retval is designed so that `data` will json-unmarshal into `retval`.
	// (Errors are returned.) But again, MakeRequest may customize this.
	MakeRequest(
		ctx context.Context,
		opName string,
		query string,
		retval interface{},
		variables map[string]interface{},
	) error
}

Client is the interface that the generated code calls into to actually make requests.

Unstable: This interface is likely to change before v1.0, see #19. Creating a client with NewClient will remain the same.

func NewClient

func NewClient(endpoint string, httpClient *http.Client) Client

NewClient returns a Client which makes requests to the given endpoint, suitable for most users.

The client makes POST requests to the given GraphQL endpoint using standard GraphQL HTTP-over-JSON transport. It will use the given http client, or http.DefaultClient if a nil client is passed.

The typical method of adding authentication headers is to wrap the client's Transport to add those headers. See example/caller.go for an example.

type NoUnmarshalJSON

type NoUnmarshalJSON struct{}

NoUnmarshalJSON is intended for the use of genqlient's generated code only.

It is used to prevent a struct type from inheriting its embed's UnmarshalJSON method, so if we construct a type:

type T struct { E; NoUnmarshalJSON }

where E has an UnmarshalJSON method, T will not inherit it, per the Go selector rules: https://golang.org/ref/spec#Selectors.

func (NoUnmarshalJSON) UnmarshalJSON

func (NoUnmarshalJSON) UnmarshalJSON(b []byte) error

UnmarshalJSON should never be called; it exists only to prevent a sibling UnmarshalJSON method from being promoted.

Jump to

Keyboard shortcuts

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