From a70fc060ad30a5ac6da039125a783a6847427f39 Mon Sep 17 00:00:00 2001 From: osy Date: Wed, 26 Jul 2023 13:29:15 -0700 Subject: [PATCH] uupdumpapi: update rate limits --- Source/UUPDump/UUPDumpAPI.swift | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Source/UUPDump/UUPDumpAPI.swift b/Source/UUPDump/UUPDumpAPI.swift index ccfad1f..2106e52 100644 --- a/Source/UUPDump/UUPDumpAPI.swift +++ b/Source/UUPDump/UUPDumpAPI.swift @@ -16,19 +16,18 @@ import Foundation -// Do not make more than 1 requests a second to avoid triggering rate limit -private let TIMEOUT = TimeInterval(1) -private let NS_IN_SECOND = TimeInterval(1000000000) - actor UUPDumpAPI { + // Server has a rate limit of 10us so we don't make more than one request per 100us + private let kTimeoutSec = TimeInterval(0.0001) + private let kNsInSec = TimeInterval(1000000000) private let uupDumpEndpointBase = URL(string: "https://uupdump.net/json-api/")! private var session = URLSession.shared private var lastRequestTime: Date? private func makeRequest(endpoint: String, arguments: [String: Any] = [:]) async throws -> Response { - let nextRequestTime = lastRequestTime?.advanced(by: TIMEOUT).timeIntervalSinceNow + let nextRequestTime = lastRequestTime?.advanced(by: kTimeoutSec).timeIntervalSinceNow if let nextRequestTime = nextRequestTime, nextRequestTime > 0 { - try await Task.sleep(nanoseconds: UInt64(nextRequestTime*NS_IN_SECOND)) + try await Task.sleep(nanoseconds: UInt64(nextRequestTime*kNsInSec)) try Task.checkCancellation() } lastRequestTime = Date.now