1+ import xrplclient from '../services/xrpl'
2+ import Validator , { IValidator } from '../models/Validator'
3+ import { IValidation } from '../models/Validation'
4+ import logger from '../logger'
5+
6+ const LOGPREFIX = '[validator-registry]'
7+
8+ class ValidatorRegistry {
9+ private _validation : IValidation
10+
11+ constructor ( validation : IValidation ) {
12+ this . _validation = validation
13+ }
14+
15+ async refresh ( ) {
16+ if ( ! this . _validation . master_key ) {
17+ logger . verbose ( LOGPREFIX , `MasterKey missing: ${ this . _validation . validation_public_key } ` )
18+ return
19+ }
20+ try {
21+ const manifest = await xrplclient . request ( { command : "manifest" , public_key : this . _validation . master_key } )
22+ if ( manifest ?. result ?. details ?. master_key === this . _validation . master_key ) {
23+ const newValidator : IValidator = {
24+ ledger_index : this . _validation . ledger_index ,
25+ server_version : this . _validation . server_version ,
26+ manifest : manifest . result . manifest ,
27+ ...manifest . result . details ,
28+ }
29+ Validator . findOneAndUpdate (
30+ { master_key : this . _validation . master_key } ,
31+ newValidator ,
32+ { upsert : true , new : true }
33+ )
34+ . then ( validator => {
35+ logger . verbose ( LOGPREFIX , `Updated validator: ${ validator . master_key } ` )
36+ } )
37+ }
38+ } catch {
39+ logger . verbose ( LOGPREFIX , `Error fetching manifest for ${ this . _validation . master_key } ` )
40+ }
41+ }
42+ }
43+
44+ export default ValidatorRegistry
0 commit comments