summaryrefslogtreecommitdiff
path: root/DomainDig/FeatureAccessService.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-07-17 10:39:17 -0500
committerChristian Cleberg <[email protected]>2026-07-17 10:57:30 -0500
commit6e273c2676ce29cef057d117e4427e031886e743 (patch)
treec16273cd4b3e022f2322cb9061b8e735542eea55 /DomainDig/FeatureAccessService.swift
parentd62480233819184db2e55741b05375818ebf3881 (diff)
downloaddomain-dig-6e273c2676ce29cef057d117e4427e031886e743.tar.gz
domain-dig-6e273c2676ce29cef057d117e4427e031886e743.tar.bz2
domain-dig-6e273c2676ce29cef057d117e4427e031886e743.zip
v4.7.0: Add domain reputation/blocklist data source
- New DomainReputationResult model (status: clean/listed/unknown, listed sources, checked-at) and a `reputation(domain:)` method on ExternalDataService, mirroring the existing pluggable-URL enrichment pattern (ownership history, DNS history, extended subdomains, pricing). With no endpoint configured (the default; DomainDig ships no bundled third-party reputation dependency) it resolves to unavailable rather than "clean". - New .reputation FeatureCapability/DataCapability, gated Pro+ like domainPricing. - Threaded reputation/reputationError through LookupSnapshot and HistoryEntry (backward-compatible decode) so results persist with history entries. - Auto-fetched in performLookup alongside pricing; surfaced as a "Reputation" info row, folded into DomainInsightEngine's risk score/factors and top-level insights (a listed domain raises risk score and adds a factor/insight), and exported in text, CSV, and JSON report output. - Reputation-driven risk changes ride the existing change-severity pipeline, so a listed status flip is visible to monitoring the same way any other risk delta is, without bespoke monitoring wiring.
Diffstat (limited to 'DomainDig/FeatureAccessService.swift')
-rw-r--r--DomainDig/FeatureAccessService.swift7
1 files changed, 5 insertions, 2 deletions
diff --git a/DomainDig/FeatureAccessService.swift b/DomainDig/FeatureAccessService.swift
index a601b33..1598354 100644
--- a/DomainDig/FeatureAccessService.swift
+++ b/DomainDig/FeatureAccessService.swift
@@ -32,6 +32,7 @@ enum FeatureCapability: String, CaseIterable, Identifiable {
case dnsHistory
case extendedSubdomains
case domainPricing
+ case reputation
var id: String { rawValue }
@@ -61,6 +62,8 @@ enum FeatureCapability: String, CaseIterable, Identifiable {
return "Extended subdomains"
case .domainPricing:
return "Domain pricing"
+ case .reputation:
+ return "Domain reputation"
}
}
}
@@ -157,7 +160,7 @@ enum FeatureAccessService {
switch capability {
case .workflows, .batchOperations, .automatedMonitoring, .localAlerts, .advancedExports:
return "Available in Pro"
- case .ownershipHistory, .dnsHistory, .extendedSubdomains, .domainPricing:
+ case .ownershipHistory, .dnsHistory, .extendedSubdomains, .domainPricing, .reputation:
return "Available in Pro+"
case .limitedTracking:
return "Tracking is limited on Free"
@@ -219,7 +222,7 @@ enum FeatureAccessService {
static func upgradePrompt(for capability: FeatureCapability) -> UpgradePromptContext {
let title: String
switch capability {
- case .ownershipHistory, .dnsHistory, .extendedSubdomains, .domainPricing:
+ case .ownershipHistory, .dnsHistory, .extendedSubdomains, .domainPricing, .reputation:
title = "Available in Pro+"
default:
title = "Available in Pro"