ApiManager::ApiAnswer * Bunny::ProcessVioletApiCall(HTTPRequest const& hRequest) { ApiManager::ApiViolet* answer = new ApiManager::ApiViolet(); if(hRequest.HasArg("sn") && hRequest.HasArg("token")) { QString serial = hRequest.GetArg("sn").toLower(); QString token = hRequest.GetArg("token"); if(GetGlobalSetting("VApiEnable",false).toBool()) { if((GetGlobalSetting("VApiToken","").toString() == token && serial.toAscii()==GetID()) || GetGlobalSetting("VApiPublic",false).toBool()) { if(hRequest.GetURI().startsWith("/ojn/FR/api_stream.jsp")) { if(hRequest.HasArg("urlList")) { QByteArray message = ("ST " + hRequest.GetArg("urlList").split("|", QString::SkipEmptyParts).join("\nMW\nST ") + "\nMW\n").toAscii(); SendPacket(MessagePacket(message)); answer->AddMessage("WEBRADIOSENT", "Your webradio has been sent"); } else { answer->AddMessage("NOCORRECTPARAMETERS", "Please check urlList parameter !"); } } else { AmbientPacket p; if(hRequest.HasArg("action")) // TODO: send good values { switch(hRequest.GetArg("action").toInt()) { case 2: answer->AddXml("<listfriend nb=\"0\"/>"); break; case 3: answer->AddXml("<listreceivedmsg nb=\"0\"/>"); break; case 4: answer->AddXml("<timezone>(GMT + 01:00) Bruxelles, Copenhague, Madrid, Paris</timezone>"); break; case 6: answer->AddXml("<blacklist nb=\"0\"/>"); break; case 7: if(IsSleeping()) answer->AddXml("<rabbitSleep>YES</rabbitSleep>"); else answer->AddXml("<rabbitSleep>NO</rabbitSleep>"); break; case 8: answer->AddXml("<rabbitVersion>V2</rabbitVersion>"); break; case 9: answer->AddXml("<voiceListTTS nb=\"2\"/><voice lang=\"fr\" command=\"FR-Anastasie\"/><voice lang=\"de\" command=\"DE-Otto\"/>"); break; case 10: answer->AddXml("<rabbitName>" + GetBunnyName() + "</rabbitName>"); break; case 11: answer->AddXml("<langListUser nb=\"4\"/><myLang lang=\"fr\"/><myLang lang=\"us\"/><myLang lang=\"uk\"/><myLang lang=\"de\"/>"); break; case 12: answer->AddXml("<message>LINKPREVIEW</message><comment>XXXX</comment>"); break; case 13: answer->AddXml("<message>COMMANDSENT</message><comment>You rabbit will change status</comment>"); SendPacket(SleepPacket(SleepPacket::Wake_Up)); break; case 14: answer->AddXml("<message>COMMANDSENT</message><comment>You rabbit will change status</comment>"); SendPacket(SleepPacket(SleepPacket::Sleep)); break; default: break; } } else { if(hRequest.HasArg("idmessage")) { answer->AddMessage("MESSAGESENT", "Your message has been sent"); } if(hRequest.HasArg("posleft") || hRequest.HasArg("posright")) { int left = 0; int right = 0; if(hRequest.HasArg("posleft")) left = hRequest.GetArg("posleft").toInt(); if(hRequest.HasArg("posright")) right = hRequest.GetArg("posright").toInt(); if(left >= 0 && left <= 16 && right >= 0 && right <= 16) { answer->AddMessage("EARPOSITIONSENT", "Your ears command has been sent"); p.SetEarsPosition(left, right); } else { answer->AddMessage("EARPOSITIONNOTSENT", "Your ears command could not be sent"); } } if(hRequest.HasArg("tts")) { SendPacket(MessagePacket("MU "+TTSManager::CreateNewSound(hRequest.GetArg("tts"), "claire")+"\nPL 3\nMW\n")); answer->AddMessage("TTSSENT", "Your text has been sent"); } if(hRequest.HasArg("ears")) { answer->AddEarPosition(0, 0); // TODO: send real positions } if(hRequest.HasArg("chor")) { Choregraphy c; if(c.Parse(hRequest.GetArg("chor"))) //TODO: Check for good chor { QDir chorFolder = QDir(GlobalSettings::GetString("Config/RealHttpRoot")); if (!chorFolder.cd("chor")) { if (!chorFolder.mkdir("chor")) { LogError(QString("Unable to create 'chor' directory !\n")); answer->AddMessage("CHORNOTSENT", "Your chor could not be sent (can't create folder)"); } chorFolder.cd("chor"); } QString fileName = QCryptographicHash::hash(c.GetData(), QCryptographicHash::Md5).toHex().append(".chor"); QString filePath = chorFolder.absoluteFilePath(fileName); QFile file(filePath); if (!file.open(QIODevice::WriteOnly)) { LogError("Cannot open chor file for writing"); answer->AddMessage("CHORNOTSENT", "Your chor could not be sent (error in file)"); } else { file.write(c.GetData()); file.close(); SendPacket(MessagePacket(("CH broadcast/ojn_local/chor/" + fileName + "\n").toAscii())); answer->AddMessage("CHORSENT", "Your chor has been sent"); } } else { answer->AddMessage("CHORNOTSENT", "Your chor could not be sent (bad chor)"); } } } if(p.GetServices().count() > 0) SendPacket(p); } } else { answer->AddMessage("NOGOODTOKENORSERIAL", "Your token or serial number are not correct !"); } } else { answer->AddMessage("APIDISABLED", "API is disabled for this bunny"); } } else { answer->AddMessage("APIDISABLED", "Missing serial or token"); } return answer; }
void Bunny :: PrintBunnyObject() { cout << GetBunnyName()<< " - "<< GetAge() <<" - "<<GetBunnyMutant() << " - " <<GetBunnyColorStr() << " - "<<GetBunnyGenderStr() <<endl; }