diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2013-03-16 17:45:18 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2013-03-16 17:45:18 (GMT) |
| commit | f05044ab68e51ce9c374f6af09284051efcda449 (patch) | |
| tree | 6ae35ed5f6f3395593fc0d2c90780d8162f302e7 /src/client/Client.cpp | |
| parent | d383d6d7e5e1d3ca0856c02ebbcea5e9b8b2ff4e (diff) | |
| download | powder-f05044ab68e51ce9c374f6af09284051efcda449.zip powder-f05044ab68e51ce9c374f6af09284051efcda449.tar.gz | |
APIRequest, Aync methods for client, Profile edit/viewer (WIP)
Diffstat (limited to 'src/client/Client.cpp')
| -rw-r--r-- | src/client/Client.cpp | 55 |
1 files changed, 37 insertions, 18 deletions
diff --git a/src/client/Client.cpp b/src/client/Client.cpp index a43c45b..dcd4903 100644 --- a/src/client/Client.cpp +++ b/src/client/Client.cpp @@ -39,10 +39,13 @@ #include "client/SaveInfo.h" #include "client/SaveFile.h" #include "client/GameSave.h" +#include "client/UserInfo.h" #include "search/Thumbnail.h" #include "preview/Comment.h" #include "ClientListener.h" #include "requestbroker/RequestBroker.h" +#include "requestbroker/APIRequest.h" +#include "requestbroker/APIResultParser.h" #include "cajun/reader.h" #include "cajun/writer.h" @@ -1178,26 +1181,42 @@ std::vector<unsigned char> Client::GetSaveData(int saveID, int saveDate) return saveData; } -VideoBuffer * Client::GetAvatar(std::string username) +RequestBroker::Request * Client::GetUserInfoAsync(std::string username) { - lastError = ""; - int dataStatus; - int dataLength = 0; - unsigned char * data; - std::stringstream urlStream; - urlStream << "http://" << STATICSERVER << "/avatars/" << username << ".pti"; - - data = (unsigned char *)http_simple_get((char *)urlStream.str().c_str(), &dataStatus, &dataLength); - if(data && dataStatus == 200) + class UserInfoParser: public APIResultParser { - std::vector<char> responseData(data, data+dataLength); - return format::PTIToVideoBuffer(responseData); - } - else if(data) - { - free(data); - } - return NULL; + virtual void * ProcessResponse(unsigned char * data, int dataLength) + { + try + { + std::istringstream dataStream((char*)data); + json::Object objDocument; + json::Reader::Read(objDocument, dataStream); + json::Object tempUser = objDocument["User"]; + + json::Number userIDTemp = tempUser["ID"]; + json::String usernameTemp = tempUser["Username"]; + json::String bioTemp = tempUser["Biography"]; + //json::Number ageTemp = tempUser["Age"]; + + return new UserInfo( + userIDTemp.Value(), + 0,//ageTemp.Value(), + usernameTemp.Value(), + bioTemp.Value()); + } + catch (json::Exception &e) + { + return 0; + } + } + virtual void Cleanup(void * objectPtr) + { + delete (UserInfo*)objectPtr; + } + virtual ~UserInfoParser() { } + }; + return new APIRequest("http://" SERVER "/User.json?Name=" + username, new UserInfoParser()); } LoginStatus Client::Login(std::string username, std::string password, User & user) |
