mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2026-04-29 15:37:48 +00:00
79 lines
2.3 KiB
JavaScript
Executable File
79 lines
2.3 KiB
JavaScript
Executable File
import { Client, rippleTimeToISOTime, convertStringToHex } from "xrpl"
|
|
|
|
const client = new Client("wss://xrplcluster.com")
|
|
await client.connect()
|
|
|
|
const SUBJECT_ADDRESS = "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn"
|
|
const ISSUER_ADDRESS = "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX"
|
|
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)
|
|
}
|
|
client.disconnect()
|
|
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.")
|
|
client.disconnect()
|
|
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.")
|
|
|
|
let ledgerResponse
|
|
try {
|
|
ledgerResponse = await client.request({
|
|
command: "ledger",
|
|
ledger_index: "validated",
|
|
})
|
|
} catch (err) {
|
|
console.error("Error looking up most recent validated ledger:", err)
|
|
client.disconnect()
|
|
process.exit(3)
|
|
}
|
|
|
|
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.")
|
|
client.disconnect()
|
|
process.exit(4)
|
|
}
|
|
}
|
|
|
|
// Credential has passed all checks -------------------------------------------
|
|
console.log("Credential is valid.")
|
|
client.disconnect()
|