diff --git a/common/src/main/java/ctbrec/sites/manyvids/MVLiveClient.java b/common/src/main/java/ctbrec/sites/manyvids/MVLiveClient.java index 4b0180a5..370c00b0 100644 --- a/common/src/main/java/ctbrec/sites/manyvids/MVLiveClient.java +++ b/common/src/main/java/ctbrec/sites/manyvids/MVLiveClient.java @@ -1,5 +1,6 @@ package ctbrec.sites.manyvids; +import static ctbrec.StringUtil.*; import static ctbrec.io.HttpConstants.*; import static ctbrec.sites.manyvids.MVLive.*; @@ -182,7 +183,7 @@ public class MVLiveClient { String respJson = jsonArray.getString(i); JSONObject response = new JSONObject(respJson); String address = response.optString("address"); - if (!address.isBlank()) { + if (isNotBlank(address)) { Message message = futureResponses.get(address); if (message != null) { message.handleResponse(response); diff --git a/common/src/main/java/ctbrec/sites/showup/Showup.java b/common/src/main/java/ctbrec/sites/showup/Showup.java index 3272c4e6..812a17a0 100644 --- a/common/src/main/java/ctbrec/sites/showup/Showup.java +++ b/common/src/main/java/ctbrec/sites/showup/Showup.java @@ -4,6 +4,7 @@ import static ctbrec.Model.State.*; import static ctbrec.io.HttpConstants.*; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.time.Duration; @@ -52,23 +53,21 @@ public class Showup extends AbstractSite { @Override public Model createModel(String name) { - // try { - // for (Model m : getModelList()) { - // if (Objects.equal(m.getName(), name)) { - // return m; - // } - // } - // } catch (IOException e) { - // throw new ModelNotFoundException(name, e); - // } - // throw new ModelNotFoundException(name); ShowupModel model = new ShowupModel(); model.setSite(this); model.setName(name); - model.setUrl(BASE_URL + '/' + URLEncoder.encode(name, StandardCharsets.UTF_8)); + model.setUrl(BASE_URL + '/' + safeUrlEncode(name)); return model; } + private String safeUrlEncode(String s) { + try { + return URLEncoder.encode(s, StandardCharsets.UTF_8.name()); + } catch (UnsupportedEncodingException e) { + return s; + } + } + public List getModelList() throws IOException { if(Duration.between(lastModelListUpdate, Instant.now()).getSeconds() > 10) { lastModelListUpdate = Instant.now(); diff --git a/common/src/test/java/ctbrec/sites/mfc/MyFreeCamsClientTest.java b/common/src/test/java/ctbrec/sites/mfc/MyFreeCamsClientTest.java index 7e171ffa..76633e43 100644 --- a/common/src/test/java/ctbrec/sites/mfc/MyFreeCamsClientTest.java +++ b/common/src/test/java/ctbrec/sites/mfc/MyFreeCamsClientTest.java @@ -8,6 +8,7 @@ import org.json.JSONObject; import org.junit.Test; import ctbrec.ReflectionUtil; +import ctbrec.StringUtil; public class MyFreeCamsClientTest { @@ -22,7 +23,7 @@ public class MyFreeCamsClientTest { assertEquals(439895060, msg.getReceiver()); assertEquals(1, msg.getArg1()); assertEquals(0, msg.getArg2()); - assertTrue(msg.getMessage().isBlank()); + assertTrue(StringUtil.isBlank(msg.getMessage())); input = new StringBuilder("00207820 439461784 439895060 12 507930 %7B%22lv%22%3A4%2C%22nm%22%3A%22Nivea%22%2C%22pid%22%3A1%2C%22sid%22%3A439461784%2C%22uid%22%3A507930%2C%22vs%22%3A12%2C%22u%22%3A%7B%22age%22%3A33%2C%22avatar%22%3A1%2C%22blurb%22%3A%22I%20love%20when%20my%20nose%20touch%20your%20belly%20when%20I%20do%20you%20a%20blowjob!%20When%20I%20look%20into%20your%20horny%20eyes%20when%22%2C%22camserv%22%3A1367%2C%22chat_color%22%3A%22FF0000%22%2C%22chat_font%22%3A0%2C%22chat_opt%22%3A1%2C%22ethnic%22%3A%22Caucasian%22%2C%22photos%22%3A74%2C%22profile%22%3A1%2C%22status%22%3A%22%22%7D%2C%22m%22%3A%7B%22camscore%22%3A7505.700%2C%22continent%22%3A%22EU%22%2C%22flags%22%3A605224%2C%22hidecs%22%3Atrue%2C%22kbit%22%3A0%2C%22lastnews%22%3A0%2C%22mg%22%3A0%2C%22missmfc%22%3A2%2C%22new_model%22%3A0%2C%22rank%22%3A0%2C%22rc%22%3A20%2C%22sfw%22%3A0%2C%22topic%22%3A%22hi%253A)%255Bnone%255D-Topless%252C500-snap4life%252C50-spanks%252C180-flash%252C700-10%2520mins%2520of%2520Nora%2520fun%252C666-shot%252C27%252C270%2520%253C3%22%7D%2C%22x%22%3A%7B%22fcext%22%3A%7B%22sm%22%3A%22%22%2C%22sfw%22%3A0%7D%2C%22share%22%3A%7B%22follows%22%3A11%2C%22albums%22%3A0%2C%22clubs%22%3A0%2C%22tm_album%22%3A0%2C%22collections%22%3A0%2C%22stores%22%3A0%2C%22goals%22%3A0%2C%22polls%22%3A0%2C%22things%22%3A0%2C%22recent_album_tm%22%3A0%2C%22recent_club_tm%22%3A0%2C%22recent_collection_tm%22%3A0%2C%22recent_goal_tm%22%3A0%2C%22recent_item_tm%22%3A0%2C%22recent_poll_tm%22%3A0%2C%22recent_story_tm%22%3A0%2C%22recent_album_thumb%22%3A%22%22%2C%22recent_club_thumb%22%3A%22%22%2C%22recent_collection_thumb%22%3A%22%22%2C%22recent_goal_thumb%22%3A%22%22%2C%22recent_item_thumb%22%3A%22%22%2C%22recent_poll_thumb%22%3A%22%22%2C%22recent_story_thumb%22%3A%22%22%2C%22recent_album_title%22%3A%22%22%2C%22recent_club_title%22%3A%22%22%2C%22recent_collection_title%22%3A%22%22%2C%22recent_goal_title%22%3A%22%22%2C%22recent_item_title%22%3A%22%22%2C%22recent_poll_title%22%3A%22%22%2C%22recent_story_title%22%3A%22%22%2C%22recent_album_slug%22%3A%22%22%2C%22recent_collection_slug%22%3A%22%22%2C%22tipmenus%22%3A0%7D%7D%7D"); msg = ReflectionUtil.call(client, "parseMessage", input);