122 lines
4.1 KiB
Go
122 lines
4.1 KiB
Go
|
|
// fundedStatus provides functions to check the funded status of identities, mate profiles, messages, and reports
|
|
// Some content must be funded via the account credit servers
|
|
// This package will retrieve from the verified and trusted funded status packages.
|
|
|
|
package fundedStatus
|
|
|
|
// Be aware that Funded means that the content/identity will be hosted by the network
|
|
// It may have been funded at one point in the past, but if it has expired, it is no longer considered Funded
|
|
|
|
import "seekia/internal/helpers"
|
|
import "seekia/internal/network/verifiedFundedStatus"
|
|
import "seekia/internal/network/trustedFundedStatus"
|
|
|
|
import "errors"
|
|
|
|
//Outputs:
|
|
// -bool: Status is known (it may not be fully up to date, but it at least has been checked once)
|
|
// -bool: Identity is funded status
|
|
// -error
|
|
func GetIdentityIsFundedStatus(identityHash [16]byte, networkType byte)(bool, bool, error){
|
|
|
|
isValid := helpers.VerifyNetworkType(networkType)
|
|
if (isValid == false){
|
|
networkTypeString := helpers.ConvertByteToString(networkType)
|
|
return false, false, errors.New("GetIdentityIsFundedStatus called with invalid networkType: " + networkTypeString)
|
|
}
|
|
|
|
verifiedStatusIsKnown, verifiedIdentityIsFundedStatus, _, timeOfCheckingVerified, err := verifiedFundedStatus.GetVerifiedIdentityIsFundedStatus(identityHash, networkType)
|
|
if (err != nil) { return false, false, err }
|
|
|
|
trustedStatusIsKnown, trustedIdentityIsFundedStatus, timeOfCheckingTrusted, err := trustedFundedStatus.GetTrustedIdentityIsFundedStatus(identityHash, networkType)
|
|
if (err != nil) { return false, false, err }
|
|
|
|
if (verifiedStatusIsKnown == false && trustedStatusIsKnown == false){
|
|
return false, false, nil
|
|
}
|
|
|
|
if (verifiedStatusIsKnown == true && trustedStatusIsKnown == false){
|
|
return true, verifiedIdentityIsFundedStatus, nil
|
|
}
|
|
if (verifiedStatusIsKnown == false && trustedStatusIsKnown == true){
|
|
return true, trustedIdentityIsFundedStatus, nil
|
|
}
|
|
|
|
// Both statuses are known and are the same
|
|
if (verifiedIdentityIsFundedStatus == trustedIdentityIsFundedStatus){
|
|
return true, verifiedIdentityIsFundedStatus, nil
|
|
}
|
|
|
|
// Both statuses are known, and they disagree.
|
|
// We rely on the verified status more, unless it is older than the trusted status by at least 1 day
|
|
|
|
if (timeOfCheckingTrusted > (timeOfCheckingVerified + 86400)){
|
|
return true, trustedIdentityIsFundedStatus, nil
|
|
}
|
|
|
|
return true, verifiedIdentityIsFundedStatus, nil
|
|
}
|
|
|
|
|
|
// Outputs:
|
|
// -bool: Status is known
|
|
// -bool: Profile is funded status
|
|
// -error
|
|
func GetMateProfileIsFundedStatus(profileHash [28]byte)(bool, bool, error){
|
|
|
|
statusIsKnown, profileIsFunded, _, _, err := verifiedFundedStatus.GetVerifiedMateProfileIsFundedStatus(profileHash)
|
|
if (err != nil) { return false, false, err }
|
|
if (statusIsKnown == true){
|
|
return true, profileIsFunded, nil
|
|
}
|
|
|
|
statusIsKnown, profileIsFunded, err = trustedFundedStatus.GetTrustedMateProfileIsFundedStatus(profileHash)
|
|
if (err != nil) { return false, false, err }
|
|
if (statusIsKnown == true){
|
|
return true, profileIsFunded, nil
|
|
}
|
|
|
|
return false, false, nil
|
|
}
|
|
|
|
|
|
//Outputs:
|
|
// -bool: Status is known
|
|
// -bool: Message is funded
|
|
// -error
|
|
func GetMessageIsFundedStatus(messageHash [26]byte)(bool, bool, error){
|
|
|
|
statusIsKnown, messageIsFunded, _, _, err := verifiedFundedStatus.GetVerifiedMessageIsFundedStatus(messageHash)
|
|
if (err != nil) { return false, false, err }
|
|
if (statusIsKnown == true){
|
|
return true, messageIsFunded, nil
|
|
}
|
|
|
|
statusIsKnown, messageIsFunded, err = trustedFundedStatus.GetTrustedMessageIsFundedStatus(messageHash)
|
|
if (err != nil) { return false, false, err }
|
|
if (statusIsKnown == true){
|
|
return true, messageIsFunded, nil
|
|
}
|
|
|
|
return false, false, nil
|
|
}
|
|
|
|
func GetReportIsFundedStatus(reportHash [30]byte)(bool, bool, error){
|
|
|
|
statusIsKnown, reportIsFunded, _, _, err := verifiedFundedStatus.GetVerifiedReportIsFundedStatus(reportHash)
|
|
if (err != nil) { return false, false, err }
|
|
if (statusIsKnown == true){
|
|
return true, reportIsFunded, nil
|
|
}
|
|
|
|
statusIsKnown, reportIsFunded, err = trustedFundedStatus.GetTrustedReportIsFundedStatus(reportHash)
|
|
if (err != nil) { return false, false, err }
|
|
if (statusIsKnown == true){
|
|
return true, reportIsFunded, nil
|
|
}
|
|
|
|
return false, false, nil
|
|
}
|
|
|
|
|