Async Request methods for SaveInfo and SaveData
This commit is contained in:
parent
7a847e7a55
commit
ddd51aed3d
@ -1735,6 +1735,80 @@ SaveInfo * Client::GetSave(int saveID, int saveDate)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RequestBroker::Request * Client::GetSaveAsync(int saveID, int saveDate)
|
||||||
|
{
|
||||||
|
std::stringstream urlStream;
|
||||||
|
urlStream << "http://" << SERVER << "/Browse/View.json?ID=" << saveID;
|
||||||
|
if(saveDate)
|
||||||
|
{
|
||||||
|
urlStream << "&Date=" << saveDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
class SaveInfoParser: public APIResultParser
|
||||||
|
{
|
||||||
|
virtual void * ProcessResponse(unsigned char * data, int dataLength)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
std::istringstream dataStream((char*)data);
|
||||||
|
json::Object objDocument;
|
||||||
|
json::Reader::Read(objDocument, dataStream);
|
||||||
|
|
||||||
|
json::Number tempID = objDocument["ID"];
|
||||||
|
json::Number tempScoreUp = objDocument["ScoreUp"];
|
||||||
|
json::Number tempScoreDown = objDocument["ScoreDown"];
|
||||||
|
json::Number tempMyScore = objDocument["ScoreMine"];
|
||||||
|
json::String tempUsername = objDocument["Username"];
|
||||||
|
json::String tempName = objDocument["Name"];
|
||||||
|
json::String tempDescription = objDocument["Description"];
|
||||||
|
json::Number tempDate = objDocument["Date"];
|
||||||
|
json::Boolean tempPublished = objDocument["Published"];
|
||||||
|
json::Boolean tempFavourite = objDocument["Favourite"];
|
||||||
|
json::Number tempComments = objDocument["Comments"];
|
||||||
|
json::Number tempViews = objDocument["Views"];
|
||||||
|
json::Number tempVersion = objDocument["Version"];
|
||||||
|
|
||||||
|
json::Array tagsArray = objDocument["Tags"];
|
||||||
|
std::vector<std::string> tempTags;
|
||||||
|
|
||||||
|
for(int j = 0; j < tagsArray.Size(); j++)
|
||||||
|
{
|
||||||
|
json::String tempTag = tagsArray[j];
|
||||||
|
tempTags.push_back(tempTag.Value());
|
||||||
|
}
|
||||||
|
|
||||||
|
SaveInfo * tempSave = new SaveInfo(
|
||||||
|
tempID.Value(),
|
||||||
|
tempDate.Value(),
|
||||||
|
tempScoreUp.Value(),
|
||||||
|
tempScoreDown.Value(),
|
||||||
|
tempMyScore.Value(),
|
||||||
|
tempUsername.Value(),
|
||||||
|
tempName.Value(),
|
||||||
|
tempDescription.Value(),
|
||||||
|
tempPublished.Value(),
|
||||||
|
tempTags
|
||||||
|
);
|
||||||
|
tempSave->Comments = tempComments.Value();
|
||||||
|
tempSave->Favourite = tempFavourite.Value();
|
||||||
|
tempSave->Views = tempViews.Value();
|
||||||
|
tempSave->Version = tempVersion.Value();
|
||||||
|
return tempSave;
|
||||||
|
}
|
||||||
|
catch (json::Exception &e)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
virtual void Cleanup(void * objectPtr)
|
||||||
|
{
|
||||||
|
delete (SaveInfo*)objectPtr;
|
||||||
|
}
|
||||||
|
virtual ~SaveInfoParser() { }
|
||||||
|
};
|
||||||
|
return new APIRequest(urlStream.str(), new SaveInfoParser());
|
||||||
|
}
|
||||||
|
|
||||||
Thumbnail * Client::GetPreview(int saveID, int saveDate)
|
Thumbnail * Client::GetPreview(int saveID, int saveDate)
|
||||||
{
|
{
|
||||||
std::stringstream urlStream;
|
std::stringstream urlStream;
|
||||||
@ -1777,6 +1851,54 @@ Thumbnail * Client::GetPreview(int saveID, int saveDate)
|
|||||||
return new Thumbnail(saveID, saveDate, (pixel *)malloc((128*128) * PIXELSIZE), ui::Point(128, 128));
|
return new Thumbnail(saveID, saveDate, (pixel *)malloc((128*128) * PIXELSIZE), ui::Point(128, 128));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RequestBroker::Request * Client::GetCommentsAsync(int saveID, int start, int count)
|
||||||
|
{
|
||||||
|
class CommentsParser: public APIResultParser
|
||||||
|
{
|
||||||
|
virtual void * ProcessResponse(unsigned char * data, int dataLength)
|
||||||
|
{
|
||||||
|
std::vector<SaveComment*> * commentArray = new std::vector<SaveComment*>();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
std::istringstream dataStream((char*)data);
|
||||||
|
json::Array commentsArray;
|
||||||
|
json::Reader::Read(commentsArray, dataStream);
|
||||||
|
|
||||||
|
for(int j = 0; j < commentsArray.Size(); j++)
|
||||||
|
{
|
||||||
|
json::Number tempUserID = commentsArray[j]["UserID"];
|
||||||
|
json::String tempUsername = commentsArray[j]["Username"];
|
||||||
|
json::String tempFormattedUsername = commentsArray[j]["FormattedUsername"];
|
||||||
|
json::String tempComment = commentsArray[j]["Text"];
|
||||||
|
commentArray->push_back(
|
||||||
|
new SaveComment(
|
||||||
|
tempUserID.Value(),
|
||||||
|
tempUsername.Value(),
|
||||||
|
tempFormattedUsername.Value(),
|
||||||
|
tempComment.Value()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return commentArray;
|
||||||
|
}
|
||||||
|
catch (json::Exception &e)
|
||||||
|
{
|
||||||
|
delete commentArray;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
virtual void Cleanup(void * objectPtr)
|
||||||
|
{
|
||||||
|
delete (std::vector<SaveComment*>*)objectPtr;
|
||||||
|
}
|
||||||
|
virtual ~CommentsParser() { }
|
||||||
|
};
|
||||||
|
|
||||||
|
std::stringstream urlStream;
|
||||||
|
urlStream << "http://" << SERVER << "/Browse/Comments.json?ID=" << saveID << "&Start=" << start << "&Count=" << count;
|
||||||
|
return new APIRequest(urlStream.str(), new CommentsParser());
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<SaveComment*> * Client::GetComments(int saveID, int start, int count)
|
std::vector<SaveComment*> * Client::GetComments(int saveID, int start, int count)
|
||||||
{
|
{
|
||||||
lastError = "";
|
lastError = "";
|
||||||
|
@ -144,10 +144,16 @@ public:
|
|||||||
void ClearThumbnailRequests();
|
void ClearThumbnailRequests();
|
||||||
std::vector<SaveInfo*> * SearchSaves(int start, int count, std::string query, std::string sort, std::string category, int & resultCount);
|
std::vector<SaveInfo*> * SearchSaves(int start, int count, std::string query, std::string sort, std::string category, int & resultCount);
|
||||||
std::vector<std::pair<std::string, int> > * GetTags(int start, int count, std::string query, int & resultCount);
|
std::vector<std::pair<std::string, int> > * GetTags(int start, int count, std::string query, int & resultCount);
|
||||||
|
|
||||||
std::vector<SaveComment*> * GetComments(int saveID, int start, int count);
|
std::vector<SaveComment*> * GetComments(int saveID, int start, int count);
|
||||||
|
RequestBroker::Request * GetCommentsAsync(int saveID, int start, int count);
|
||||||
|
|
||||||
Thumbnail * GetPreview(int saveID, int saveDate);
|
Thumbnail * GetPreview(int saveID, int saveDate);
|
||||||
Thumbnail * GetThumbnail(int saveID, int saveDate);
|
Thumbnail * GetThumbnail(int saveID, int saveDate);
|
||||||
|
|
||||||
SaveInfo * GetSave(int saveID, int saveDate);
|
SaveInfo * GetSave(int saveID, int saveDate);
|
||||||
|
RequestBroker::Request * GetSaveAsync(int saveID, int saveDate);
|
||||||
|
|
||||||
RequestStatus DeleteSave(int saveID);
|
RequestStatus DeleteSave(int saveID);
|
||||||
RequestStatus ReportSave(int saveID, std::string message);
|
RequestStatus ReportSave(int saveID, std::string message);
|
||||||
RequestStatus UnpublishSave(int saveID);
|
RequestStatus UnpublishSave(int saveID);
|
||||||
|
Loading…
Reference in New Issue
Block a user