make client an interface
This commit is contained in:
@@ -26,7 +26,7 @@ type getViewerViewerUser struct {
|
||||
|
||||
func getViewer(
|
||||
ctx context.Context,
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
) (*getViewerResponse, error) {
|
||||
var retval getViewerResponse
|
||||
err := client.MakeRequest(
|
||||
@@ -47,7 +47,7 @@ query getViewer {
|
||||
// getUser gets the given user's name from their username.
|
||||
func getUser(
|
||||
ctx context.Context,
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
login string,
|
||||
) (*getUserResponse, error) {
|
||||
variables := map[string]interface{}{
|
||||
|
||||
@@ -24,7 +24,7 @@ func {{.Name}}(
|
||||
ctx {{$.Config.ContextType}},
|
||||
{{end}}
|
||||
{{- if not $.Config.ClientGetter -}}
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
{{end}}
|
||||
{{- range .Args -}}
|
||||
{{.GoName}} {{.GoType}},
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ const (
|
||||
)
|
||||
|
||||
func InputObjectQuery(
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
query UserQueryInput,
|
||||
) (*InputObjectQueryResponse, error) {
|
||||
variables := map[string]interface{}{
|
||||
|
||||
+1
-1
@@ -94,7 +94,7 @@ func (v InterfaceNoFragmentsQueryRootTopicChildrenVideo) implementsGraphQLInterf
|
||||
}
|
||||
|
||||
func InterfaceNoFragmentsQuery(
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
) (*InterfaceNoFragmentsQueryResponse, error) {
|
||||
var retval InterfaceNoFragmentsQueryResponse
|
||||
err := client.MakeRequest(
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ type ListInputQueryUser struct {
|
||||
}
|
||||
|
||||
func ListInputQuery(
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
names []string,
|
||||
) (*ListInputQueryResponse, error) {
|
||||
variables := map[string]interface{}{
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ type QueryWithAliasUser struct {
|
||||
}
|
||||
|
||||
func QueryWithAlias(
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
) (*QueryWithAliasResponse, error) {
|
||||
var retval QueryWithAliasResponse
|
||||
err := client.MakeRequest(
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ type QueryWithDoubleAliasUser struct {
|
||||
}
|
||||
|
||||
func QueryWithDoubleAlias(
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
) (*QueryWithDoubleAliasResponse, error) {
|
||||
var retval QueryWithDoubleAliasResponse
|
||||
err := client.MakeRequest(
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ const (
|
||||
)
|
||||
|
||||
func QueryWithEnums(
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
) (*QueryWithEnumsResponse, error) {
|
||||
var retval QueryWithEnumsResponse
|
||||
err := client.MakeRequest(
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ type QueryWithSlicesUser struct {
|
||||
}
|
||||
|
||||
func QueryWithSlices(
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
) (*QueryWithSlicesResponse, error) {
|
||||
var retval QueryWithSlicesResponse
|
||||
err := client.MakeRequest(
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ type QueryWithStructsUserAuthMethodsAuthMethod struct {
|
||||
}
|
||||
|
||||
func QueryWithStructs(
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
) (*QueryWithStructsResponse, error) {
|
||||
var retval QueryWithStructsResponse
|
||||
err := client.MakeRequest(
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ type SimpleInputQueryUser struct {
|
||||
}
|
||||
|
||||
func SimpleInputQuery(
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
name string,
|
||||
) (*SimpleInputQueryResponse, error) {
|
||||
variables := map[string]interface{}{
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ type SimpleQueryUser struct {
|
||||
}
|
||||
|
||||
func SimpleQuery(
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
) (*SimpleQueryResponse, error) {
|
||||
var retval SimpleQueryResponse
|
||||
err := client.MakeRequest(
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ type TypeNameQueryUser struct {
|
||||
}
|
||||
|
||||
func TypeNameQuery(
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
) (*TypeNameQueryResponse, error) {
|
||||
var retval TypeNameQueryResponse
|
||||
err := client.MakeRequest(
|
||||
|
||||
+1
-1
@@ -72,7 +72,7 @@ func (v *UnionNoFragmentsQueryResponse) UnmarshalJSON(b []byte) error {
|
||||
}
|
||||
|
||||
func UnionNoFragmentsQuery(
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
) (*UnionNoFragmentsQueryResponse, error) {
|
||||
var retval UnionNoFragmentsQueryResponse
|
||||
err := client.MakeRequest(
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ type UsesEnumTwiceQueryResponse struct {
|
||||
}
|
||||
|
||||
func UsesEnumTwiceQuery(
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
) (*UsesEnumTwiceQueryResponse, error) {
|
||||
var retval UsesEnumTwiceQueryResponse
|
||||
err := client.MakeRequest(
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ const (
|
||||
)
|
||||
|
||||
func unexported(
|
||||
client *graphql.Client,
|
||||
client graphql.Client,
|
||||
query userQueryInput,
|
||||
) (*unexportedResponse, error) {
|
||||
variables := map[string]interface{}{
|
||||
|
||||
+44
-4
@@ -10,17 +10,57 @@ import (
|
||||
"github.com/vektah/gqlparser/gqlerror"
|
||||
)
|
||||
|
||||
type Client struct {
|
||||
// Client is the interface that the generate code calls into to actually make
|
||||
// requests.
|
||||
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 genql 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,
|
||||
query string,
|
||||
retval interface{},
|
||||
variables map[string]interface{},
|
||||
) error
|
||||
}
|
||||
|
||||
type client struct {
|
||||
endpoint string
|
||||
method string
|
||||
httpClient *http.Client
|
||||
}
|
||||
|
||||
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 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.
|
||||
func NewClient(endpoint string, httpClient *http.Client) Client {
|
||||
if httpClient == nil {
|
||||
httpClient = http.DefaultClient
|
||||
}
|
||||
return &Client{endpoint, http.MethodPost, httpClient}
|
||||
return &client{endpoint, http.MethodPost, httpClient}
|
||||
}
|
||||
|
||||
type payload struct {
|
||||
@@ -33,7 +73,7 @@ type response struct {
|
||||
Errors gqlerror.List `json:"errors"`
|
||||
}
|
||||
|
||||
func (client *Client) MakeRequest(ctx context.Context, query string, retval interface{}, variables map[string]interface{}) error {
|
||||
func (client *client) MakeRequest(ctx context.Context, query string, retval interface{}, variables map[string]interface{}) error {
|
||||
body, err := json.Marshal(payload{
|
||||
Query: query,
|
||||
Variables: variables,
|
||||
|
||||
Reference in New Issue
Block a user