1 #include "tagcontentcontroller_v2.h"
2 
3 #include "db_helper.h"
4 #include "comic_db.h"
5 
6 #include "yacreader_server_data_helper.h"
7 
8 #include <QUrl>
9 
10 using stefanfrings::HttpRequest;
11 using stefanfrings::HttpResponse;
12 
TagContentControllerV2()13 TagContentControllerV2::TagContentControllerV2()
14 {
15 }
16 
service(HttpRequest & request,HttpResponse & response)17 void TagContentControllerV2::service(HttpRequest &request, HttpResponse &response)
18 {
19     response.setHeader("Content-Type", "text/plain; charset=utf-8");
20 
21     QString path = QUrl::fromPercentEncoding(request.getPath()).toUtf8();
22     QStringList pathElements = path.split('/');
23     int libraryId = pathElements.at(3).toInt();
24     qulonglong tagId = pathElements.at(5).toULongLong();
25 
26     serviceContent(libraryId, tagId, response);
27 
28     response.write("", true);
29 }
30 
serviceContent(const int & library,const qulonglong & tagId,HttpResponse & response)31 void TagContentControllerV2::serviceContent(const int &library, const qulonglong &tagId, HttpResponse &response)
32 {
33     QList<ComicDB> comics = DBHelper::getLabelComics(library, tagId);
34 
35     QJsonArray items;
36 
37     for (const ComicDB &comic : comics) {
38         items.append(YACReaderServerDataHelper::comicToJSON(library, comic));
39     }
40 
41     QJsonDocument output(items);
42 
43     response.write(output.toJson(QJsonDocument::Compact));
44 }
45