diff --git a/YACReaderLibrary/headless/main.cpp b/YACReaderLibrary/headless/main.cpp index 20fe8a6e..a488174e 100644 --- a/YACReaderLibrary/headless/main.cpp +++ b/YACReaderLibrary/headless/main.cpp @@ -9,6 +9,8 @@ #include "console_ui_library_creator.h" +#include + #include "QsLog.h" #include "QsLogDest.h" @@ -118,7 +120,7 @@ int main( int argc, char ** argv ) QCommandLineParser parser; parser.setApplicationDescription(QCoreApplication::tr("\nYACReaderLibraryServer is the headless (no gui) version of YACReaderLibrary")); parser.addHelpOption(); - parser.addVersionOption(); + const QCommandLineOption versionOption = parser.addVersionOption(); parser.addPositionalArgument("command", "The command to execute. [start, create-library, update-library, add-library, remove-library, list-libraries]"); parser.parse(QCoreApplication::arguments()); @@ -126,6 +128,13 @@ int main( int argc, char ** argv ) const QStringList args = parser.positionalArguments(); const QString command = args.isEmpty() ? QString() : args.first(); + if(parser.isSet(versionOption)) + { + qout << "YACReaderLibraryServer" << " " << VERSION << endl; + + return 0; + } + if(command == "start") { QString destLog = YACReader::getSettingsPath()+"/yacreaderlibrary.log"; diff --git a/YACReaderLibrary/server/controllers/versioncontroller.cpp b/YACReaderLibrary/server/controllers/versioncontroller.cpp new file mode 100644 index 00000000..341923c7 --- /dev/null +++ b/YACReaderLibrary/server/controllers/versioncontroller.cpp @@ -0,0 +1,10 @@ +#include "versioncontroller.h" + +VersionController::VersionController() {} + +void VersionController::service(HttpRequest& request, HttpResponse& response) +{ + Q_UNUSED(request); + + response.writeText(SERVER_VERSION_NUMBER,true); +} diff --git a/YACReaderLibrary/server/controllers/versioncontroller.h b/YACReaderLibrary/server/controllers/versioncontroller.h new file mode 100644 index 00000000..d645b110 --- /dev/null +++ b/YACReaderLibrary/server/controllers/versioncontroller.h @@ -0,0 +1,21 @@ +#ifndef VERSIONCONTROLLER_H +#define VERSIONCONTROLLER_H + +#include "httprequest.h" +#include "httpresponse.h" +#include "httprequesthandler.h" + +#include + +class VersionController : public HttpRequestHandler { + Q_OBJECT + Q_DISABLE_COPY(VersionController); +public: + /** Constructor */ + VersionController(); + + /** Generates the response */ + void service(HttpRequest& request, HttpResponse& response); +}; + +#endif // VERSIONCONTROLLER_H diff --git a/YACReaderLibrary/server/requestmapper.cpp b/YACReaderLibrary/server/requestmapper.cpp index 66b03413..75bbe613 100644 --- a/YACReaderLibrary/server/requestmapper.cpp +++ b/YACReaderLibrary/server/requestmapper.cpp @@ -22,6 +22,7 @@ #include "controllers/errorcontroller.h" #include "controllers/comicdownloadinfocontroller.h" #include "controllers/synccontroller.h" +#include "controllers/versioncontroller.h" #include "db_helper.h" #include "yacreader_libraries.h" @@ -95,20 +96,21 @@ void RequestMapper::service(HttpRequest& request, HttpResponse& response) { QByteArray path=request.getPath(); qDebug("RequestMapper: path=%s",path.data()); - QRegExp folder("/library/.+/folder/[0-9]+/?");//get comic content - QRegExp folderInfo("/library/.+/folder/[0-9]+/info/?"); //get folder info - QRegExp comicDownloadInfo("/library/.+/comic/[0-9]+/?"); //get comic info (basic/download info) - QRegExp comicFullInfo("/library/.+/comic/[0-9]+/info/?"); //get comic info (full info) - QRegExp comicOpen("/library/.+/comic/[0-9]+/remote/?"); //the server will open for reading the comic - QRegExp comicUpdate("/library/.+/comic/[0-9]+/update/?"); //get comic info - QRegExp comicClose("/library/.+/comic/[0-9]+/close/?"); //the server will close the comic and free memory - QRegExp cover("/library/.+/cover/[0-9a-f]+.jpg"); //get comic cover (navigation) - 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) + static const QRegExp folder("/library/.+/folder/[0-9]+/?");//get comic content + static const QRegExp folderInfo("/library/.+/folder/[0-9]+/info/?"); //get folder info + static const QRegExp comicDownloadInfo("/library/.+/comic/[0-9]+/?"); //get comic info (basic/download info) + static const QRegExp comicFullInfo("/library/.+/comic/[0-9]+/info/?"); //get comic info (full info) + static const QRegExp comicOpen("/library/.+/comic/[0-9]+/remote/?"); //the server will open for reading the comic + static const QRegExp comicUpdate("/library/.+/comic/[0-9]+/update/?"); //get comic info + static const QRegExp comicClose("/library/.+/comic/[0-9]+/close/?"); //the server will close the comic and free memory + static const QRegExp cover("/library/.+/cover/[0-9a-f]+.jpg"); //get comic cover (navigation) + static const QRegExp comicPage("/library/.+/comic/[0-9]+/page/[0-9]+/?"); //get comic page + static const QRegExp comicPageRemote("/library/.+/comic/[0-9]+/page/[0-9]+/remote?"); //get comic page (remote reading) + static const QRegExp serverVersion("/version/?"); - QRegExp sync("/sync"); + static const QRegExp sync("/sync"); - QRegExp library("/library/([0-9]+)/.+"); //permite verificar que la biblioteca solicitada existe + static const QRegExp library("/library/([0-9]+)/.+"); //permite verificar que la biblioteca solicitada existe path = QUrl::fromPercentEncoding(path).toUtf8(); @@ -122,8 +124,14 @@ void RequestMapper::service(HttpRequest& request, HttpResponse& response) { } else { - if(sync.exactMatch(path)) + if(serverVersion.exactMatch(path)) + { + VersionController().service(request, response); + } + else if(sync.exactMatch(path)) + { SyncController().service(request, response); + } else { //se comprueba que la sesión sea la correcta con el fin de evitar accesos no autorizados diff --git a/YACReaderLibrary/server/server.pri b/YACReaderLibrary/server/server.pri index 4be20612..19eb50a8 100644 --- a/YACReaderLibrary/server/server.pri +++ b/YACReaderLibrary/server/server.pri @@ -15,7 +15,9 @@ HEADERS += \ $$PWD/controllers/covercontroller.h \ $$PWD/controllers/updatecomiccontroller.h \ $$PWD/controllers/comicdownloadinfocontroller.h \ - $$PWD/controllers/synccontroller.h + $$PWD/controllers/synccontroller.h \ + #v2 + $$PWD/controllers/versioncontroller.h SOURCES += \ $$PWD/static.cpp \ @@ -31,8 +33,12 @@ SOURCES += \ $$PWD/controllers/covercontroller.cpp \ $$PWD/controllers/updatecomiccontroller.cpp \ $$PWD/controllers/comicdownloadinfocontroller.cpp \ - $$PWD/controllers/synccontroller.cpp + $$PWD/controllers/synccontroller.cpp \ + #v2 + $$PWD/controllers/versioncontroller.cpp include(lib/bfLogging/bfLogging.pri) include(lib/bfHttpServer/bfHttpServer.pri) include(lib/bfTemplateEngine/bfTemplateEngine.pri) + +DEFINES += SERVER_VERSION_NUMBER=\\\"2.0\\\"