Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 | 2x 2x 2x 2x 2x 2x 8x 2x 6x 2x 4x 4x 2x | /* @flow */
import { profileServices } from './services'
/**
* Validates the social proofs in a user's profile. Currently supports validation of
* Facebook, Twitter, GitHub, Instagram, LinkedIn and HackerNews accounts.
*
* @param {Object} profile The JSON of the profile to be validated
* @param {string} ownerAddress The owner bitcoin address to be validated
* @param {string} [name=null] The Blockstack name to be validated
* @returns {Promise} that resolves to an array of validated proof objects
*/
export function validateProofs(profile: Object,
ownerAddress: string,
name: ?string = null) {
Iif (!profile) {
throw new Error('Profile must not be null')
}
let accounts: Array<any> = []
const proofsToValidate = []
Eif (profile.hasOwnProperty('account')) {
accounts = profile.account
} else {
return Promise.resolve([])
}
accounts.forEach((account) => {
// skip if proof service is not supported
if (account.hasOwnProperty('service')
&& !profileServices.hasOwnProperty(account.service)) {
return
}
if (!(account.hasOwnProperty('proofType')
&& account.proofType === 'http'
&& account.hasOwnProperty('proofUrl'))) {
return
}
const proof = {
service: account.service,
proof_url: account.proofUrl,
identifier: account.identifier,
valid: false
}
proofsToValidate.push(profileServices[account.service]
.validateProof(proof, ownerAddress, name))
})
return Promise.all(proofsToValidate)
}
|