From 94e8f3ebcc54787e7a7fd9eff376f098b6a584a4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Wed, 11 May 2011 07:11:48 +0200 Subject: [PATCH] Add simple string encoding. SimpleFieldSet can not handle LF characters. --- .../net/pterodactylus/sone/fcp/AbstractSoneCommand.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/pterodactylus/sone/fcp/AbstractSoneCommand.java b/src/main/java/net/pterodactylus/sone/fcp/AbstractSoneCommand.java index ed5aca8..8714417 100644 --- a/src/main/java/net/pterodactylus/sone/fcp/AbstractSoneCommand.java +++ b/src/main/java/net/pterodactylus/sone/fcp/AbstractSoneCommand.java @@ -99,6 +99,19 @@ public abstract class AbstractSoneCommand extends AbstractCommand { // /** + * Encodes text in a way that makes it possible for the text to be stored in + * a {@link SimpleFieldSet}. Backslashes, CR, and LF are prepended with a + * backslash. + * + * @param text + * The text to encode + * @return The encoded text + */ + protected String encodeString(String text) { + return text.replaceAll("\\\\", "\\\\").replaceAll("\n", "\\\\n").replaceAll("\r", "\\\\r"); + } + + /** * Returns a Sone whose ID is a parameter in the given simple field set. * * @param simpleFieldSet @@ -227,7 +240,7 @@ public abstract class AbstractSoneCommand extends AbstractCommand { postBuilder.put(prefix + "Recipient", post.getRecipient().getId()); } postBuilder.put(prefix + "Time", post.getTime()); - postBuilder.put(prefix + "Text", post.getText()); + postBuilder.put(prefix + "Text", encodeString(post.getText())); postBuilder.put(encodeLikes(core.getLikes(post), prefix + "Likes.")); if (includeReplies) { @@ -287,7 +300,7 @@ public abstract class AbstractSoneCommand extends AbstractCommand { replyBuilder.put(replyPrefix + "ID", reply.getId()); replyBuilder.put(replyPrefix + "Sone", reply.getSone().getId()); replyBuilder.put(replyPrefix + "Time", reply.getTime()); - replyBuilder.put(replyPrefix + "Text", reply.getText()); + replyBuilder.put(replyPrefix + "Text", encodeString(reply.getText())); } return replyBuilder.get(); -- 2.7.4