-
Notifications
You must be signed in to change notification settings - Fork 2
/
example_list_events_test.go
81 lines (68 loc) · 1.99 KB
/
example_list_events_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package paddle_test
import (
"context"
"encoding/json"
"fmt"
"os"
paddle "github.com/PaddleHQ/paddle-go-sdk/v3"
)
// Demonstrates how to fetch a list of events and iterate over the provided results.
func Example_listEvents() {
// Create a mock HTTP server for this example - skip over this bit!
s := mockServerForExample(mockServerResponse{stub: &stub{paths: []stubPath{events}}})
// Create a new Paddle client.
client, err := paddle.New(
os.Getenv("PADDLE_API_KEY"),
paddle.WithBaseURL(s.URL), // Uses the mock server, you will not need this in your integration.
)
if err != nil {
fmt.Println(err)
return
}
ctx := context.Background()
// Optionally set a transit ID on the context. This is useful to link your
// own request IDs to Paddle API requests.
ctx = paddle.ContextWithTransitID(ctx, "sdk-testing-request-1")
// Get a collection of events.
res, err := client.ListEvents(ctx, &paddle.ListEventsRequest{})
// Iterate the events.
err = res.Iter(ctx, func(e paddle.Event) (bool, error) {
switch v := e.(type) {
case *paddle.TransactionCompletedEvent:
// here v could be used as concrete type TransactionCompletedEvent
fmt.Println(v.EventID)
fmt.Println(v.Data.ID)
case *paddle.TransactionUpdatedEvent:
// here v could be used as concrete type TransactionUpdatedEvent
fmt.Println(v.EventID)
fmt.Println(v.Data.ID)
default:
// Unhandled event, we could log and error or covert to GenericEvent
ge, err := toGenericEvent(v)
if err != nil {
return false, err
}
fmt.Println(ge.EventID)
}
return true, nil
})
fmt.Println(err)
// Output:
//evt_01hywqk7y8qfzj69z3pdvz34qt
//txn_01hywqfe6yxhxcsfb4ays8mqt3
//evt_01hywqfn8b1na40vyarxaxqa9t
//txn_01hywqfervkjg6hkk035wy24gt
//evt_01hv9771tccgcm4y810d8zbceh
//<nil>
}
func toGenericEvent(e paddle.Event) (ge *paddle.GenericEvent, err error) {
t, err := json.Marshal(e)
if err != nil {
return nil, err
}
err = json.Unmarshal(t, &ge)
if err != nil {
return nil, err
}
return ge, nil
}