Allows multiple claim methods

This commit is contained in:
Yarmo Mackenbach 2022-09-30 23:37:55 +02:00
parent 37913c9327
commit 8a1f8ad586
No known key found for this signature in database
GPG key ID: 37367F4AF4087AD1
2 changed files with 37 additions and 22 deletions

View file

@ -200,33 +200,50 @@ const run = async (proofData, claimData, fingerprint) => {
errors: []
}
const claimMethods = Array.isArray(claimData.claim)
? claimData.claim
: [claimData.claim]
switch (claimData.proof.request.format) {
case E.ProofFormat.JSON:
try {
res.result = await runJSON(
proofData,
claimData.claim.path,
fingerprint,
claimData.claim.format,
claimData.claim.relation
)
res.completed = true
} catch (error) {
res.errors.push(error.message ? error.message : error)
for (let index = 0; index < claimMethods.length; index++) {
const claimMethod = claimMethods[index]
try {
res.result = res.result || await runJSON(
proofData,
claimMethod.path,
fingerprint,
claimMethod.format,
claimMethod.relation
)
} catch (error) {
res.errors.push(error.message ? error.message : error)
}
}
res.completed = true
break
case E.ProofFormat.TEXT:
try {
res.result = await containsProof(proofData,
fingerprint,
claimData.claim.format)
res.completed = true
} catch (error) {
res.errors.push('err_unknown_text_verification')
for (let index = 0; index < claimMethods.length; index++) {
const claimMethod = claimMethods[index]
try {
res.result = res.result || await containsProof(
proofData,
fingerprint,
claimMethod.format
)
} catch (error) {
res.errors.push('err_unknown_text_verification')
}
}
res.completed = true
break
}
// Reset the errors if one of the claim methods was successful
if (res.result) {
res.errors = []
}
return res
}

View file

@ -49,10 +49,8 @@ const pattern = {
data: _.isObject,
},
},
claim: {
format: _.isInteger,
relation: _.isInteger,
path: _.isArray,
claim: (x) => {
return _.isObject(x) || _.isArray(x)
},
}