Skip to content

Commit d794736

Browse files
committed
feat: update discord links for known Cardano networks
Signed-off-by: Ales Verbic <[email protected]>
1 parent 59bd629 commit d794736

File tree

4 files changed

+37
-14
lines changed

4 files changed

+37
-14
lines changed

input/chainsync/block.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ import (
1919
)
2020

2121
type BlockContext struct {
22-
BlockNumber uint64 `json:"blockNumber"`
23-
SlotNumber uint64 `json:"slotNumber"`
22+
BlockNumber uint64 `json:"blockNumber"`
23+
SlotNumber uint64 `json:"slotNumber"`
24+
NetworkMagic uint32 `json:"networkMagic"`
2425
}
2526

2627
type BlockEvent struct {
@@ -30,10 +31,11 @@ type BlockEvent struct {
3031
BlockCbor byteSliceJsonHex `json:"blockCbor,omitempty"`
3132
}
3233

33-
func NewBlockContext(block ledger.Block) BlockContext {
34+
func NewBlockContext(block ledger.Block, networkMagic uint32) BlockContext {
3435
ctx := BlockContext{
35-
BlockNumber: block.BlockNumber(),
36-
SlotNumber: block.SlotNumber(),
36+
BlockNumber: block.BlockNumber(),
37+
SlotNumber: block.SlotNumber(),
38+
NetworkMagic: networkMagic,
3739
}
3840
return ctx
3941
}

input/chainsync/chainsync.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ func (c *ChainSync) handleRollBackward(point ocommon.Point, tip ochainsync.Tip)
208208
func (c *ChainSync) handleRollForward(blockType uint, blockData interface{}, tip ochainsync.Tip) error {
209209
switch v := blockData.(type) {
210210
case ledger.Block:
211-
evt := event.New("chainsync.block", time.Now(), NewBlockContext(v), NewBlockEvent(v, c.includeCbor))
211+
evt := event.New("chainsync.block", time.Now(), NewBlockContext(v, c.networkMagic), NewBlockEvent(v, c.includeCbor))
212212
c.eventChan <- evt
213213
c.updateStatus(v.SlotNumber(), v.BlockNumber(), v.Hash(), tip.Point.Slot, hex.EncodeToString(tip.Point.Hash))
214214
case ledger.BlockHeader:
@@ -221,7 +221,7 @@ func (c *ChainSync) handleRollForward(blockType uint, blockData interface{}, tip
221221
blockEvt := event.New("chainsync.block", time.Now(), NewBlockHeaderContext(v), NewBlockEvent(block, c.includeCbor))
222222
c.eventChan <- blockEvt
223223
for t, transaction := range block.Transactions() {
224-
txEvt := event.New("chainsync.transaction", time.Now(), NewTransactionContext(block, transaction, uint32(t)), NewTransactionEvent(block, transaction, c.includeCbor))
224+
txEvt := event.New("chainsync.transaction", time.Now(), NewTransactionContext(block, transaction, uint32(t), c.networkMagic), NewTransactionEvent(block, transaction, c.includeCbor))
225225
c.eventChan <- txEvt
226226
}
227227
c.updateStatus(v.SlotNumber(), v.BlockNumber(), v.Hash(), tip.Point.Slot, hex.EncodeToString(tip.Point.Hash))
@@ -230,10 +230,10 @@ func (c *ChainSync) handleRollForward(blockType uint, blockData interface{}, tip
230230
}
231231

232232
func (c *ChainSync) handleBlockFetchBlock(block ledger.Block) error {
233-
blockEvt := event.New("chainsync.block", time.Now(), NewBlockContext(block), NewBlockEvent(block, c.includeCbor))
233+
blockEvt := event.New("chainsync.block", time.Now(), NewBlockContext(block, c.networkMagic), NewBlockEvent(block, c.includeCbor))
234234
c.eventChan <- blockEvt
235235
for t, transaction := range block.Transactions() {
236-
txEvt := event.New("chainsync.transaction", time.Now(), NewTransactionContext(block, transaction, uint32(t)), NewTransactionEvent(block, transaction, c.includeCbor))
236+
txEvt := event.New("chainsync.transaction", time.Now(), NewTransactionContext(block, transaction, uint32(t), c.networkMagic), NewTransactionEvent(block, transaction, c.includeCbor))
237237
c.eventChan <- txEvt
238238
}
239239
c.updateStatus(block.SlotNumber(), block.BlockNumber(), block.Hash(), c.bulkRangeEnd.Slot, hex.EncodeToString(c.bulkRangeEnd.Hash))

input/chainsync/tx.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ type TransactionContext struct {
2424
SlotNumber uint64 `json:"slotNumber"`
2525
TransactionHash string `json:"transactionHash"`
2626
TransactionIdx uint32 `json:"transactionIdx"`
27+
NetworkMagic uint32 `json:"networkMagic"`
2728
}
2829

2930
type TransactionEvent struct {
@@ -36,12 +37,13 @@ type TransactionEvent struct {
3637
TTL uint64 `json:"ttl,omitempty"`
3738
}
3839

39-
func NewTransactionContext(block ledger.Block, tx ledger.Transaction, index uint32) TransactionContext {
40+
func NewTransactionContext(block ledger.Block, tx ledger.Transaction, index uint32, networkMagic uint32) TransactionContext {
4041
ctx := TransactionContext{
4142
BlockNumber: block.BlockNumber(),
4243
SlotNumber: block.SlotNumber(),
4344
TransactionHash: tx.Hash(),
4445
TransactionIdx: index,
46+
NetworkMagic: networkMagic,
4547
}
4648
return ctx
4749
}

output/webhook/webhook.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ import (
3333
"github.com/blinklabs-io/snek/internal/version"
3434
)
3535

36+
const (
37+
mainnetNetworkMagic uint32 = 764824073
38+
previewNetworkMagic uint32 = 2
39+
preprodNetworkMagic uint32 = 1
40+
)
41+
3642
type WebhookOutput struct {
3743
errorChan chan error
3844
eventChan chan event.Event
@@ -135,8 +141,8 @@ func formatWebhook(e *event.Event, format string) []byte {
135141
Name: "Issuer Vkey",
136142
Value: be.IssuerVkey,
137143
})
138-
// TODO: fix this URL for different networks
139-
dme.URL = fmt.Sprintf("https://cexplorer.io/block/%s", be.BlockHash)
144+
baseURL := getBaseURL(bc.NetworkMagic)
145+
dme.URL = fmt.Sprintf("%s/block/%s", baseURL, be.BlockHash)
140146
case "chainsync.rollback":
141147
be := e.Payload.(chainsync.RollbackEvent)
142148
dme.Title = "Cardano Rollback"
@@ -176,8 +182,8 @@ func formatWebhook(e *event.Event, format string) []byte {
176182
Name: "Transaction Hash",
177183
Value: tc.TransactionHash,
178184
})
179-
// TODO: fix this URL for different networks
180-
dme.URL = fmt.Sprintf("https://cexplorer.io/tx/%s", tc.TransactionHash)
185+
baseURL := getBaseURL(tc.NetworkMagic)
186+
dme.URL = fmt.Sprintf("%s/tx/%s", baseURL, tc.TransactionHash)
181187
default:
182188
dwe.Content = fmt.Sprintf("%v", e.Payload)
183189
}
@@ -214,6 +220,19 @@ type DiscordMessageEmbedField struct {
214220
Value string `json:"value"`
215221
}
216222

223+
func getBaseURL(networkMagic uint32) string {
224+
switch networkMagic {
225+
case mainnetNetworkMagic:
226+
return "https://cexplorer.io"
227+
case preprodNetworkMagic:
228+
return "https://preprod.cexplorer.io"
229+
case previewNetworkMagic:
230+
return "https://preview.cexplorer.io"
231+
default:
232+
return "https://cexplorer.io" // default to mainnet if unknown network
233+
}
234+
}
235+
217236
func (w *WebhookOutput) SendWebhook(e *event.Event) error {
218237
logger := logging.GetLogger()
219238
logger.Infof("sending event %s to %s", e.Type, w.url)

0 commit comments

Comments
 (0)