summaryrefslogtreecommitdiff
path: root/src/client/Client.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-01-19 20:10:05 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-01-19 20:10:05 (GMT)
commitc5e8b345219cd7d8ca4b0aa638f59a1fed2cd83b (patch)
tree0d324f7b8d5bf6978f4543af415248b474676b97 /src/client/Client.cpp
parent6d3b447f8e32fdaccdb3727af4d72d341e191e94 (diff)
downloadpowder-c5e8b345219cd7d8ca4b0aa638f59a1fed2cd83b.zip
powder-c5e8b345219cd7d8ca4b0aa638f59a1fed2cd83b.tar.gz
Add "cajun" for JSON reading and writing, Save searching in client and some more stuff for searcg
Diffstat (limited to 'src/client/Client.cpp')
-rw-r--r--src/client/Client.cpp74
1 files changed, 73 insertions, 1 deletions
diff --git a/src/client/Client.cpp b/src/client/Client.cpp
index 2b742f4..1e2e76f 100644
--- a/src/client/Client.cpp
+++ b/src/client/Client.cpp
@@ -2,12 +2,21 @@
#include <iostream>
#include <sstream>
#include <string>
+#include <vector>
#include <time.h>
+
#include "Config.h"
#include "Client.h"
-#include "interface/Point.h"
#include "Graphics.h"
+#include "interface/Point.h"
+
+#include "search/Save.h"
+
+#include "cajun/reader.h"
+#include "cajun/writer.h"
+#include "cajun/elements.h"
+
Client::Client()
{
int i = 0;
@@ -29,6 +38,69 @@ Client::~Client()
http_done();
}
+std::vector<Save> Client::SearchSaves(int start, int count, string query, string sort)
+{
+ lastError = "";
+ std::vector<Save> saveArray;
+ std::stringstream urlStream;
+ char * data;
+ int dataStatus, dataLength;
+ urlStream << "http://" << SERVER << "/Browse.json?Start=" << start << "&Count=" << cout;
+ if(query.length() || sort.length())
+ {
+ urlStream << "&Search_Query=";
+ if(query.length())
+ urlStream << query;
+ if(sort.length())
+ {
+ if(query.length())
+ urlStream << " ";
+ urlStream << "sort:" << sort;
+ }
+
+ }
+ data = http_simple_get((char *)urlStream.str().c_str(), &dataStatus, &dataLength);
+ if(dataStatus == 200 && data)
+ {
+ try
+ {
+ std::istringstream dataStream(data); // missing comma!
+ json::Object objDocument;
+ json::Reader::Read(objDocument, dataStream);
+
+ json::Array savesArray = objDocument["Saves"];
+ for(int j = 0; j < savesArray.Size(); j++)
+ {
+ json::Number tempID = savesArray[j]["ID"];
+ json::Number tempScoreUp = savesArray[j]["ScoreUp"];
+ json::Number tempScoreDown = savesArray[j]["ScoreDown"];
+ json::String tempUsername = savesArray[j]["Username"];
+ json::String tempName = savesArray[j]["Name"];
+ saveArray.push_back(
+ Save(
+ tempID.Value(),
+ tempScoreUp.Value(),
+ tempScoreDown.Value(),
+ tempUsername.Value(),
+ tempName.Value()
+ )
+ );
+ }
+ }
+ catch (json::Exception &e)
+ {
+ lastError = "Could not read response";
+ }
+ }
+ else
+ {
+ lastError = http_ret_text(dataStatus);
+ }
+ if(data)
+ free(data);
+ return saveArray;
+}
+
void Client::ClearThumbnailRequests()
{
for(int i = 0; i < IMGCONNS; i++)