summaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-01-31 18:49:14 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-01-31 18:49:14 (GMT)
commit857b0cc1fc58f066acd59404d16ee5e566e20f00 (patch)
tree7607fc43f3bdd63687dff39209f44defa48e6a35 /src/client
parent1d297cb57a338f2a9e34d0f16642afc6a83c1041 (diff)
downloadpowder-857b0cc1fc58f066acd59404d16ee5e566e20f00.zip
powder-857b0cc1fc58f066acd59404d16ee5e566e20f00.tar.gz
Load user information from preferences, fps display for testing
Diffstat (limited to 'src/client')
-rw-r--r--src/client/Client.cpp73
-rw-r--r--src/client/Client.h8
-rw-r--r--src/client/User.h11
3 files changed, 86 insertions, 6 deletions
diff --git a/src/client/Client.cpp b/src/client/Client.cpp
index 75b78c5..3706cf9 100644
--- a/src/client/Client.cpp
+++ b/src/client/Client.cpp
@@ -14,15 +14,11 @@
#include "search/Save.h"
-#include "cajun/reader.h"
-#include "cajun/writer.h"
-#include "cajun/elements.h"
-
Client::Client():
authUser(0, "")
{
int i = 0;
- http_init(NULL);
+ std::string proxyString("");
for(i = 0; i < THUMB_CACHE_SIZE; i++)
{
thumbnailCache[i] = NULL;
@@ -33,14 +29,81 @@ Client::Client():
activeThumbRequestTimes[i] = 0;
activeThumbRequestCompleteTimes[i] = 0;
}
+
+ //Read config
+ std::ifstream configFile;
+ configFile.open("powder.pref", ios::binary);
+ if(configFile)
+ {
+ int fsize = configFile.tellg();
+ configFile.seekg(0, std::ios::end);
+ fsize = configFile.tellg() - fsize;
+ configFile.seekg(0, ios::beg);
+ if(fsize)
+ {
+ json::Reader::Read(configDocument, configFile);
+ try
+ {
+ authUser.ID = ((json::Number)(configDocument["User"]["ID"])).Value();
+ authUser.SessionID = ((json::String)(configDocument["User"]["SessionID"])).Value();
+ authUser.SessionKey = ((json::String)(configDocument["User"]["SessionKey"])).Value();
+ authUser.Username = ((json::String)(configDocument["User"]["Username"])).Value();
+ }
+ catch (json::Exception &e)
+ {
+ authUser = User(0, "");
+ std::cerr << "Error: Client [Read User data from pref] " << e.what() << std::endl;
+ }
+ try
+ {
+ proxyString = ((json::String)(configDocument["Proxy"])).Value();
+ }
+ catch (json::Exception &e)
+ {
+ proxyString = "";
+ std::cerr << "Error: Client [Read Proxy from pref] " << e.what() << std::endl;
+ }
+ }
+ configFile.close();
+ }
+
+ if(proxyString.length())
+ {
+ http_init((char *)proxyString.c_str());
+ }
+ else
+ {
+ http_init(NULL);
+ }
}
Client::~Client()
{
ClearThumbnailRequests();
http_done();
+
+ //Save config
+ std::ofstream configFile;
+ configFile.open("powder.pref", ios::trunc);
+ if(configFile)
+ {
+ if(authUser.ID)
+ {
+ configDocument["User"]["ID"] = json::Number(authUser.ID);
+ configDocument["User"]["SessionID"] = json::String(authUser.SessionID);
+ configDocument["User"]["SessionKey"] = json::String(authUser.SessionKey);
+ configDocument["User"]["Username"] = json::String(authUser.Username);
+ }
+ else
+ {
+ configDocument["User"] = json::Null();
+ }
+ json::Writer::Write(configDocument, configFile);
+ configFile.close();
+ }
}
+
void Client::SetAuthUser(User user)
{
authUser = user;
diff --git a/src/client/Client.h b/src/client/Client.h
index 0587d79..4ca0287 100644
--- a/src/client/Client.h
+++ b/src/client/Client.h
@@ -3,6 +3,7 @@
#include <queue>
#include <vector>
+#include <fstream>
#include "Config.h"
#include "HTTP.h"
@@ -11,6 +12,10 @@
#include "Singleton.h"
#include "User.h"
+#include "cajun/reader.h"
+#include "cajun/writer.h"
+#include "cajun/elements.h"
+
enum LoginStatus {
LoginOkay, LoginError
};
@@ -34,6 +39,9 @@ private:
int activeThumbRequestCompleteTimes[IMGCONNS];
std::string activeThumbRequestIDs[IMGCONNS];
public:
+ //Config file handle
+ json::Object configDocument;
+
Client();
~Client();
diff --git a/src/client/User.h b/src/client/User.h
index 9dd231c..163f463 100644
--- a/src/client/User.h
+++ b/src/client/User.h
@@ -10,6 +10,11 @@
#include <string>
+enum Elevation
+{
+ ElevationAdmin, ElevationModerator, ElevationNone
+};
+
class User
{
public:
@@ -17,9 +22,13 @@ public:
std::string Username;
std::string SessionID;
std::string SessionKey;
+ Elevation UserElevation;
User(int id, std::string username):
ID(id),
- Username(username)
+ Username(username),
+ SessionID(""),
+ SessionKey(""),
+ UserElevation(ElevationNone)
{
}