summaryrefslogtreecommitdiff
path: root/DomainDig/RedirectChainService.swift
diff options
context:
space:
mode:
Diffstat (limited to 'DomainDig/RedirectChainService.swift')
-rw-r--r--DomainDig/RedirectChainService.swift13
1 files changed, 9 insertions, 4 deletions
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)
+ }
}
}