diff --git a/YACReaderLibrary/server/controllers/foldercontroller.cpp b/YACReaderLibrary/server/controllers/foldercontroller.cpp
index 76e6a47b..cc7a895c 100644
--- a/YACReaderLibrary/server/controllers/foldercontroller.cpp
+++ b/YACReaderLibrary/server/controllers/foldercontroller.cpp
@@ -211,7 +211,7 @@ void FolderController::service(HttpRequest& request, HttpResponse& response)
//t.setVariable(QString("element%1.downloadurl").arg(i),"/library/"+libraryName+"/comic/"+QString("%1").arg(comic->id));
if(!session.isComicOnDevice(comic->info.hash) && !session.isComicDownloaded(comic->info.hash))
t.setVariable(QString("element%1.download").arg(i),QString("import").arg("/library/"+QString::number(libraryId)+"/comic/"+QString("%1").arg(comic->id)));
- else if (!session.isComicDownloaded(comic->info.hash))
+ else if (session.isComicOnDevice(comic->info.hash))
t.setVariable(QString("element%1.download").arg(i),QString("
imported
"));
else
t.setVariable(QString("element%1.download").arg(i),QString("importing
"));
diff --git a/YACReaderLibrary/server/controllers/librariescontroller.cpp b/YACReaderLibrary/server/controllers/librariescontroller.cpp
index 6b555018..ebd888d5 100644
--- a/YACReaderLibrary/server/controllers/librariescontroller.cpp
+++ b/YACReaderLibrary/server/controllers/librariescontroller.cpp
@@ -12,66 +12,11 @@ LibrariesController::LibrariesController() {}
void LibrariesController::service(HttpRequest& request, HttpResponse& response)
{
HttpSession session=Static::sessionStore->getSession(request,response);
- if(session.contains("ySession")) //session is already alive check if it is needed to update comics
- {
- QString postData = QString::fromUtf8(request.getBody());
- if(postData.length()>0) {
- QList data = postData.split("\n");
- if(data.length() > 2) {
- session.setDeviceType(data.at(0).split(":").at(1));
- session.setDisplayType(data.at(1).split(":").at(1));
- QList comics = data.at(2).split(":").at(1).split("\t");
- foreach(QString hash,comics) {
- session.setComicOnDevice(hash);
- }
- }
- else
- {
- if(data.length()>1)
- {
- session.setDeviceType(data.at(0).split(":").at(1));
- session.setDisplayType(data.at(1).split(":").at(1));
- }
- }
- }
- }
- else
- {
- session.set("ySession","ok");
- session.clearNavigationPath();
- session.clearFoldersPath();
+ response.setHeader("Content-Type", "text/html; charset=ISO-8859-1");
+ response.setHeader("Connection","close");
- response.setHeader("Content-Type", "text/html; charset=ISO-8859-1");
- response.setHeader("Connection","close");
-
-
- QString postData = QString::fromUtf8(request.getBody());
- //response.writeText(postData);
-
- QList data = postData.split("\n");
-
- QLOG_INFO() << "Data lenght : " << data.length();
-
- if(data.length() > 2)
- {
- session.setDeviceType(data.at(0).split(":").at(1));
- session.setDisplayType(data.at(1).split(":").at(1));
- QList comics = data.at(2).split(":").at(1).split("\t");
- foreach(QString hash,comics)
- {
- session.setComicOnDevice(hash);
- }
- }
- else //values by default, only for debug purposes.
- {
- session.setDeviceType("ipad");
- session.setDisplayType("@2x");
- }
-
- }
-
- Template t=Static::templateLoader->getTemplate("libraries_"+session.getDeviceType(),request.getHeader("Accept-Language"));
+ Template t=Static::templateLoader->getTemplate("libraries_"+session.getDeviceType(),request.getHeader("Accept-Language"));
t.enableWarnings();
YACReaderLibraries libraries = DBHelper::getLibraries();
diff --git a/YACReaderLibrary/server/lib/bfHttpServer/httpsession.cpp b/YACReaderLibrary/server/lib/bfHttpServer/httpsession.cpp
index c09cb553..c05c803b 100644
--- a/YACReaderLibrary/server/lib/bfHttpServer/httpsession.cpp
+++ b/YACReaderLibrary/server/lib/bfHttpServer/httpsession.cpp
@@ -210,7 +210,16 @@ QSet HttpSession::getDownloadedComics()
if(dataPtr)
return dataPtr->yacreaderSessionData.downloadedComics ;
else
- return QSet();
+ return QSet();
+}
+
+void HttpSession::clearComics()
+{
+ if(dataPtr)
+ {
+ dataPtr->yacreaderSessionData.comicsOnDevice.clear();
+ dataPtr->yacreaderSessionData.downloadedComics.clear();
+ }
}
//current comic (import)
qulonglong HttpSession::getCurrentComicId()
diff --git a/YACReaderLibrary/server/lib/bfHttpServer/httpsession.h b/YACReaderLibrary/server/lib/bfHttpServer/httpsession.h
index 1a0a42e1..63d97b46 100644
--- a/YACReaderLibrary/server/lib/bfHttpServer/httpsession.h
+++ b/YACReaderLibrary/server/lib/bfHttpServer/httpsession.h
@@ -101,6 +101,7 @@ public:
bool isComicDownloaded(const QString & hash);
QSet getComicsOnDevice();
QSet getDownloadedComics();
+ void clearComics();
//current comic (import)
qulonglong getCurrentComicId();
diff --git a/YACReaderLibrary/server/requestmapper.cpp b/YACReaderLibrary/server/requestmapper.cpp
index f63eb6d3..7b554f59 100644
--- a/YACReaderLibrary/server/requestmapper.cpp
+++ b/YACReaderLibrary/server/requestmapper.cpp
@@ -24,9 +24,71 @@
#include "db_helper.h"
#include "yacreader_libraries.h"
+#include "QsLog.h"
+
RequestMapper::RequestMapper(QObject* parent)
:HttpRequestHandler(parent) {}
+void RequestMapper::loadSession(HttpRequest & request, HttpResponse& response)
+{
+ HttpSession session=Static::sessionStore->getSession(request,response);
+ if(session.contains("ySession")) //session is already alive check if it is needed to update comics
+ {
+ QString postData = QString::fromUtf8(request.getBody());
+ if(postData.length()>0) {
+ QList data = postData.split("\n");
+ if(data.length() > 2) {
+ session.setDeviceType(data.at(0).split(":").at(1));
+ session.setDisplayType(data.at(1).split(":").at(1));
+ QList comics = data.at(2).split(":").at(1).split("\t");
+ session.clearComics();
+ foreach(QString hash,comics) {
+ session.setComicOnDevice(hash);
+ }
+ }
+ else
+ {
+ if(data.length()>1)
+ {
+ session.setDeviceType(data.at(0).split(":").at(1));
+ session.setDisplayType(data.at(1).split(":").at(1));
+ }
+ }
+ }
+ }
+ else
+ {
+ session.set("ySession","ok");
+
+ session.clearNavigationPath();
+ session.clearFoldersPath();
+
+ QString postData = QString::fromUtf8(request.getBody());
+ //response.writeText(postData);
+
+ QList data = postData.split("\n");
+
+ QLOG_INFO() << "Data lenght : " << data.length();
+
+ if(data.length() > 2)
+ {
+ session.setDeviceType(data.at(0).split(":").at(1));
+ session.setDisplayType(data.at(1).split(":").at(1));
+ QList comics = data.at(2).split(":").at(1).split("\t");
+ foreach(QString hash,comics)
+ {
+ session.setComicOnDevice(hash);
+ }
+ }
+ else //values by default, only for debug purposes.
+ {
+ session.setDeviceType("ipad");
+ session.setDisplayType("@2x");
+ }
+
+ }
+}
+
void RequestMapper::service(HttpRequest& request, HttpResponse& response) {
QByteArray path=request.getPath();
qDebug("RequestMapper: path=%s",path.data());
@@ -41,10 +103,12 @@ void RequestMapper::service(HttpRequest& request, HttpResponse& response) {
QRegExp comicPage("/library/.+/comic/[0-9]+/page/[0-9]+/?"); //get comic page
QRegExp comicPageRemote("/library/.+/comic/[0-9]+/page/[0-9]+/remote?"); //get comic page (remote reading)
- QRegExp library("/library/([0-9]+)/.+"); //permite verificar que la biblioteca solicitada existe
+ QRegExp library("/library/([0-9]+)/.+"); //permite verificar que la biblioteca solicitada existe
path = QUrl::fromPercentEncoding(path).toLatin1();
+ loadSession(request, response);
+
//primera petición, se ha hecho un post, se sirven las bibliotecas si la seguridad mediante login no está habilitada
if(path == "/")
{
diff --git a/YACReaderLibrary/server/requestmapper.h b/YACReaderLibrary/server/requestmapper.h
index d44586f6..332cee09 100644
--- a/YACReaderLibrary/server/requestmapper.h
+++ b/YACReaderLibrary/server/requestmapper.h
@@ -30,6 +30,7 @@ public:
@param response Must be used to return the response
*/
void service(HttpRequest& request, HttpResponse& response);
+ void loadSession(HttpRequest & request, HttpResponse& response);
};