38 sLog.Debug(
"APIAdminManager::ProcessCall()",
"EVEmu API - Character Service Manager");
40 if( pAPICommandCall->find(
"servicehandler" ) == pAPICommandCall->end() )
42 sLog.Error(
"APICharacterManager::ProcessCall()",
"Cannot find 'servicehandler' specifier in pAPICommandCall packet" );
43 return std::tr1::shared_ptr<std::string>(
new std::string(
""));
46 if( pAPICommandCall->find(
"servicehandler" )->second ==
"CharacterSheet.xml.aspx" )
48 if( pAPICommandCall->find(
"servicehandler" )->second ==
"SkillQueue.xml.aspx" )
50 if( pAPICommandCall->find(
"servicehandler" )->second ==
"SkillInTraining.xml.aspx" )
56 sLog.Error(
"APIAdminManager::ProcessCall()",
"EVEmu API - Admin Service Manager - ERROR: Cannot resolve '%s' as a valid service query for Admin Service Manager",
57 pAPICommandCall->find(
"servicehandler")->second.c_str() );
58 return std::tr1::shared_ptr<std::string>(
new std::string(
""));
60 sLog.Debug(
"APICharacterManager::ProcessCall()",
"EVEmu API - Character Service Manager");
69 sLog.Error(
"APICharacterManager::_CharacterSheet()",
"TODO: Insert code to validate userID and apiKey" );
71 sLog.Debug(
"APICharacterManager::_CharacterSheet()",
"EVEmu API - Character Service Manager - CALL: CharacterSheet.xml.aspx");
73 if( pAPICommandCall->find(
"userid" ) == pAPICommandCall->end() )
75 sLog.Error(
"APICharacterManager::_CharacterSheet()",
"ERROR: No 'userID' parameter found in call argument list - exiting with error and sending back NOTHING" );
79 if( pAPICommandCall->find(
"apikey" ) == pAPICommandCall->end() )
81 sLog.Error(
"APICharacterManager::_CharacterSheet()",
"ERROR: No 'apiKey' parameter found in call argument list - exiting with error and sending back NOTHING" );
85 if( pAPICommandCall->find(
"characterid" ) == pAPICommandCall->end() )
87 sLog.Error(
"APICharacterManager::_CharacterSheet()",
"ERROR: No 'characterID' parameter found in call argument list - exiting with error and sending back NOTHING" );
92 uint32 characterID = atoi( pAPICommandCall->find(
"characterid" )->second.c_str() );
93 std::vector<std::string> skillTypeIDList;
94 std::vector<std::string> skillPointsList;
95 std::vector<std::string> skillLevelList;
96 std::vector<std::string> skillPublishedList;
99 std::vector<std::string> charInfoList;
102 std::map<std::string, std::string> charAttributes;
105 sLog.Error(
"APICharacterManager::_CharacterSheet()",
"INFO: Sections Currently hard-coded: attributeEnhancers, certificates, corporation roles" );
107 std::vector<std::string> rowset;
118 _BuildSingleXMLTag(
"gender", ( (atoi(charInfoList.at(14).c_str()) > 0) ?
"Male" :
"Female") );
180 rowset.push_back(
"typeID");
181 rowset.push_back(
"skillpoints");
182 rowset.push_back(
"level");
183 rowset.push_back(
"published");
186 for(i=0; i<skillTypeIDList.size(); i++)
189 rowset.push_back(skillTypeIDList.at(i));
190 rowset.push_back(skillPointsList.at(i));
191 rowset.push_back(skillLevelList.at(i));
192 rowset.push_back(skillPublishedList.at(i));
201 rowset.push_back(
"certificateID");
208 rowset.push_back(
"1");
234 sLog.Error(
"APICharacterManager::_SkillQueue()",
"TODO: Insert code to validate userID and apiKey" );
236 sLog.Debug(
"APICharacterManager::_SkillQueue()",
"EVEmu API - Character Service Manager - CALL: SkillQueue.xml.aspx");
238 if( pAPICommandCall->find(
"userid" ) == pAPICommandCall->end() )
240 sLog.Error(
"APICharacterManager::_SkillQueue()",
"ERROR: No 'userID' parameter found in call argument list - exiting with error and sending back NOTHING" );
244 if( pAPICommandCall->find(
"apikey" ) == pAPICommandCall->end() )
246 sLog.Error(
"APICharacterManager::_SkillQueue()",
"ERROR: No 'apiKey' parameter found in call argument list - exiting with error and sending back NOTHING" );
250 if( pAPICommandCall->find(
"characterid" ) == pAPICommandCall->end() )
252 sLog.Error(
"APICharacterManager::_SkillQueue()",
"ERROR: No 'characterID' parameter found in call argument list - exiting with error and sending back NOTHING" );
257 uint32 characterID = atoi( pAPICommandCall->find(
"characterid" )->second.c_str() );
259 std::map<std::string, std::string> charLearningAttributesString;
260 std::map<uint32, uint32> charLearningAttributes;
262 charLearningAttributes.insert( std::pair<uint32, uint32>(
AttrMemory, ((
uint32)(atoi(charLearningAttributesString.find(std::string(
itoa(
AttrMemory)))->second.c_str()))) ));
264 charLearningAttributes.insert( std::pair<uint32, uint32>(
AttrCharisma, ((
uint32)(atoi(charLearningAttributesString.find(std::string(
itoa(
AttrCharisma)))->second.c_str()))) ));
265 charLearningAttributes.insert( std::pair<uint32, uint32>(
AttrWillpower, ((
uint32)(atoi(charLearningAttributesString.find(std::string(
itoa(
AttrWillpower)))->second.c_str()))) ));
268 std::vector<std::string> queueOrderList;
269 std::vector<std::string> queueSkillTypeIdList;
270 std::vector<std::string> queueSkillLevelList;
271 std::vector<std::string> queueSkillRankList;
272 std::vector<std::string> queueSkillIdList;
273 std::vector<std::string> queueSkillPrimaryAttrList;
274 std::vector<std::string> queueSkillSecondaryAttrList;
275 std::vector<std::string> queueSkillPointsTrainedList;
277 uint32 queueSkillPrimaryAttribute;
278 uint32 queueSkillSecondaryAttribute;
279 std::vector<uint32> queueSkillStartSP;
280 std::vector<uint32> queueSkillEndSP;
281 std::vector<uint64> queueSkillStartTime;
282 std::vector<uint64> queueSkillEndTime;
287 uint64 skillStartTime;
291 queueSkillIdList, queueSkillPrimaryAttrList, queueSkillSecondaryAttrList, queueSkillPointsTrainedList );
293 sLog.Error(
"APICharacterManager::_SkillQueue()",
"INFO: Calculation of Skill End Time based on Effective SP/min does NOT include implants/boosters at this time" );
297 timeNow = EvilTimeNow();
298 for( i=0; i<queueOrderList.size(); i++ )
300 queueSkillPrimaryAttribute = charLearningAttributes.find( atoi(queueSkillPrimaryAttrList.at(i).c_str()) )->second;
301 queueSkillSecondaryAttribute = charLearningAttributes.find( atoi(queueSkillSecondaryAttrList.at(i).c_str()) )->second;
302 skillStartSP =
EvilNumber(atoi( queueSkillPointsTrainedList.at(i).c_str() ));
303 queueSkillStartSP.push_back( static_cast<uint32>( skillStartSP.
get_int() ));
304 skillEndSP = SkillPointsAtLevel( atoi(queueSkillLevelList.at(i).c_str()), atoi(queueSkillRankList.at(i).c_str()) );
305 queueSkillEndSP.push_back( static_cast<uint32>( skillEndSP.
get_int() ) );
306 spPerMinute = SkillPointsPerMinute( queueSkillPrimaryAttribute, queueSkillSecondaryAttribute );
307 skillStartTime =
static_cast<uint64
>(SkillStartingTime( skillStartSP, skillEndSP, spPerMinute, timeNow ).get_int());
308 skillEndTime =
static_cast<uint64
>(SkillEndingTime( skillStartSP, skillEndSP, spPerMinute, timeNow ).get_int());
309 queueSkillStartTime.push_back( skillStartTime );
310 queueSkillEndTime.push_back( skillEndTime );
311 timeNow = skillEndTime;
316 std::vector<std::string> rowset;
322 rowset.push_back(
"queuePosition");
323 rowset.push_back(
"typeID");
324 rowset.push_back(
"level");
325 rowset.push_back(
"startSP");
326 rowset.push_back(
"endSP");
327 rowset.push_back(
"startTime");
328 rowset.push_back(
"endTime");
333 for(i=0; i<queueOrderList.size(); i++)
336 rowset.push_back( queueOrderList.at(i) );
337 rowset.push_back( queueSkillTypeIdList.at(i) );
338 rowset.push_back( queueSkillLevelList.at(i) );
339 rowset.push_back( std::string(
itoa(queueSkillStartSP.at(i))) );
340 rowset.push_back( std::string(
itoa(queueSkillEndSP.at(i))) );
358 sLog.Error(
"APICharacterManager::_SkillInTraining()",
"TODO: Insert code to validate userID and apiKey" );
360 sLog.Debug(
"APICharacterManager::_SkillInTraining()",
"EVEmu API - Character Service Manager - CALL: SkillInTraining.xml.aspx");
362 if( pAPICommandCall->find(
"userid" ) == pAPICommandCall->end() )
364 sLog.Error(
"APICharacterManager::_SkillInTraining()",
"ERROR: No 'userID' parameter found in call argument list - exiting with error and sending back NOTHING" );
368 if( pAPICommandCall->find(
"apikey" ) == pAPICommandCall->end() )
370 sLog.Error(
"APICharacterManager::_SkillInTraining()",
"ERROR: No 'apiKey' parameter found in call argument list - exiting with error and sending back NOTHING" );
374 if( pAPICommandCall->find(
"characterid" ) == pAPICommandCall->end() )
376 sLog.Error(
"APICharacterManager::_SkillInTraining()",
"ERROR: No 'characterID' parameter found in call argument list - exiting with error and sending back NOTHING" );
381 uint32 characterID = atoi( pAPICommandCall->find(
"characterid" )->second.c_str() );
383 std::map<std::string, std::string> charLearningAttributesString;
384 std::map<uint32, uint32> charLearningAttributes;
386 charLearningAttributes.insert( std::pair<uint32, uint32>(
AttrMemory, ((
uint32)(atoi(charLearningAttributesString.find(std::string(
itoa(
AttrMemory)))->second.c_str()))) ));
388 charLearningAttributes.insert( std::pair<uint32, uint32>(
AttrCharisma, ((
uint32)(atoi(charLearningAttributesString.find(std::string(
itoa(
AttrCharisma)))->second.c_str()))) ));
389 charLearningAttributes.insert( std::pair<uint32, uint32>(
AttrWillpower, ((
uint32)(atoi(charLearningAttributesString.find(std::string(
itoa(
AttrWillpower)))->second.c_str()))) ));
392 std::vector<std::string> queueOrderList;
393 std::vector<std::string> queueSkillTypeIdList;
394 std::vector<std::string> queueSkillLevelList;
395 std::vector<std::string> queueSkillRankList;
396 std::vector<std::string> queueSkillIdList;
397 std::vector<std::string> queueSkillPrimaryAttrList;
398 std::vector<std::string> queueSkillSecondaryAttrList;
399 std::vector<std::string> queueSkillPointsTrainedList;
401 uint32 queueSkillPrimaryAttribute;
402 uint32 queueSkillSecondaryAttribute;
403 std::vector<uint32> queueSkillStartSP;
404 std::vector<uint32> queueSkillEndSP;
405 std::vector<uint64> queueSkillStartTime;
406 std::vector<uint64> queueSkillEndTime;
411 uint64 skillStartTime;
415 queueSkillIdList, queueSkillPrimaryAttrList, queueSkillSecondaryAttrList, queueSkillPointsTrainedList );
419 sLog.Error(
"APICharacterManager::_SkillInTraining()",
"INFO: Calculation of Skill End Time based on Effective SP/min does NOT include implants/boosters at this time" );
420 timeNow = EvilTimeNow();
422 queueSkillPrimaryAttribute = charLearningAttributes.find( atoi(queueSkillPrimaryAttrList.at(0).c_str()) )->second;
423 queueSkillSecondaryAttribute = charLearningAttributes.find( atoi(queueSkillSecondaryAttrList.at(0).c_str()) )->second;
424 skillStartSP =
EvilNumber(atoi( queueSkillPointsTrainedList.at(0).c_str() ));
425 queueSkillStartSP.push_back( static_cast<uint32>( skillStartSP.
get_int() ));
426 skillEndSP = SkillPointsAtLevel( atoi(queueSkillLevelList.at(0).c_str()), atoi(queueSkillRankList.at(0).c_str()) );
427 queueSkillEndSP.push_back( static_cast<uint32>( skillEndSP.
get_int() ) );
428 spPerMinute = SkillPointsPerMinute( queueSkillPrimaryAttribute, queueSkillSecondaryAttribute );
429 skillStartTime =
static_cast<uint64
>(SkillStartingTime( skillStartSP, skillEndSP, spPerMinute, timeNow ).get_int());
430 skillEndTime =
static_cast<uint64
>(SkillEndingTime( skillStartSP, skillEndSP, spPerMinute, timeNow ).get_int());
431 queueSkillStartTime.push_back( skillStartTime );
432 queueSkillEndTime.push_back( skillEndTime );
436 std::vector<std::string> rowset;
std::tr1::shared_ptr< std::string > BuildErrorXMLResponse(std::string errorCode, std::string errorMessage)
std::tr1::shared_ptr< std::string > _GetXMLDocumentString()
std::tr1::shared_ptr< std::string > ProcessCall(const APICommandCall *pAPICommandCall)
std::tr1::shared_ptr< std::string > _CharacterSheet(const APICommandCall *pAPICommandCall)
std::tr1::shared_ptr< std::string > _SkillQueue(const APICommandCall *pAPICommandCall)
void _BuildSingleXMLTag(std::string name, std::string param)
this is a class that kinda mimics how python polymorph's numbers.
bool GetCharacterInfo(uint32 characterID, std::vector< std::string > &charInfoList)
?
std::tr1::shared_ptr< std::string > _SkillInTraining(const APICommandCall *pAPICommandCall)
std::map< std::string, std::string > APICommandCall
#define sLog
Evaluates to a NewLog instance.
bool GetCharacterSkillQueue(uint32 characterID, std::vector< std::string > &orderList, std::vector< std::string > &typeIdList, std::vector< std::string > &levelList, std::vector< std::string > &rankList, std::vector< std::string > &skillIdList, std::vector< std::string > &primaryAttrList, std::vector< std::string > &secondaryAttrList, std::vector< std::string > &skillPointsTrainedList)
?
Generic Base Class used to derive classes for specific service handlers (character, corporation, etc)
bool GetCharacterAttributes(uint32 characterID, std::map< std::string, std::string > &attribList)
?
void _BuildXMLTag(std::string name)
APICharacterManager(const PyServiceMgr &services)
std::string Win32TimeToString(int64 win32t)
bool GetCharacterSkillsTrained(uint32 characterID, std::vector< std::string > &skillTypeIDList, std::vector< std::string > &skillPointsList, std::vector< std::string > &skillLevelList, std::vector< std::string > &skillPublishedList)
?
void _BuildXMLRow(const std::vector< std::string > *columns)
void _CloseXMLHeader(uint32 cacheStyle)
void _BuildXMLRowSet(std::string name, std::string key, const std::vector< std::string > *columns)
const char * itoa(int64 num)
Convers num to string.