using namespace STG;
-GET_SERVICE::PARSER::PARSER(CALLBACK f, void * d)
+GET_SERVICE::PARSER::PARSER(CALLBACK f, void * d, const std::string & e)
: callback(f),
data(d),
+ encoding(e),
depth(0),
parsingAnswer(false)
{
AddParser(propertyParsers, "name", info.name);
- AddParser(propertyParsers, "comment", info.comment);
+ AddParser(propertyParsers, "comment", info.comment, GetEncodedValue);
AddParser(propertyParsers, "cost", info.cost);
AddParser(propertyParsers, "payDay", info.payDay);
}
if (depth == 1)
ParseService(el, attr);
-if (depth == 2 && parsingAnswer)
- ParseServiceParams(el, attr);
+/*if (depth == 2 && parsingAnswer)
+ ParseServiceParams(el, attr);*/
return 0;
}
error = "Service not found.";
}
else
+ {
parsingAnswer = true;
+ for (const char ** pos = attr; *pos != NULL; pos = pos + 2)
+ if (!TryParse(propertyParsers, ToLower(*pos), pos, encoding, *pos))
+ {
+ error = std::string("Invalid parameter '") + *pos + "' or value '" + *(pos + 1) + "'.";
+ break;
+ }
+ else
+ printfd(__FILE__, "Parsed '%s' successfully.\n", *pos);
+ }
}
else
parsingAnswer = true;
}
}
//-----------------------------------------------------------------------------
-void GET_SERVICE::PARSER::ParseServiceParams(const char * el, const char ** attr)
+/*void GET_SERVICE::PARSER::ParseServiceParams(const char * el, const char ** attr)
{
-if (!TryParse(propertyParsers, ToLower(el), attr))
+if (!TryParse(propertyParsers, ToLower(el), attr, encoding))
error = "Invalid parameter.";
-}
+}*/