summaryrefslogtreecommitdiff
path: root/protocols
diff options
context:
space:
mode:
Diffstat (limited to 'protocols')
-rw-r--r--protocols/Twitter/src/StringUtil.cpp10
-rw-r--r--protocols/Twitter/src/StringUtil.h2
-rw-r--r--protocols/Twitter/src/twitter.cpp14
3 files changed, 18 insertions, 8 deletions
diff --git a/protocols/Twitter/src/StringUtil.cpp b/protocols/Twitter/src/StringUtil.cpp
index 61cb9adbd2..0ac892cd1f 100644
--- a/protocols/Twitter/src/StringUtil.cpp
+++ b/protocols/Twitter/src/StringUtil.cpp
@@ -86,3 +86,13 @@ std::string& replaceAll(std::string& context, const std::string& from, const std
}
return context;
}
+
+std::string& htmlEntitiesDecode(std::string& context)
+{
+ replaceAll(context, "&", "&");
+ replaceAll(context, """, "\"");
+ replaceAll(context, "&lt;", "<");
+ replaceAll(context, "&gt;", ">");
+
+ return context;
+} \ No newline at end of file
diff --git a/protocols/Twitter/src/StringUtil.h b/protocols/Twitter/src/StringUtil.h
index 643450b072..0fe42aedce 100644
--- a/protocols/Twitter/src/StringUtil.h
+++ b/protocols/Twitter/src/StringUtil.h
@@ -30,6 +30,8 @@ tstring GetWord(const tstring& str, unsigned index, bool getRest = false);
std::string& replaceAll(std::string& context, const std::string& from, const std::string& to);
+std::string& htmlEntitiesDecode(std::string& context);
+
inline std::string WideToUTF8(const std::wstring& str)
{
return (char*)ptrA(mir_utf8encodeW(str.c_str()));
diff --git a/protocols/Twitter/src/twitter.cpp b/protocols/Twitter/src/twitter.cpp
index 64eca48940..aa94f34dbb 100644
--- a/protocols/Twitter/src/twitter.cpp
+++ b/protocols/Twitter/src/twitter.cpp
@@ -240,19 +240,17 @@ std::vector<twitter_user> twitter::get_statuses(int count, twitter_id id)
std::string retweeteesName = pUser2["screen_name"].as_string(); // the user that is being retweeted
std::string retweetText = pRetweet["text"].as_string(); // their tweet in all it's untruncated glory
- // fix "&amp;" in the tweets :(
- for (size_t pos = 0; (pos = retweetText.find("&amp;", pos)) != std::string::npos; pos++)
- retweetText.replace(pos, 5, "&");
+ // fix html entities in the text
+ htmlEntitiesDecode(retweetText);
u.status.text = "RT @" + retweeteesName + " " + retweetText; // mash it together in some format people will understand
}
else {
- // if it's not truncated, then the twitter API returns the native RT correctly anyway,
+ // if it's not truncated, then the twitter API returns the native RT correctly anyway,
std::string rawText = one["text"].as_string();
- // ok here i'm trying some way to fix all the "&amp;" things that are showing up
- // i dunno why it's happening, so i'll just find and replace each occurance :/
- for (size_t pos = 0; (pos = rawText.find("&amp;", pos)) != std::string::npos; pos++)
- rawText.replace(pos, 5, "&");
+
+ // fix html entities in the text
+ htmlEntitiesDecode(rawText);
u.status.text = rawText;
}