summaryrefslogtreecommitdiff
path: root/src/client/Client.cpp
diff options
context:
space:
mode:
authorSimon 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)
commitf05044ab68e51ce9c374f6af09284051efcda449 (patch)
tree6ae35ed5f6f3395593fc0d2c90780d8162f302e7 /src/client/Client.cpp
parentd383d6d7e5e1d3ca0856c02ebbcea5e9b8b2ff4e (diff)
downloadpowder-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.cpp55
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)