-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathRPCTopicHandler.ts
More file actions
97 lines (86 loc) · 3.49 KB
/
RPCTopicHandler.ts
File metadata and controls
97 lines (86 loc) · 3.49 KB
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import { ManagerWalletService } from './Manager/ManagerWallet'
import { txSubmitter } from './TxBuildAndSubmit/TxSubmitterService'
import { kuber } from './TxBuildAndSubmit/KuberService'
import { saveTriggerHistory, updateAgentDrepRegistration } from '../repository/trigger_history_repository'
import { ILog } from './Manager/AgentManagerRPC'
import { metaDataService } from './MetadataService'
import { dbSync } from './DbSyncService'
import { ProposalService } from './ProposalService'
export class RPCTopicHandler {
managerWallet
constructor(managerWallet: ManagerWalletService) {
this.managerWallet = managerWallet
}
handleEvent(eventName: string, connection_id: string, args: any): Promise<any> {
const handler = (this as any)[eventName]
if (handler === undefined || eventName === 'constructor') {
console.error('Unknown event type', eventName, 'received')
return Promise.resolve()
} else {
console.log('[Manager] Dispatching to handler', { eventName, connection_id })
return handler.bind(this)(connection_id, args)
}
}
buildTx(connection_id: string, args: any[]) {
const [body, submit] = args
if (submit) {
return txSubmitter.buildAndSubmitTx(body)
} else {
return kuber.buildTx(body)
}
}
logEvent(connection_id: string, args: any[]) {
const params: ILog = args[0]
const txHash = params.txHash ? params.txHash : ''
return saveTriggerHistory(
connection_id,
params.function_name,
params.trigger,
params.success,
params.message,
params.triggerType,
txHash,
params.instanceIndex,
params.parameters,
params.internal,
params.result
).catch((err) => console.error('SaveTriggerHistory : ', err))
}
loadFunds(connection_id: string, args: any[]) {
const [address, amount] = args
return this.managerWallet.transferWalletFunds(address, amount)
}
getFaucetBalance(connection_id: string, args: any[]) {
const [address] = args
return kuber.getBalance(address).then((data) => {
return data.reduce((totalVal: number, item: any) => totalVal + item.value.lovelace, 0) / 10 ** 6
})
}
saveMetadata(connection_id: string, args: any[]) {
const [content] = args
return metaDataService.saveMetadata(content)
}
checkAndSaveDrepRegistration(connection_id: string, args: any[]) {
const [drepId] = args
return dbSync
.checkDrepRegistration(drepId)
.then((res) => {
console.log('Drep Registration Status: ', res['isRegisteredAsDRep'])
updateAgentDrepRegistration(connection_id, res['isRegisteredAsDRep']).catch((err) =>
console.error('AgentUpdateError : ', err)
)
})
.catch((err) => {
throw err
})
}
fetchMetadata(connection_id: string, args: any[]) {
const [url, hash] = args
return metaDataService.fetchMetadata(url, hash)
}
fetchProposals(connection_id: string, args: any[]) {
const [page = 1, pageSize = 10, search = '', sort = 'CreatedDate'] = args || []
console.log('[Manager] fetchProposals handler', { connection_id, page, pageSize, search, sort })
return ProposalService.fetchProposals(page, pageSize, sort, search)
}
}