summaryrefslogtreecommitdiff
path: root/src/client/Client.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/Client.cpp')
-rw-r--r--src/client/Client.cpp73
1 files changed, 68 insertions, 5 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;