From 1695469b2c2d0f72ef63ad72070a464e42b2086a Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Wed, 15 Feb 2023 23:56:05 +0300 Subject: Parse old Pidgin urls --- src/main/java/com/juick/util/MessageUtils.java | 12 +++++++----- src/test/java/com/juick/server/tests/ServerTests.java | 11 ++++++++++- src/test/resources/message_group_reference.json | 1 + 3 files changed, 18 insertions(+), 6 deletions(-) create mode 100644 src/test/resources/message_group_reference.json diff --git a/src/main/java/com/juick/util/MessageUtils.java b/src/main/java/com/juick/util/MessageUtils.java index 3651540e..a04dc24f 100644 --- a/src/main/java/com/juick/util/MessageUtils.java +++ b/src/main/java/com/juick/util/MessageUtils.java @@ -68,7 +68,7 @@ public class MessageUtils { private final static String urlWithWhitespacesRegex = urlWhiteSpacePrefix + urlRegex; - private final static Pattern regexLinks2 = Pattern.compile("((?<=\\s)|(?<=\\A))([\\[\\{]|<)((?:ht|f)tps?:\\/\\/(?:www\\.)?([^\\/\\s\\\"\\)\\!>]*)\\/?(?:[^\\]\\}](?]+)\\*((?=\\s)|(?=\\Z)|(?=\\p{Punct}))"; private final static String italicRegex = "((?<=\\s)|(?<=\\A))/([^\\/\\n<>]+)/((?=\\s)|(?=\\Z)|(?=\\p{Punct}))"; @@ -169,9 +169,11 @@ public class MessageUtils { // [link text][http://juick.com/last?page=2] // [link text](http://juick.com/last?page=2) + // www.juick.com // link text msg = msg.replaceAll(textUrlRegex, "$1"); msg = msg.replaceAll(textUrlRegex2, "$1"); + msg = msg.replaceAll(pidginUrlRegex, "$1"); // #12345 // #12345 @@ -218,7 +220,7 @@ public class MessageUtils { Matcher m = regexLinks2.matcher(msg); StringBuffer sb = new StringBuffer(); while (m.find()) { - String url = m.group(3).replace(" ", "%20").replaceAll("\\s+", StringUtils.EMPTY); + String url = m.group(3).replace(" ", "%20").replace("$", "%36").replaceAll("\\s+", StringUtils.EMPTY); m.appendReplacement(sb, "$1$2$4$5"); } m.appendTail(sb); diff --git a/src/test/java/com/juick/server/tests/ServerTests.java b/src/test/java/com/juick/server/tests/ServerTests.java index f297ee2e..e97f4a20 100644 --- a/src/test/java/com/juick/server/tests/ServerTests.java +++ b/src/test/java/com/juick/server/tests/ServerTests.java @@ -122,7 +122,6 @@ import java.nio.file.*; import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.security.spec.InvalidKeySpecException; -import java.sql.Timestamp; import java.time.Instant; import java.time.ZoneOffset; import java.time.temporal.ChronoUnit; @@ -234,6 +233,8 @@ public class ServerTests { private Resource sapeOutput; @Value("classpath:friendica_update.json") private Resource friendicaUpdate; + @Value("classpath:message_group_reference.json") + private Resource groupReferenceMessage; @Inject AppleClientSecretGenerator clientSecretGenerator; @Inject @@ -2651,4 +2652,12 @@ public class ServerTests { assertThat(tagService.getTag(first, true).getName(), is(first)); assertThat(tagService.getTag(second, true).getName(), is(second)); } + @Test + public void testPidginLinks() throws IOException { + String msgData = IOUtils.toString(groupReferenceMessage.getInputStream(), StandardCharsets.UTF_8); + Message msg = jsonMapper.readValue(msgData, Message.class); + String output = MessageUtils.formatMessage(msg.getText()); + assertThat(output, is("К вопросу об опросах типа \"За кого бы вы проголосовали\" и \"Согласны ли вы с результатами\"...
\n" + + "Напоминает один старый опрос: опрос на сайте www.$somesite$.ru показал, что 100% Россиян использует интернет.")); + } } diff --git a/src/test/resources/message_group_reference.json b/src/test/resources/message_group_reference.json new file mode 100644 index 00000000..e3c9693e --- /dev/null +++ b/src/test/resources/message_group_reference.json @@ -0,0 +1 @@ +{"user":{"avatar":"https://juick.com/i/a/287-a38e60ff15cd4d0bf1a9c8dbf81b2c0e.png","uri":"","uid":287,"uname":"datacompboy"},"updated":"2011-12-08T20:52:21Z","replies":1,"to":{"uri":"","uname":"Anonymous"},"replyUri":"","mid":1662739,"body":"К вопросу об опросах типа \"За кого бы вы проголосовали\" и \"Согласны ли вы с результатами\"...\nНапоминает один старый опрос: опрос на сайте www.$somesite$.ru показал, что 100% Россиян использует интернет.","timestamp":"2011-12-08 17:29:51","updated_at":"2011-12-08 17:29:51","repliesby":"@alv"} -- cgit v1.2.3