diff --git a/common/src/main/java/ctbrec/recorder/OnlineMonitor.java b/common/src/main/java/ctbrec/recorder/OnlineMonitor.java index e153e6c8..d2b83c65 100644 --- a/common/src/main/java/ctbrec/recorder/OnlineMonitor.java +++ b/common/src/main/java/ctbrec/recorder/OnlineMonitor.java @@ -6,6 +6,7 @@ import ctbrec.event.EventBusHolder; import ctbrec.event.ModelIsOnlineEvent; import ctbrec.event.ModelStateChangedEvent; import ctbrec.io.HttpException; +import ctbrec.sites.chaturbate.ChaturbateModel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,6 +20,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.*; +import static ctbrec.Model.State.OFFLINE; import static ctbrec.Model.State.UNKNOWN; public class OnlineMonitor extends Thread { @@ -112,7 +114,12 @@ public class OnlineMonitor extends Thread { EventBusHolder.BUS.post(new ModelIsOnlineEvent(model)); model.setLastSeen(Instant.now()); } - Model.State state = model.getOnlineState(false); + Model.State state; + if (model instanceof ChaturbateModel && model.getOnlineState(true) == OFFLINE) { + state = OFFLINE; + } else { + state = model.getOnlineState(false); + } LOG.debug("Model online state: {} {}", model.getName(), state); Model.State oldState = states.getOrDefault(model, UNKNOWN); states.put(model, state); diff --git a/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateModel.java b/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateModel.java index 8af2daac..3692c913 100644 --- a/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateModel.java +++ b/common/src/main/java/ctbrec/sites/chaturbate/ChaturbateModel.java @@ -62,8 +62,8 @@ public class ChaturbateModel extends AbstractModel { log.trace("Model {} offline", getName()); } else { StreamInfo info = getStreamInfo(); - roomStatus = Optional.ofNullable(info).map(i -> i.room_status).orElse(""); - log.trace("Model {} room status: {}", getName(), Optional.ofNullable(info).map(i -> i.room_status).orElse("unknown")); + roomStatus = Optional.ofNullable(info).map(i -> i.room_status).orElse("Unknown"); + log.trace("Model {} room status: {}", getName(), Optional.ofNullable(info).map(i -> i.room_status).orElse("Unknown")); } } else { StreamInfo info = getStreamInfo(true); @@ -143,7 +143,11 @@ public class ChaturbateModel extends AbstractModel { @Override public State getOnlineState(boolean failFast) throws IOException, ExecutionException { if (failFast) { - setOnlineStateByRoomStatus(Optional.ofNullable(streamInfo).map(si -> si.room_status).orElse("Unknown")); + if (onlineState != UNKNOWN) { + return onlineState; + } else { + setOnlineStateByRoomStatus(Optional.ofNullable(streamInfo).map(si -> si.room_status).orElse("unknown")); + } } else { if (isOffline()) { onlineState = OFFLINE; @@ -303,7 +307,7 @@ public class ChaturbateModel extends AbstractModel { lastStreamInfoRequest = Instant.now(); if (response.isSuccessful()) { String content = response.body().string(); - log.trace("Raw stream info for model {}: {}", getName(), content); + log.debug("Raw stream info for model {}: {}", getName(), content); streamInfo = mapper.readValue(content, StreamInfo.class); return streamInfo; } else {