diff options
Diffstat (limited to 'DomainDig/HTTPHeadersService.swift')
| -rw-r--r-- | DomainDig/HTTPHeadersService.swift | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/DomainDig/HTTPHeadersService.swift b/DomainDig/HTTPHeadersService.swift new file mode 100644 index 0000000..a297165 --- /dev/null +++ b/DomainDig/HTTPHeadersService.swift @@ -0,0 +1,22 @@ +import Foundation + +struct HTTPHeadersService { + static func fetch(domain: String) async throws -> [HTTPHeader] { + let url = URL(string: "https://\(domain)")! + var request = URLRequest(url: url, timeoutInterval: 10) + request.httpMethod = "HEAD" + + let (_, response) = try await URLSession.shared.data(for: request) + + guard let httpResponse = response as? HTTPURLResponse else { + throw URLError(.badServerResponse) + } + + return httpResponse.allHeaderFields.compactMap { key, value in + guard let name = key as? String, + let val = value as? String else { return nil } + return HTTPHeader(name: name, value: val) + } + .sorted { $0.name.lowercased() < $1.name.lowercased() } + } +} |
