From ee2520f2c0c2d806fd284c3d6b8a81a3822f5270 Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Mon, 20 Apr 2026 15:28:12 -0500 Subject: feat(v1.8): improve result structure, history, and consistency - normalize sections and add summary card - fix resolver usage in reverse DNS - include custom port scans in history/export - standardize error handling - decompose ContentView into smaller views --- DomainDig/RedirectChainService.swift | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'DomainDig/RedirectChainService.swift') diff --git a/DomainDig/RedirectChainService.swift b/DomainDig/RedirectChainService.swift index 541e118..d55a4aa 100644 --- a/DomainDig/RedirectChainService.swift +++ b/DomainDig/RedirectChainService.swift @@ -1,12 +1,17 @@ import Foundation struct RedirectChainService { - static func trace(domain: String) async throws -> [RedirectHop] { - // Try HTTPS first (avoids ATS issues), fall back to HTTP if it fails entirely + static func trace(domain: String) async -> ServiceResult<[RedirectHop]> { do { - return try await followChain(startingURL: URL(string: "https://\(domain)")!) + let hops = try await followChain(startingURL: URL(string: "https://\(domain)")!) + return hops.isEmpty ? .empty("No redirect data available") : .success(hops) } catch { - return try await followChain(startingURL: URL(string: "http://\(domain)")!) + do { + let hops = try await followChain(startingURL: URL(string: "http://\(domain)")!) + return hops.isEmpty ? .empty("No redirect data available") : .success(hops) + } catch { + return .error(error.localizedDescription) + } } } -- cgit v1.2.3