diff --git a/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateHttpClient.java b/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateHttpClient.java index d987628d..463459ef 100644 --- a/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateHttpClient.java +++ b/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateHttpClient.java @@ -11,6 +11,7 @@ import java.time.*; import java.io.IOException; import java.io.InterruptedIOException; import java.util.NoSuchElementException; +import java.util.Optional; import java.util.concurrent.Semaphore; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -189,8 +190,11 @@ public class ChaturbateHttpClient extends HttpClient { // we need to prevent repeated challenge requests from multiple threads, so we check if the clearance cookie needs updating // maybe this can be done with some syncronization primitive, or maybe an expiresAt() check is enough - var cookie = cookieJar.getCookieFromCollection(cookieJar.getCookies().get(req.url().topPrivateDomain()), "cf_clearance"); - if (cookie.map(c -> Instant.ofEpochMilli(c.expiresAt()).isBefore(Instant.now())).orElse(true)) { + var needRefresh = Optional + .ofNullable(cookieJar.getCookies().get(req.url().topPrivateDomain())) + .flatMap(x -> cookieJar.getCookieFromCollection(x, "cf_clearance")) + .map(c -> Instant.ofEpochMilli(c.expiresAt()).isBefore(Instant.now())).orElse(true); + if (needRefresh) { var apiResponse = flaresolverr.getCookies(req.url().toString()).get(); if (apiResponse.getStatus().equals("ok")) { // update user agent. It should be the same for all sites, assuming we use the same api address every time