summaryrefslogtreecommitdiff
path: root/DomainDig/HTTPHeadersService.swift
blob: a297165db3585b8119fe8b939867c9c556075782 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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() }
    }
}