( clientIp: string, options: FreeModeCountryAccessOptions, )
| 437 | } |
| 438 | |
| 439 | async function lookupSpurPrivacyStatus( |
| 440 | clientIp: string, |
| 441 | options: FreeModeCountryAccessOptions, |
| 442 | ): Promise<{ |
| 443 | privacy: FreeModeIpPrivacy | null |
| 444 | status: FreebuffSpurStatus |
| 445 | }> { |
| 446 | try { |
| 447 | const privacy = options.lookupSpurIpPrivacy |
| 448 | ? await options.lookupSpurIpPrivacy(clientIp) |
| 449 | : await lookupSpurIpPrivacy({ |
| 450 | ip: clientIp, |
| 451 | token: options.spurToken, |
| 452 | fetch: options.fetch ?? globalThis.fetch, |
| 453 | }) |
| 454 | if (!privacy) return { privacy: null, status: 'failed' } |
| 455 | return { |
| 456 | privacy, |
| 457 | status: hasHardBlockedPrivacySignal(privacy) ? 'suspicious' : 'clean', |
| 458 | } |
| 459 | } catch { |
| 460 | return { privacy: null, status: 'failed' } |
| 461 | } |
| 462 | } |
| 463 | |
| 464 | const NOT_CHECKED_SPUR_CONTEXT = { |
| 465 | spurIpPrivacy: null, |
no test coverage detected