(
countryAccess: Pick<
FreeModeCountryAccess,
| 'allowed'
| 'blockReason'
| 'cfCountry'
| 'ipPrivacy'
| 'spurIpPrivacy'
| 'spurStatus'
>,
)
| 148 | } |
| 149 | |
| 150 | export function getFreeModePrivacyDecision( |
| 151 | countryAccess: Pick< |
| 152 | FreeModeCountryAccess, |
| 153 | | 'allowed' |
| 154 | | 'blockReason' |
| 155 | | 'cfCountry' |
| 156 | | 'ipPrivacy' |
| 157 | | 'spurIpPrivacy' |
| 158 | | 'spurStatus' |
| 159 | >, |
| 160 | ): FreebuffPrivacyDecision { |
| 161 | if (countryAccess.allowed) { |
| 162 | return countryAccess.spurStatus === 'clean' && |
| 163 | countryAccess.ipPrivacy?.signals.length |
| 164 | ? 'ipinfo_suspicious_spur_clean' |
| 165 | : 'allowed_clean' |
| 166 | } |
| 167 | if (countryAccess.cfCountry === CLOUDFLARE_TOR_COUNTRY) { |
| 168 | return 'cloudflare_tor_block' |
| 169 | } |
| 170 | if (countryAccess.blockReason === 'ip_privacy_lookup_failed') { |
| 171 | return 'ipinfo_failed_limited' |
| 172 | } |
| 173 | if (countryAccess.blockReason === 'anonymous_network') { |
| 174 | if ( |
| 175 | hasHardBlockedPrivacySignal(countryAccess.ipPrivacy) && |
| 176 | hasHardBlockedPrivacySignal(countryAccess.spurIpPrivacy) |
| 177 | ) { |
| 178 | return 'corroborated_block' |
| 179 | } |
| 180 | if (countryAccess.spurStatus === 'failed') { |
| 181 | return 'spur_failed_limited' |
| 182 | } |
| 183 | } |
| 184 | return 'limited_other' |
| 185 | } |
| 186 | |
| 187 | export function getFreeModePrivacyProviderDecision( |
| 188 | countryAccess: Pick< |
no test coverage detected