#include "parser_user_info.h"
+#include "stg/users.h"
#include "stg/user.h"
-#include "stg/common.h"
#include <strings.h> // strcasecmp
-int PARSER_USER_INFO::ParseStart(void * /*data*/, const char *el, const char **attr)
-{
-login.clear();
-if (strcasecmp(el, "GetUserInfo") != 0)
- return -1;
-
-if (!attr[0] || !attr[1] || strcasecmp(attr[0], "login") != 0)
- return -1;
+using STG::PARSER::USER_INFO;
-login = attr[1];
-return 0;
-}
+const char * USER_INFO::tag = "GetUserInfo";
-int PARSER_USER_INFO::ParseEnd(void * /*data*/, const char *el)
+int USER_INFO::Start(void * /*data*/, const char *el, const char **attr)
{
-if (strcasecmp(el, "GetUserInfo") != 0)
- return -1;
+ if (strcasecmp(el, m_tag.c_str()) != 0)
+ return -1;
-CreateAnswer();
-return 0;
+ if (!attr[1])
+ return -1;
+
+ m_login = attr[1];
+ return 0;
}
-void PARSER_USER_INFO::CreateAnswer()
+void USER_INFO::CreateAnswer()
{
-answerList->clear();
-
-CONST_USER_PTR u;
-if (users->FindByName(login, &u))
+ using ConstUserPtr = const User*;
+ ConstUserPtr u;
+ if (m_users.FindByName(m_login, &u))
{
- answerList->push_back("<UserInfo result=\"error\"/>");
- return;
+ m_answer = "<UserInfo result=\"error\"/>";
+ return;
}
-std::string s = "<UserInfo lastAuthTime=\"" + x2str(u->GetAuthorizedModificationTime()) + "\"" +
- " lastDisconnectTime=\"" + x2str(u->GetConnectedModificationTime()) + "\"" +
- " connected=\"" + (u->GetConnected() ? "true" : "false") + "\"" +
- " lastDisconnectReason=\"" + u->GetLastDisconnectReason() + "\">";
-std::vector<std::string> list(u->GetAuthorizers());
-for (std::vector<std::string>::const_iterator it = list.begin(); it != list.end(); ++it)
- s += "<Auth name=\"" + *it + "\"/>";
-s += "</UserInfo>";
-answerList->push_back(s);
+ m_answer = "<UserInfo lastAuthTime=\"" + std::to_string(u->GetAuthorizedModificationTime()) + "\"" +
+ " lastDisconnectTime=\"" + std::to_string(u->GetConnectedModificationTime()) + "\"" +
+ " connected=\"" + (u->GetConnected() ? "true" : "false") + "\"" +
+ " lastDisconnectReason=\"" + u->GetLastDisconnectReason() + "\">";
+ std::vector<std::string> list(u->GetAuthorizers());
+ for (std::vector<std::string>::const_iterator it = list.begin(); it != list.end(); ++it)
+ m_answer += "<Auth name=\"" + *it + "\"/>";
+ m_answer += "</UserInfo>";
}