Skip to content

Commit

Permalink
Merge pull request #32 from jeremyforan/master
Browse files Browse the repository at this point in the history
Switching to slog
  • Loading branch information
KazuhitoNakamura authored Feb 28, 2024
2 parents 8466b9c + e0da06c commit fda147a
Show file tree
Hide file tree
Showing 12 changed files with 193 additions and 126 deletions.
47 changes: 32 additions & 15 deletions appsync_example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ package appsync_test
import (
"encoding/json"
"fmt"
"log"
"log/slog"
"os"
"strings"

"github.com/sony/appsync-client-go/internal/appsynctest"
Expand All @@ -22,12 +23,14 @@ func ExampleClient_Post_query() {
Query: query,
})
if err != nil {
log.Fatal(err)
slog.Error("unable to post query", "error", err)
os.Exit(1)
}

data := new(string)
if err := response.DataAs(data); err != nil {
log.Fatalln(err, response)
slog.Error("unable to process data", "error", err, "response", response)
os.Exit(1)
}
fmt.Println(*data)

Expand All @@ -47,12 +50,14 @@ func ExampleClient_Post_mutation() {
Variables: &variables,
})
if err != nil {
log.Fatal(err)
slog.Error("unable to post mutation", "error", err)
os.Exit(1)
}

data := new(string)
if err := response.DataAs(data); err != nil {
log.Fatalln(err, response)
slog.Error("unable to process data", "error", err, "response", response)
os.Exit(1)
}
fmt.Println(*data)

Expand All @@ -70,22 +75,27 @@ func ExampleClient_mqtt_subscription() {
Query: subscription,
})
if err != nil {
log.Fatal(err)
slog.Error("unable to post subscription", "error", err)
os.Exit(1)
}

ext, err := appsync.NewExtensions(response)
if err != nil {
log.Fatalln(err)
slog.Error("unable to process extensions", "error", err)
os.Exit(1)
}

ch := make(chan *graphql.Response)
subscriber := appsync.NewSubscriber(*ext,
func(r *graphql.Response) { ch <- r },
func(err error) { log.Println(err) },
func(err error) {
slog.Warn("unable to create new subscriber", "error", err)
},
)

if err := subscriber.Start(); err != nil {
log.Fatalln(err)
slog.Error("unable to start subscriber", "error", err)
os.Exit(1)
}
defer subscriber.Stop()

Expand All @@ -96,13 +106,15 @@ func ExampleClient_mqtt_subscription() {
Variables: &variables,
})
if err != nil {
log.Fatal(err)
slog.Error("unable to post mutation", "error", err)
os.Exit(1)
}

response = <-ch
data := new(string)
if err := response.DataAs(data); err != nil {
log.Fatalln(err, response)
slog.Error("unable to process data", "error", err, "response", response)
os.Exit(1)
}
fmt.Println(*data)

Expand All @@ -124,11 +136,14 @@ func ExampleClient_graphqlws_subscription() {
Query: subscription,
},
func(r *graphql.Response) { ch <- r },
func(err error) { log.Println(err) },
func(err error) {
slog.Warn("unable to create new pure websocket subscriber ", "error", err)
},
)

if err := subscriber.Start(); err != nil {
log.Fatalln(err)
slog.Error("unable to start subscriber", "error", err)
os.Exit(1)
}
defer subscriber.Stop()

Expand All @@ -139,13 +154,15 @@ func ExampleClient_graphqlws_subscription() {
Variables: &variables,
})
if err != nil {
log.Fatal(err)
slog.Error("unable to post mutation", "error", err)
os.Exit(1)
}

response := <-ch
data := new(string)
if err := response.DataAs(data); err != nil {
log.Fatalln(err, response)
slog.Error("unable to process data", "error", err, "response", response)
os.Exit(1)
}
fmt.Println(*data)

