Skip to content

Commit

Permalink
fix: fix claimInfo formatting for datadog
Browse files Browse the repository at this point in the history
  • Loading branch information
swimricky committed Nov 14, 2023
1 parent 3cd7c11 commit b836590
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 30 deletions.
72 changes: 70 additions & 2 deletions frontend/claim_sdk/eventSubscriber.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
import * as anchor from '@coral-xyz/anchor'
import tokenDispenser from './idl/token_dispenser.json'
import { BorshCoder, Idl, AnchorProvider, IdlEvents } from '@coral-xyz/anchor'
import {
BorshCoder,
Idl,
AnchorProvider,
IdlEvents,
IdlTypes,
} from '@coral-xyz/anchor'
import { ConfirmedSignatureInfo, TransactionSignature } from '@solana/web3.js'
import { TokenDispenser } from './idl/token_dispenser'

Expand Down Expand Up @@ -188,12 +194,74 @@ export function formatTxnEventInfo(txnEvnInfo: TxnEventInfo) {
...formattedEvent,
claimant: txnEvnInfo.event.claimant.toBase58(),
remainingBalance: txnEvnInfo.event.remainingBalance.toNumber(),
claimInfo: txnEvnInfo.event.claimInfo,
claimInfo: formatClaimInfo(txnEvnInfo.event.claimInfo),
}
}
return formattedEvent
}

function formatClaimInfo(
claimInfo: IdlTypes<TokenDispenser>['ClaimInfo']
): FormattedClaimInfo {
if (claimInfo.identity.discord) {
return {
ecosystem: 'discord',
address: claimInfo.identity.discord.username,
amount: claimInfo.amount.toNumber(),
}
} else if (claimInfo.identity.solana) {
return {
ecosystem: 'solana',
address: new anchor.web3.PublicKey(
claimInfo.identity.solana.pubkey
).toBase58(),
amount: claimInfo.amount.toNumber(),
}
} else if (claimInfo.identity.evm) {
return {
ecosystem: 'evm',
address:
'0x' + Buffer.from(claimInfo.identity.evm.pubkey).toString('hex'),
amount: claimInfo.amount.toNumber(),
}
} else if (claimInfo.identity.aptos) {
return {
ecosystem: 'aptos',
address:
'0x' + Buffer.from(claimInfo.identity.aptos.address).toString('hex'),
amount: claimInfo.amount.toNumber(),
}
} else if (claimInfo.identity.sui) {
return {
ecosystem: 'sui',
address:
'0x' + Buffer.from(claimInfo.identity.sui.address).toString('hex'),
amount: claimInfo.amount.toNumber(),
}
} else if (claimInfo.identity.cosmwasm) {
return {
ecosystem: 'cosmwasm',
address: Buffer.from(claimInfo.identity.cosmwasm.address).toString(),
amount: claimInfo.amount.toNumber(),
}
} else if (claimInfo.identity.injective) {
return {
ecosystem: 'injective',
address: Buffer.from(claimInfo.identity.injective.address).toString(),
amount: claimInfo.amount.toNumber(),
}
} else
throw new Error(
`unknown identity type. ${JSON.stringify(claimInfo.identity)}}`
)
}

export type FormattedClaimInfo = {
ecosystem: string
address: string
amount: number
}

function chunkArray(array: any[], chunkSize: number) {
return Array.from({ length: Math.ceil(array.length / chunkSize) }, (_, i) =>
array.slice(i * chunkSize, i * chunkSize + chunkSize)
Expand Down
10 changes: 2 additions & 8 deletions frontend/integration/integrationTest.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,8 @@ import {
SYSVAR_INSTRUCTIONS_PUBKEY,
} from '@solana/web3.js'
import { Buffer } from 'buffer'
import { TokenDispenserProvider, airdrop } from '../claim_sdk/solana'
import {
formatTxnEventInfo,
TokenDispenserEventSubscriber,
} from '../claim_sdk/eventSubscriber'
import { TokenDispenserProvider } from '../claim_sdk/solana'
import { TokenDispenserEventSubscriber } from '../claim_sdk/eventSubscriber'
import {
DiscordTestWallet,
TestWallet,
Expand All @@ -26,9 +23,6 @@ import {
} from '../claim_sdk/testWallets'
import { loadTestWallets } from '../claim_sdk/testWallets'
import { mockFetchAmountAndProof, mockfetchFundTransaction } from './api'
import { removeLeading0x } from '../claim_sdk'
import { AnchorError, BorshCoder, Idl } from '@coral-xyz/anchor'
import tokenDispenser from '../claim_sdk/idl/token_dispenser.json'
import { ethers } from 'ethers'

const pool = getDatabasePool()
Expand Down
44 changes: 24 additions & 20 deletions frontend/scripts/datadog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@ async function main() {
}
)

const { txnEvents, failedTxnInfos } =
await tokenDispenserEventSubscriber.parseTransactionLogs()

const configuration = client.createConfiguration()
const apiInstance = new v1.EventsApi(configuration)

const { txnEvents, failedTxnInfos } =
await tokenDispenserEventSubscriber.parseTransactionLogs()

const txnEventRequests = createTxnEventRequest(txnEvents)
await Promise.all(
txnEventRequests.map((txnEventRequest) => {
Expand Down Expand Up @@ -74,24 +74,28 @@ async function main() {
function createTxnEventRequest(
txnEvents: TxnEventInfo[]
): v1.EventsApiCreateEventRequest[] {
return txnEvents.map((txnEvent) => {
const formattedEvent = formatTxnEventInfo(txnEvent)
const { claimant, ecosystem, address } = formattedEvent
return txnEvents
.filter((txnEvent) => txnEvent.event) // skip initialize txn
.map((txnEvent) => {
const formattedEvent = formatTxnEventInfo(txnEvent)
const { claimant } = formattedEvent

return {
body: {
title: `${claimant}-${ecosystem}-${address}`,
text: JSON.stringify(formattedEvent),
alertType: INFO,
tags: [
`claimant:${claimant}`,
`ecosystem:${ecosystem}`,
`network:${CLUSTER}`,
`service:token-dispenser-event-subscriber`,
],
},
}
})
const { ecosystem, address } = formattedEvent.claimInfo

return {
body: {
title: `${claimant}-${ecosystem}-${address}`,
text: JSON.stringify(formattedEvent),
alertType: INFO,
tags: [
`claimant:${claimant}`,
`ecosystem:${ecosystem}`,
`network:${CLUSTER}`,
`service:token-dispenser-event-subscriber`,
],
},
}
})
}

function createFailedTxnEventRequest(
Expand Down

0 comments on commit b836590

Please sign in to comment.