]> git.stg.codes - stg.git/commitdiff
Implemented send-message.
authorMaxim Mamontov <faust.madf@gmail.com>
Thu, 29 May 2014 15:05:42 +0000 (18:05 +0300)
committerMaxim Mamontov <faust.madf@gmail.com>
Thu, 29 May 2014 15:05:42 +0000 (18:05 +0300)
projects/sgconf/users.cpp
stglibs/srvconf.lib/servconf.cpp

index 680625c232f24ffc3c88d9a55251085c69e570af..8b341b6f89252cf84975424dfe9909dd1ab1bcc5 100644 (file)
@@ -216,12 +216,25 @@ return proto.CheckUser(arg, it->second, SimpleCallback, NULL) == STG::st_ok;
 }
 
 bool SendMessageFunction(const SGCONF::CONFIG & config,
-                         const std::string & arg,
+                         const std::string & /*arg*/,
                          const std::map<std::string, std::string> & options)
 {
-// TODO
-std::cerr << "Unimplemented.\n";
-return false;
+std::map<std::string, std::string>::const_iterator it(options.find("logins"));
+if (it == options.end())
+    throw SGCONF::ACTION::ERROR("Logins are not specified.");
+std::string logins = it->second;
+for (size_t i = 0; i < logins.length(); ++i)
+    if (logins[i] == ',')
+        logins[i] = ':';
+it = options.find("text");
+if (it == options.end())
+    throw SGCONF::ACTION::ERROR("Message text is not specified.");
+std::string text = it->second;
+STG::SERVCONF proto(config.server.data(),
+                    config.port.data(),
+                    config.userName.data(),
+                    config.userPass.data());
+return proto.SendMessage(logins, text, SimpleCallback, NULL) == STG::st_ok;
 }
 
 } // namespace anonymous
index e7ecfdf4d75a4b0d74b08fd2361336200b665599..915691cf62053f546ac6f7819a508339dfd17a42 100644 (file)
@@ -237,7 +237,7 @@ return pImpl->Exec<AUTH_BY::PARSER>("<GetUserAuthBy login=\"" + login + "\"/>",
 
 int SERVCONF::SendMessage(const std::string & login, const std::string & text, SIMPLE::CALLBACK f, void * data)
 {
-return pImpl->Exec<SIMPLE::PARSER>("SendMessage", "<Message login=\"" + login + "\" msgver=\"1\" msgtype=\"1\" repeat=\"0\" repeatperiod=\"0\" showtime=\"0\" text=\"" + Encode12str(text) + "\"/>", f, data);
+return pImpl->Exec<SIMPLE::PARSER>("SendMessageResult", "<Message login=\"" + login + "\" msgver=\"1\" msgtype=\"1\" repeat=\"0\" repeatperiod=\"0\" showtime=\"0\" text=\"" + Encode12str(text) + "\"/>", f, data);
 }
 
 int SERVCONF::CheckUser(const std::string & login, const std::string & password, SIMPLE::CALLBACK f, void * data)