Move headline sending login to backend
This commit is contained in:
parent
0b0e020cdf
commit
761c746d10
7 changed files with 45 additions and 16 deletions
|
@ -652,22 +652,20 @@ void TwitterPlugin::displayFriendlist(std::string &user, std::vector<User> &frie
|
||||||
void TwitterPlugin::displayTweets(std::string &user, std::string &userRequested, std::vector<Status> &tweets , Error &errMsg)
|
void TwitterPlugin::displayTweets(std::string &user, std::string &userRequested, std::vector<Status> &tweets , Error &errMsg)
|
||||||
{
|
{
|
||||||
if(errMsg.getMessage().length() == 0) {
|
if(errMsg.getMessage().length() == 0) {
|
||||||
|
|
||||||
std::string timeline = "";
|
|
||||||
std::map<std::string, int> lastTweet;
|
std::map<std::string, int> lastTweet;
|
||||||
std::map<std::string, int>::iterator it;
|
std::map<std::string, int>::iterator it;
|
||||||
|
|
||||||
for(int i = tweets.size() - 1 ; i >= 0 ; i--) {
|
for(int i = tweets.size() - 1 ; i >= 0 ; i--) {
|
||||||
if(userdb[user].twitterMode != CHATROOM) {
|
if(userdb[user].twitterMode != CHATROOM) {
|
||||||
std::string m = " - " + tweets[i].getUserData().getScreenName() + ": " + tweets[i].getTweet() + " (MsgId: " + (tweets[i].getRetweetID().empty() ? tweets[i].getID() : tweets[i].getRetweetID()) + ")\n";
|
std::string m = " - " + tweets[i].getUserData().getScreenName() + ": " + tweets[i].getTweet() + " (MsgId: " + (tweets[i].getRetweetID().empty() ? tweets[i].getID() : tweets[i].getRetweetID()) + ")\n";
|
||||||
handleMessage(user, adminLegacyName, m, "", "", tweets[i].getCreationTime());
|
handleMessage(user, adminLegacyName, m, "", "", tweets[i].getCreationTime(), true);
|
||||||
|
|
||||||
std::string scrname = tweets[i].getUserData().getScreenName();
|
std::string scrname = tweets[i].getUserData().getScreenName();
|
||||||
if(lastTweet.count(scrname) == 0 || cmp(tweets[lastTweet[scrname]].getID(), tweets[i].getID()) <= 0) lastTweet[scrname] = i;
|
if(lastTweet.count(scrname) == 0 || cmp(tweets[lastTweet[scrname]].getID(), tweets[i].getID()) <= 0) lastTweet[scrname] = i;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName,
|
handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName,
|
||||||
tweets[i].getTweet() + " (MsgId: " + (tweets[i].getRetweetID().empty() ? tweets[i].getID() : tweets[i].getRetweetID()) + ")", tweets[i].getUserData().getScreenName(), "", tweets[i].getCreationTime());
|
tweets[i].getTweet() + " (MsgId: " + (tweets[i].getRetweetID().empty() ? tweets[i].getID() : tweets[i].getRetweetID()) + ")", tweets[i].getUserData().getScreenName(), "", tweets[i].getCreationTime(), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -685,8 +683,6 @@ void TwitterPlugin::displayTweets(std::string &user, std::string &userRequested,
|
||||||
if(tweetID != tweets[0].getID()) updateLastTweetID(user, tweets[0].getID());
|
if(tweetID != tweets[0].getID()) updateLastTweetID(user, tweets[0].getID());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(timeline.length()) handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName,
|
|
||||||
timeline, userdb[user].twitterMode == CHATROOM ? adminNickName : "");
|
|
||||||
} else handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName,
|
} else handleMessage(user, userdb[user].twitterMode == CHATROOM ? adminChatRoom : adminLegacyName,
|
||||||
errMsg.getMessage(), userdb[user].twitterMode == CHATROOM ? adminNickName : "");
|
errMsg.getMessage(), userdb[user].twitterMode == CHATROOM ? adminNickName : "");
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,7 +111,7 @@ class NetworkPlugin {
|
||||||
/// \param message Plain text message.
|
/// \param message Plain text message.
|
||||||
/// \param nickname Nickname of buddy in room. Empty if it's normal chat message.
|
/// \param nickname Nickname of buddy in room. Empty if it's normal chat message.
|
||||||
/// \param xhtml XHTML message.
|
/// \param xhtml XHTML message.
|
||||||
void handleMessage(const std::string &user, const std::string &legacyName, const std::string &message, const std::string &nickname = "", const std::string &xhtml = "", const std::string ×tamp = "");
|
void handleMessage(const std::string &user, const std::string &legacyName, const std::string &message, const std::string &nickname = "", const std::string &xhtml = "", const std::string ×tamp = "", bool headline = false);
|
||||||
|
|
||||||
/// Call this function when subject in room changed.
|
/// Call this function when subject in room changed.
|
||||||
/// \param user XMPP JID of user for which this event occurs. You can get it from NetworkPlugin::handleLoginRequest(). (eg. "user%gmail.com@xmpp.domain.tld")
|
/// \param user XMPP JID of user for which this event occurs. You can get it from NetworkPlugin::handleLoginRequest(). (eg. "user%gmail.com@xmpp.domain.tld")
|
||||||
|
|
|
@ -82,7 +82,7 @@ void NetworkPlugin::sendConfig(const PluginConfig &cfg) {
|
||||||
send(message);
|
send(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkPlugin::handleMessage(const std::string &user, const std::string &legacyName, const std::string &msg, const std::string &nickname, const std::string &xhtml, const std::string ×tamp) {
|
void NetworkPlugin::handleMessage(const std::string &user, const std::string &legacyName, const std::string &msg, const std::string &nickname, const std::string &xhtml, const std::string ×tamp, bool headline) {
|
||||||
pbnetwork::ConversationMessage m;
|
pbnetwork::ConversationMessage m;
|
||||||
m.set_username(user);
|
m.set_username(user);
|
||||||
m.set_buddyname(legacyName);
|
m.set_buddyname(legacyName);
|
||||||
|
@ -90,6 +90,7 @@ void NetworkPlugin::handleMessage(const std::string &user, const std::string &le
|
||||||
m.set_nickname(nickname);
|
m.set_nickname(nickname);
|
||||||
m.set_xhtml(xhtml);
|
m.set_xhtml(xhtml);
|
||||||
m.set_timestamp(timestamp);
|
m.set_timestamp(timestamp);
|
||||||
|
m.set_headline(headline);
|
||||||
|
|
||||||
std::string message;
|
std::string message;
|
||||||
m.SerializeToString(&message);
|
m.SerializeToString(&message);
|
||||||
|
|
|
@ -82,14 +82,14 @@ void Conversation::handleMessage(boost::shared_ptr<Swift::Message> &message, con
|
||||||
message->setType(Swift::Message::Groupchat);
|
message->setType(Swift::Message::Groupchat);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (message->getType() != Swift::Message::Headline) {
|
if (message->getType() == Swift::Message::Headline) {
|
||||||
if (m_conversationManager->getUser()->getUserSetting("send_headlines") == "1") {
|
if (m_conversationManager->getUser()->getUserSetting("send_headlines") != "1") {
|
||||||
message->setType(Swift::Message::Headline);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
message->setType(Swift::Message::Chat);
|
message->setType(Swift::Message::Chat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
message->setType(Swift::Message::Chat);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string n = nickname;
|
std::string n = nickname;
|
||||||
|
|
|
@ -43,7 +43,7 @@ SettingsAdHocCommand::SettingsAdHocCommand(Component *component, UserManager *us
|
||||||
|
|
||||||
field = Swift::BooleanFormField::create(CONFIG_STRING_DEFAULTED(component->getConfig(), "settings.send_headlines", "0") == "1");
|
field = Swift::BooleanFormField::create(CONFIG_STRING_DEFAULTED(component->getConfig(), "settings.send_headlines", "0") == "1");
|
||||||
field->setName("send_headlines");
|
field->setName("send_headlines");
|
||||||
field->setLabel("Send messages as headlines");
|
field->setLabel("Allow sending messages as headlines");
|
||||||
addFormField(field);
|
addFormField(field);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -215,6 +215,7 @@ class ConversationManagerTest : public CPPUNIT_NS :: TestFixture, public BasicTe
|
||||||
|
|
||||||
boost::shared_ptr<Swift::Message> msg(new Swift::Message());
|
boost::shared_ptr<Swift::Message> msg(new Swift::Message());
|
||||||
msg->setBody("hi there<>!");
|
msg->setBody("hi there<>!");
|
||||||
|
msg->setType(Swift::Message::Headline);
|
||||||
|
|
||||||
// Forward it
|
// Forward it
|
||||||
conv->handleMessage(msg);
|
conv->handleMessage(msg);
|
||||||
|
@ -229,19 +230,20 @@ class ConversationManagerTest : public CPPUNIT_NS :: TestFixture, public BasicTe
|
||||||
|
|
||||||
received.clear();
|
received.clear();
|
||||||
user->addUserSetting("send_headlines", "0");
|
user->addUserSetting("send_headlines", "0");
|
||||||
// Forward it - Conversation should keep the Headline type, because msg->getType() is Headline
|
// Forward it
|
||||||
conv->handleMessage(msg);
|
conv->handleMessage(msg);
|
||||||
loop->processEvents();
|
loop->processEvents();
|
||||||
|
|
||||||
CPPUNIT_ASSERT_EQUAL(1, (int) received.size());
|
CPPUNIT_ASSERT_EQUAL(1, (int) received.size());
|
||||||
CPPUNIT_ASSERT(dynamic_cast<Swift::Message *>(getStanza(received[0])));
|
CPPUNIT_ASSERT(dynamic_cast<Swift::Message *>(getStanza(received[0])));
|
||||||
CPPUNIT_ASSERT_EQUAL(Swift::Message::Headline, dynamic_cast<Swift::Message *>(getStanza(received[0]))->getType());
|
CPPUNIT_ASSERT_EQUAL(Swift::Message::Chat, dynamic_cast<Swift::Message *>(getStanza(received[0]))->getType());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("hi there<>!"), dynamic_cast<Swift::Message *>(getStanza(received[0]))->getBody());
|
CPPUNIT_ASSERT_EQUAL(std::string("hi there<>!"), dynamic_cast<Swift::Message *>(getStanza(received[0]))->getBody());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("user@localhost"), dynamic_cast<Swift::Message *>(getStanza(received[0]))->getTo().toString());
|
CPPUNIT_ASSERT_EQUAL(std::string("user@localhost"), dynamic_cast<Swift::Message *>(getStanza(received[0]))->getTo().toString());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("buddy1\\40test@localhost/bot"), dynamic_cast<Swift::Message *>(getStanza(received[0]))->getFrom().toString());
|
CPPUNIT_ASSERT_EQUAL(std::string("buddy1\\40test@localhost/bot"), dynamic_cast<Swift::Message *>(getStanza(received[0]))->getFrom().toString());
|
||||||
|
|
||||||
received.clear();
|
received.clear();
|
||||||
msg->setType(Swift::Message::Chat);
|
msg->setType(Swift::Message::Chat);
|
||||||
|
user->addUserSetting("send_headlines", "1");
|
||||||
// Forward it
|
// Forward it
|
||||||
conv->handleMessage(msg);
|
conv->handleMessage(msg);
|
||||||
loop->processEvents();
|
loop->processEvents();
|
||||||
|
|
|
@ -30,6 +30,7 @@ class NetworkPluginServerTest : public CPPUNIT_NS :: TestFixture, public BasicTe
|
||||||
CPPUNIT_TEST(handleBuddyChangedPayload);
|
CPPUNIT_TEST(handleBuddyChangedPayload);
|
||||||
CPPUNIT_TEST(handleBuddyChangedPayloadNoEscaping);
|
CPPUNIT_TEST(handleBuddyChangedPayloadNoEscaping);
|
||||||
CPPUNIT_TEST(handleBuddyChangedPayloadUserContactInRoster);
|
CPPUNIT_TEST(handleBuddyChangedPayloadUserContactInRoster);
|
||||||
|
CPPUNIT_TEST(handleMessageHeadline);
|
||||||
CPPUNIT_TEST_SUITE_END();
|
CPPUNIT_TEST_SUITE_END();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -104,6 +105,35 @@ class NetworkPluginServerTest : public CPPUNIT_NS :: TestFixture, public BasicTe
|
||||||
serv->handleBuddyChangedPayload(message);
|
serv->handleBuddyChangedPayload(message);
|
||||||
CPPUNIT_ASSERT_EQUAL(0, (int) received.size());
|
CPPUNIT_ASSERT_EQUAL(0, (int) received.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void handleMessageHeadline() {
|
||||||
|
User *user = userManager->getUser("user@localhost");
|
||||||
|
|
||||||
|
pbnetwork::ConversationMessage m;
|
||||||
|
m.set_username("user@localhost");
|
||||||
|
m.set_buddyname("user");
|
||||||
|
m.set_message("msg");
|
||||||
|
m.set_nickname("");
|
||||||
|
m.set_xhtml("");
|
||||||
|
m.set_timestamp("");
|
||||||
|
m.set_headline(true);
|
||||||
|
|
||||||
|
std::string message;
|
||||||
|
m.SerializeToString(&message);
|
||||||
|
|
||||||
|
serv->handleConvMessagePayload(message, false);
|
||||||
|
CPPUNIT_ASSERT_EQUAL(1, (int) received.size());
|
||||||
|
CPPUNIT_ASSERT(dynamic_cast<Swift::Message *>(getStanza(received[0])));
|
||||||
|
CPPUNIT_ASSERT_EQUAL(Swift::Message::Chat, dynamic_cast<Swift::Message *>(getStanza(received[0]))->getType());
|
||||||
|
|
||||||
|
received.clear();
|
||||||
|
user->addUserSetting("send_headlines", "1");
|
||||||
|
serv->handleConvMessagePayload(message, false);
|
||||||
|
CPPUNIT_ASSERT_EQUAL(1, (int) received.size());
|
||||||
|
CPPUNIT_ASSERT(dynamic_cast<Swift::Message *>(getStanza(received[0])));
|
||||||
|
CPPUNIT_ASSERT_EQUAL(Swift::Message::Headline, dynamic_cast<Swift::Message *>(getStanza(received[0]))->getType());
|
||||||
|
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
CPPUNIT_TEST_SUITE_REGISTRATION (NetworkPluginServerTest);
|
CPPUNIT_TEST_SUITE_REGISTRATION (NetworkPluginServerTest);
|
||||||
|
|
Loading…
Add table
Reference in a new issue