diff options
Diffstat (limited to 'DomainDig/IPGeolocationService.swift')
| -rw-r--r-- | DomainDig/IPGeolocationService.swift | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/DomainDig/IPGeolocationService.swift b/DomainDig/IPGeolocationService.swift new file mode 100644 index 0000000..6c60295 --- /dev/null +++ b/DomainDig/IPGeolocationService.swift @@ -0,0 +1,17 @@ +import Foundation + +struct IPGeolocationService { + static func lookup(ip: String) async throws -> IPGeolocation { + let url = URL(string: "https://ipapi.co/\(ip)/json/")! + let request = URLRequest(url: url, timeoutInterval: 10) + + let (data, response) = try await URLSession.shared.data(for: request) + + guard let httpResponse = response as? HTTPURLResponse, + httpResponse.statusCode == 200 else { + throw URLError(.badServerResponse) + } + + return try JSONDecoder().decode(IPGeolocation.self, from: data) + } +} |
