Files
linkster-ios/Linkster/ApiClient.swift
2026-04-19 19:55:22 +02:00

32 lines
991 B
Swift

import Foundation
struct ApiClient {
static let shared = ApiClient()
private let base = URL(string: "https://linkster.langhei.de/api")!
func resolve(url: String) async throws -> SongResult? {
var components = URLComponents(url: base.appendingPathComponent("resolve"), resolvingAgainstBaseURL: false)!
components.queryItems = [URLQueryItem(name: "url", value: url)]
let (data, _) = try await URLSession.shared.data(from: components.url!)
let json = try JSONDecoder().decode(ResolveResponse.self, from: data)
guard json.found else { return nil }
return SongResult(
title: json.title ?? "",
artist: json.artist ?? "",
playlistName: json.playlist ?? "",
providers: json.providers ?? [:]
)
}
}
private struct ResolveResponse: Decodable {
let found: Bool
let title: String?
let artist: String?
let playlist: String?
let providers: [String: String]?
}