From b8978fd29cf919f07d163fbed7fedd1429d36387 Mon Sep 17 00:00:00 2001 From: kingbri Date: Tue, 2 May 2023 14:44:03 -0400 Subject: [PATCH] Premiumize: Fix API key usage PM has a different method to handle API keys compared to other services which takes the value as an authorization header. Signed-off-by: kingbri --- Ferrite/API/PremiumizeWrapper.swift | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/Ferrite/API/PremiumizeWrapper.swift b/Ferrite/API/PremiumizeWrapper.swift index 47bff26..3ad235c 100644 --- a/Ferrite/API/PremiumizeWrapper.swift +++ b/Ferrite/API/PremiumizeWrapper.swift @@ -70,7 +70,27 @@ public class Premiumize { throw PMError.InvalidToken } - request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") + // Use the API query parameter if a manual API key is present + if UserDefaults.standard.bool(forKey: "Premiumize.UseManualKey") { + guard + let requestUrl = request.url, + var components = URLComponents(url: requestUrl, resolvingAgainstBaseURL: false) + else { + throw PMError.InvalidUrl + } + + let apiTokenItem = URLQueryItem(name: "apikey", value: token) + + if components.queryItems == nil { + components.queryItems = [apiTokenItem] + } else { + components.queryItems?.append(apiTokenItem) + } + + request.url = components.url + } else { + request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") + } let (data, response) = try await URLSession.shared.data(for: request)