// 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 }