Expand Down
10 changes: 5 additions & 5 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package appsync
import (
"context"
"encoding/json"
"log"
"log/slog"
"net/http"
"time"

Expand Down Expand Up @@ -45,12 +45,12 @@ func (c *Client) setupHeaders(request graphql.PostRequest) (http.Header, error)

jsonBytes, err := json.Marshal(request)
if err != nil {
log.Println(err)
slog.Error("unable to marshal request", "error", err, "request", request)
return nil, err
}
h, err := c.signer.signHTTP(jsonBytes)
if err != nil {
log.Println(err)
slog.Error("unable to sign request", "error", err, "request", request)
return nil, err
}
for k, vv := range h {
Expand All @@ -66,7 +66,7 @@ func (c *Client) Post(request graphql.PostRequest) (*graphql.Response, error) {
defer c.sleepIfNeeded(request)
header, err := c.setupHeaders(request)
if err != nil {
log.Println(err)
slog.Error("unable to setup headers", "error", err, "request", request)
return nil, err
}
return c.graphQLAPI.Post(header, request)
Expand All @@ -76,7 +76,7 @@ func (c *Client) Post(request graphql.PostRequest) (*graphql.Response, error) {
func (c *Client) PostAsync(request graphql.PostRequest, callback func(*graphql.Response, error)) (context.CancelFunc, error) {
header, err := c.setupHeaders(request)
if err != nil {
log.Println(err)
slog.Error("unable to setup headers", "error", err, "request", request)
return nil, err
}
cb := func(g *graphql.Response, err error) {
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/sony/appsync-client-go

go 1.20
go 1.21

require (
github.com/aws/aws-sdk-go v1.44.245
Expand Down
14 changes: 7 additions & 7 deletions graphql/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"bytes"
"context"
"encoding/json"
"log"
"log/slog"
"net/http"
"net/url"
"time"
Expand Down Expand Up @@ -69,13 +69,13 @@ func (c *Client) Post(header http.Header, request PostRequest) (*Response, error
func (c *Client) PostAsync(header http.Header, request PostRequest, callback func(*Response, error)) (context.CancelFunc, error) {
jsonBytes, err := json.Marshal(request)
if err != nil {
log.Println(err)
slog.Error("unable to marshal request", "error", err, "request", request)
return nil, err
}

req, err := http.NewRequest("POST", c.endpoint, bytes.NewBuffer(jsonBytes))
if err != nil {
log.Println(err)
slog.Error("unable to create request", "error", err)
return nil, err
}
req.Header = merge(req.Header, merge(c.header, header))
Expand All @@ -93,29 +93,29 @@ func (c *Client) PostAsync(header http.Header, request PostRequest, callback fun
op := func() error {
r, err := c.http.Do(req)
if err != nil {
log.Println(err)
slog.Warn("unable to send request", "error", err, "request", request)
if err.(*url.Error).Timeout() {
c.http.CloseIdleConnections()
}
return backoff.Permanent(err)
}
defer func() {
if err := r.Body.Close(); err != nil {
log.Println(err)
slog.Error("unable to close response body", "error", err, "request", request)
}
}()

if r.StatusCode != http.StatusOK {
httpErr := httpStatusError{StatusCode: r.StatusCode}
if httpErr.shouldRetry() {
log.Println(httpErr)
slog.Error("unable to send request", "error", httpErr, "request", request)
return httpErr
}
return backoff.Permanent(httpErr)
}

if err := json.NewDecoder(r.Body).Decode(&response); err != nil {
log.Println(err)
slog.Error("unable to decode response", "error", err, "request", request)
return backoff.Permanent(err)
}
response.StatusCode = &r.StatusCode
Expand Down
4 changes: 2 additions & 2 deletions graphql/option.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package graphql

import (
"log"
"log/slog"
"net/http"
"net/url"
"time"
Expand Down Expand Up @@ -29,7 +29,7 @@ func WithHTTPProxy(proxy string) ClientOption {
return func(c *Client) {
proxy, err := url.Parse(proxy)
if err != nil {
log.Println(err)
slog.Warn("unable to parse proxy URL", "error", err)
return
}
if t, ok := c.http.Transport.(*http.Transport); ok {
Expand Down
2 changes: 1 addition & 1 deletion graphql/response.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ func (r *Response) DataAs(v interface{}) error {
return fmt.Errorf("data is invalid")
}
if len(m) != 1 {
return fmt.Errorf("the data is not exist")
return fmt.Errorf("the data does not exist")
}
for _, value := range m {
if b, err := json.Marshal(value); err == nil {
Expand Down
Loading

0 comments on commit fda147a

Please sign in to comment.