import { Client, rippleTimeToISOTime, convertStringToHex } from 'xrpl' const client = new Client('wss://s.devnet.rippletest.net:51233') await client.connect() const SUBJECT_ADDRESS = 'rsYhHbanGpnYe3M6bsaMeJT5jnLTfDEzoA' const ISSUER_ADDRESS = 'rEzikzbnH6FQJ2cCr4Bqmf6c3jyWLzkonS' const CREDENTIAL_TYPE = convertStringToHex('my_credential').toUpperCase() // Look up Credential ledger entry -------------------------------------------- const ledgerEntryRequest = { command: 'ledger_entry', credential: { subject: SUBJECT_ADDRESS, issuer: ISSUER_ADDRESS, credential_type: CREDENTIAL_TYPE, }, ledger_index: 'validated', } console.log('Looking up credential...') console.log(JSON.stringify(ledgerEntryRequest, null, 2)) let xrplResponse try { xrplResponse = await client.request(ledgerEntryRequest) } catch (err) { if (err.data?.error === 'entryNotFound') { console.error('Credential was not found') } else { console.error(err) } process.exit(1) } const credential = xrplResponse.result.node console.log('Found credential:') console.log(JSON.stringify(credential, null, 2)) // Check if the credential has been accepted ---------------------------------- const lsfAccepted = 0x00010000 if (!(credential.Flags & lsfAccepted)) { console.log('Credential is not accepted.') process.exit(2) } // Confirm that the credential is not expired --------------------------------- if (credential.Expiration) { const expirationTime = rippleTimeToISOTime(credential.Expiration) console.log(`Credential has expiration: ${expirationTime}`) console.log('Looking up validated ledger to check for expiration.') const ledgerResponse = await client.request({ command: 'ledger', ledger_index: 'validated', }) const closeTime = rippleTimeToISOTime(ledgerResponse.result.ledger.close_time) console.log(`Most recent validated ledger was at: ${closeTime}`) if (new Date(closeTime) > new Date(expirationTime)) { console.log('Credential is expired.') process.exit(3) } } // Credential has passed all checks ------------------------------------------- console.log('Credential is valid.') client.disconnect()