From 97554fcd2a8f017d76bd17c12bd02720b7d584f0 Mon Sep 17 00:00:00 2001
From: reusedname <155286845+reusedname@users.noreply.github.com>
Date: Wed, 4 Dec 2024 19:45:28 +0500
Subject: [PATCH] fix null pointer error

---
 .../ctbrec/sites/chaturbate/ChaturbateHttpClient.java     | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

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