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 <bdashore3@proton.me>
This commit is contained in:
kingbri 2023-05-02 14:44:03 -04:00 committed by Brian Dashore
parent 375de6f46e
commit f0d917002e

View file

@ -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)