forked from Mirrors/go-iap
Merge pull request #88 from demiurgestudios/errors
Minor Error Handling Fixes
This commit is contained in:
@@ -101,13 +101,16 @@ func (c *Client) Verify(ctx context.Context, userID string, receiptID string) (I
|
|||||||
|
|
||||||
resp, err := c.httpCli.Do(req)
|
resp, err := c.httpCli.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return result, fmt.Errorf("%v", err)
|
return result, err
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
if resp.StatusCode < 200 || resp.StatusCode >= 300 {
|
if resp.StatusCode < 200 || resp.StatusCode >= 300 {
|
||||||
responseError := IAPResponseError{}
|
responseError := IAPResponseError{}
|
||||||
err = json.NewDecoder(resp.Body).Decode(&responseError)
|
err = json.NewDecoder(resp.Body).Decode(&responseError)
|
||||||
|
if err != nil {
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
return result, errors.New(responseError.Message)
|
return result, errors.New(responseError.Message)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
@@ -175,11 +176,17 @@ func TestVerifyTimeout(t *testing.T) {
|
|||||||
server, client := testTools(100, "timeout response")
|
server, client := testTools(100, "timeout response")
|
||||||
defer server.Close()
|
defer server.Close()
|
||||||
|
|
||||||
expected := errors.New("")
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
_, actual := client.Verify(ctx, "timeout", "timeout")
|
_, actual := client.Verify(ctx, "timeout", "timeout")
|
||||||
if !reflect.DeepEqual(reflect.TypeOf(actual), reflect.TypeOf(expected)) {
|
|
||||||
t.Errorf("got %v\nwant %v", actual, expected)
|
// Actual should be a "request canceled" *url.Error
|
||||||
|
urlErr, ok := actual.(*url.Error)
|
||||||
|
if !ok {
|
||||||
|
t.Errorf("Expected *url.Error, got %T", actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !urlErr.Timeout() {
|
||||||
|
t.Errorf("got %v\nwant timeout", actual)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -98,7 +98,9 @@ func NewWithClient(client *http.Client) *Client {
|
|||||||
// Verify sends receipts and gets validation result
|
// Verify sends receipts and gets validation result
|
||||||
func (c *Client) Verify(ctx context.Context, reqBody IAPRequest, result interface{}) error {
|
func (c *Client) Verify(ctx context.Context, reqBody IAPRequest, result interface{}) error {
|
||||||
b := new(bytes.Buffer)
|
b := new(bytes.Buffer)
|
||||||
json.NewEncoder(b).Encode(reqBody)
|
if err := json.NewEncoder(b).Encode(reqBody); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
req, err := http.NewRequest("POST", c.ProductionURL, b)
|
req, err := http.NewRequest("POST", c.ProductionURL, b)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user