#include "xml.h"
+#include "config.h"
+
+#include "stg/servconf.h"
+
+#include <iostream>
+
#include <expat.h>
namespace
size_t level;
};
-std::string Indent(size_t size)
+std::string Indent(size_t level)
{
return std::string(level * 4, ' ');
}
{
ParserState * state = static_cast<ParserState *>(data);
if (el != NULL)
- std::cout << Indent(state->level) << "<" << el << PrintAttrs(attr) << ">\n";
+ std::cout << Indent(state->level) << "<" << el << PrintAttr(attr) << ">\n";
++state->level;
}
void End(void * data, const char * el)
{
ParserState * state = static_cast<ParserState *>(data);
+--state->level;
if (el != NULL)
std::cout << Indent(state->level) << "</" << el << ">\n";
---state->level;
+}
+
+void RawXMLCallback(bool result, const std::string & reason, const std::string & response, void * /*data*/)
+{
+if (!result)
+ {
+ std::cerr << "Failed to get raw XML response. Reason: '" << reason << "'." << std::endl;
+ return;
+ }
+SGCONF::PrintXML(response);
}
}
XML_SetUserData(parser, &state);
if (XML_Parse(parser, xml.c_str(), xml.length(), true) == XML_STATUS_ERROR)
- std::cerr << "XML parse error at line " << XML_GetCurrentLineNumber(sc->parser)
- << ": '" << XML_ErrorString(XML_GetErrorCode(sc->parser)) << "'"
+ std::cerr << "XML parse error at line " << XML_GetCurrentLineNumber(parser)
+ << ": '" << XML_ErrorString(XML_GetErrorCode(parser)) << "'"
<< std::endl;
XML_ParserFree(parser);
}
+
+bool SGCONF::RawXMLFunction(const SGCONF::CONFIG & config,
+ const std::string & arg,
+ const std::map<std::string, std::string> & /*options*/)
+{
+ STG::SERVCONF proto(config.server.data(),
+ config.port.data(),
+ config.userName.data(),
+ config.userPass.data());
+ return proto.RawXML(arg, RawXMLCallback, NULL) == STG::st_ok;
+}