v0.6.0 #19

Merged
kingbri1 merged 19 commits from next into default 2023-01-07 23:58:29 +00:00
2 changed files with 24 additions and 2 deletions
Showing only changes of commit 04e4503c86 - Show all commits

View file

@ -77,13 +77,35 @@ public class Premiumize {
}
}
// Function to divide and execute cache endpoint requests in parallel
// Calls this for 100 hashes at a time due to API limits
public func divideCacheRequests(magnets: [Magnet]) async throws -> [Magnet] {
let availableMagnets = try await withThrowingTaskGroup(of: [Magnet].self) { group in
for chunk in magnets.chunked(into: 100) {
group.addTask {
try await self.checkCache(magnets: chunk)
}
}
var chunkedMagnets: [Magnet] = []
for try await magnetArray in group {
chunkedMagnets += magnetArray
}
return chunkedMagnets
}
return availableMagnets
}
// Parent function for initial checking of the cache
public func checkCache(magnets: [Magnet]) async throws -> [Magnet] {
func checkCache(magnets: [Magnet]) async throws -> [Magnet] {
var urlComponents = URLComponents(string: "\(baseApiUrl)/cache/check")!
urlComponents.queryItems = magnets.map { URLQueryItem(name: "items[]", value: $0.hash) }
guard let url = urlComponents.url else {
throw PMError.InvalidUrl
}
var request = URLRequest(url: url)
let data = try await performRequest(request: &request, requestName: #function)

View file

@ -153,7 +153,7 @@ public class DebridManager: ObservableObject {
}
if enabledDebrids.contains(.premiumize) {
let availableMagnets = try await premiumize.checkCache(magnets: sendMagnets)
let availableMagnets = try await premiumize.divideCacheRequests(magnets: sendMagnets)
// Split DDL requests into chunks of 10
for chunk in availableMagnets.chunked(into: 10) {