Skip to content

Commit 6a5694a

Browse files
authored
Merge pull request #88 from demiurgestudios/errors
Minor Error Handling Fixes
2 parents f4cdcf7 + 92d5672 commit 6a5694a

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

amazon/validator.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,16 @@ func (c *Client) Verify(ctx context.Context, userID string, receiptID string) (I
101101

102102
resp, err := c.httpCli.Do(req)
103103
if err != nil {
104-
return result, fmt.Errorf("%v", err)
104+
return result, err
105105
}
106106
defer resp.Body.Close()
107107

108108
if resp.StatusCode < 200 || resp.StatusCode >= 300 {
109109
responseError := IAPResponseError{}
110110
err = json.NewDecoder(resp.Body).Decode(&responseError)
111+
if err != nil {
112+
return result, err
113+
}
111114
return result, errors.New(responseError.Message)
112115
}
113116

amazon/validator_test.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"fmt"
77
"net/http"
88
"net/http/httptest"
9+
"net/url"
910
"os"
1011
"reflect"
1112
"testing"
@@ -175,11 +176,17 @@ func TestVerifyTimeout(t *testing.T) {
175176
server, client := testTools(100, "timeout response")
176177
defer server.Close()
177178

178-
expected := errors.New("")
179179
ctx := context.Background()
180180
_, actual := client.Verify(ctx, "timeout", "timeout")
181-
if !reflect.DeepEqual(reflect.TypeOf(actual), reflect.TypeOf(expected)) {
182-
t.Errorf("got %v\nwant %v", actual, expected)
181+
182+
// Actual should be a "request canceled" *url.Error
183+
urlErr, ok := actual.(*url.Error)
184+
if !ok {
185+
t.Errorf("Expected *url.Error, got %T", actual)
186+
}
187+
188+
if !urlErr.Timeout() {
189+
t.Errorf("got %v\nwant timeout", actual)
183190
}
184191
}
185192

appstore/validator.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,9 @@ func NewWithClient(client *http.Client) *Client {
9898
// Verify sends receipts and gets validation result
9999
func (c *Client) Verify(ctx context.Context, reqBody IAPRequest, result interface{}) error {
100100
b := new(bytes.Buffer)
101-
json.NewEncoder(b).Encode(reqBody)
101+
if err := json.NewEncoder(b).Encode(reqBody); err != nil {
102+
return err
103+
}
102104

103105
req, err := http.NewRequest("POST", c.ProductionURL, b)
104106
if err != nil {

0 commit comments

Comments
 (0)