~singpolyma/biboumi

fbec16f1a208881ea49923287aae27978d79681e — Florent Le Coz 9 years ago e840704
Possibility to change a channel's topic
M src/bridge/bridge.cpp => src/bridge/bridge.cpp +7 -0
@@ 156,6 156,13 @@ void Bridge::send_irc_kick(const Iid& iid, const std::string& target, const std:
    irc->send_kick_command(iid.chan, target, reason);
}

void Bridge::set_channel_topic(const Iid& iid, const std::string& subject)
{
  IrcClient* irc = this->get_irc_client(iid.server);
  if (irc)
    irc->send_topic_command(iid.chan, subject);
}

void Bridge::send_message(const Iid& iid, const std::string& nick, const std::string& body, const bool muc)
{
  if (muc)

M src/bridge/bridge.hpp => src/bridge/bridge.hpp +1 -0
@@ 49,6 49,7 @@ public:
  void leave_irc_channel(Iid&& iid, std::string&& status_message);
  void send_irc_nick_change(const Iid& iid, const std::string& new_nick);
  void send_irc_kick(const Iid& iid, const std::string& target, const std::string& reason);
  void set_channel_topic(const Iid& iid, const std::string& subject);

  /***
   **

M src/irc/irc_client.cpp => src/irc/irc_client.cpp +5 -0
@@ 122,6 122,11 @@ void IrcClient::send_kick_command(const std::string& chan_name, const std::strin
  this->send_message(IrcMessage("KICK", {chan_name, target, reason}));
}

void IrcClient::send_topic_command(const std::string& chan_name, const std::string& topic)
{
  this->send_message(IrcMessage("TOPIC", {chan_name, topic}));
}

void IrcClient::send_quit_command()
{
  this->send_message(IrcMessage("QUIT", {"gateway shutdown"}));

M src/irc/irc_client.hpp => src/irc/irc_client.hpp +1 -0
@@ 97,6 97,7 @@ public:
   * Send the KICK irc command
   */
  void send_kick_command(const std::string& chan_name, const std::string& target, const std::string& reason);
  void send_topic_command(const std::string& chan_name, const std::string& topic);
  /**
   * Send the QUIT irc command
   */

M src/xmpp/xmpp_component.cpp => src/xmpp/xmpp_component.cpp +3 -0
@@ 217,6 217,9 @@ void XmppComponent::handle_message(const Stanza& stanza)
      if (to.resource.empty())
        if (body && !body->get_inner().empty())
          bridge->send_channel_message(iid, body->get_inner());
      XmlNode* subject = stanza.get_child(COMPONENT_NS":subject");
      if (subject)
        bridge->set_channel_topic(iid, subject->get_inner());
    }
  else
    {