From 74aee8d47f34ebd926d1c622327d425f35bd987c Mon Sep 17 00:00:00 2001 From: Till JS Date: Wed, 13 May 2026 17:18:23 +0200 Subject: [PATCH] fix(transport): URL-Konstruktion encoded ?-Query nicht mehr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit URL.appending(path:) behandelt das ? in Query-Strings als Pfad- Component und URL-encoded es zu %3F. Server-Route-Matching scheiterte mit 404 für alle Endpoints mit Query-Parametern. Symptom in cards-native v0.8.x: alle Card-Counts und Due-Counts auf 0, DeckDetailView Cards-Liste leer mit "Server-Fehler (404)" auf /api/v1/cards?deck_id=X. Fix: String-Konkatenation baseURL.absoluteString + path. Caller liefert path inkl. führendem / und optionaler Query. URLRequest parsed das Resultat korrekt. Co-Authored-By: Claude Opus 4.7 (1M context) --- Sources/ManaCore/API/AuthenticatedTransport.swift | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Sources/ManaCore/API/AuthenticatedTransport.swift b/Sources/ManaCore/API/AuthenticatedTransport.swift index ccd1682..c1e745c 100644 --- a/Sources/ManaCore/API/AuthenticatedTransport.swift +++ b/Sources/ManaCore/API/AuthenticatedTransport.swift @@ -40,7 +40,15 @@ public actor AuthenticatedTransport { contentType: String, token: String ) async throws -> (Data, HTTPURLResponse) { - var request = URLRequest(url: baseURL.appending(path: path)) + // String-Konkatenation statt `baseURL.appending(path:)`, weil + // letzteres das `?` in Query-Strings als Path-Component + // behandelt und URL-encoded (`?` → `%3F`) — der Server-Routes- + // Match scheitert dann mit 404. Caller liefert path inkl. + // führendem `/` und optionaler Query. + guard let url = URL(string: baseURL.absoluteString + path) else { + throw AuthError.networkFailure("Ungültige URL: \(path)") + } + var request = URLRequest(url: url) request.httpMethod = method request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") if let body {