@@ -25,6 +25,8 @@ import (
25
25
"net/http"
26
26
"time"
27
27
28
+ // cbor "github.com/fxamacker/cbor/v2"
29
+
28
30
"github.com/blinklabs-io/snek/event"
29
31
"github.com/blinklabs-io/snek/input/chainsync"
30
32
"github.com/blinklabs-io/snek/internal/logging"
@@ -68,10 +70,16 @@ func (w *WebhookOutput) Start() error {
68
70
if payload == nil {
69
71
panic (fmt .Errorf ("ERROR: %v" , payload ))
70
72
}
73
+ context := evt .Context
71
74
switch evt .Type {
72
75
case "chainsync.block" :
76
+ if context == nil {
77
+ panic (fmt .Errorf ("ERROR: %v" , context ))
78
+ }
73
79
be := payload .(chainsync.BlockEvent )
80
+ bc := context .(chainsync.BlockContext )
74
81
evt .Payload = be
82
+ evt .Context = bc
75
83
case "chainsync.rollback" :
76
84
re := payload .(chainsync.RollbackEvent )
77
85
evt .Payload = re
@@ -97,7 +105,7 @@ func basicAuth(username, password string) string {
97
105
return "Basic " + base64 .StdEncoding .EncodeToString ([]byte (auth ))
98
106
}
99
107
100
- func formatPayload (e * event.Event , format string ) []byte {
108
+ func formatWebhook (e * event.Event , format string ) []byte {
101
109
var data []byte
102
110
var err error
103
111
switch format {
@@ -109,19 +117,29 @@ func formatPayload(e *event.Event, format string) []byte {
109
117
switch e .Type {
110
118
case "chainsync.block" :
111
119
be := e .Payload .(chainsync.BlockEvent )
120
+ bc := e .Context .(chainsync.BlockContext )
121
+ // keyCbor, err := cbor.Marshal(be.IssuerVkey)
122
+ // if err != nil {
123
+ // panic(err)
124
+ // }
112
125
dme .Title = "New Cardano Block"
113
126
dmefs = append (dmefs , & DiscordMessageEmbedField {
114
127
Name : "Block Number" ,
115
- Value : fmt .Sprintf ("%d" , be .BlockNumber ),
128
+ Value : fmt .Sprintf ("%d" , bc .BlockNumber ),
116
129
})
117
130
dmefs = append (dmefs , & DiscordMessageEmbedField {
118
131
Name : "Slot Number" ,
119
- Value : fmt .Sprintf ("%d" , be .SlotNumber ),
132
+ Value : fmt .Sprintf ("%d" , bc .SlotNumber ),
120
133
})
121
134
dmefs = append (dmefs , & DiscordMessageEmbedField {
122
135
Name : "Block Hash" ,
123
136
Value : be .BlockHash ,
124
137
})
138
+ // TODO: get the pool identifier from be.IssuerVkey
139
+ // dmefs = append(dmefs, &DiscordMessageEmbedField{
140
+ // Name: "Issuer Vkey",
141
+ // Value: fmt.Sprintf("%x", keyCbor),
142
+ // })
125
143
// TODO: fix this URL for different networks
126
144
dme .URL = fmt .Sprintf ("https://cexplorer.io/block/%s" , be .BlockHash )
127
145
case "chainsync.rollback" :
@@ -199,7 +217,7 @@ type DiscordMessageEmbedField struct {
199
217
func (w * WebhookOutput ) SendWebhook (e * event.Event ) error {
200
218
logger := logging .GetLogger ()
201
219
logger .Infof ("sending event %s to %s" , e .Type , w .url )
202
- data := formatPayload (e , w .format )
220
+ data := formatWebhook (e , w .format )
203
221
// Setup request
204
222
ctx , cancel := context .WithTimeout (context .Background (), 5 * time .Second )
205
223
defer cancel ()
0 commit comments