diff --git a/YACReaderLibrary/server/controllers/v2/foldercontentcontroller_v2.cpp b/YACReaderLibrary/server/controllers/v2/foldercontentcontroller_v2.cpp index 23a18b5d..7a77ad53 100644 --- a/YACReaderLibrary/server/controllers/v2/foldercontentcontroller_v2.cpp +++ b/YACReaderLibrary/server/controllers/v2/foldercontentcontroller_v2.cpp @@ -25,7 +25,7 @@ FolderContentControllerV2::FolderContentControllerV2() {} void FolderContentControllerV2::service(HttpRequest& request, HttpResponse& response) { - response.setHeader("Content-Type", "text/plain; charset=utf-8"); + response.setHeader("Content-Type", "application/json"); QString path = QUrl::fromPercentEncoding(request.getPath()).toUtf8(); QStringList pathElements = path.split('/'); @@ -34,13 +34,12 @@ void FolderContentControllerV2::service(HttpRequest& request, HttpResponse& resp serviceContent(libraryId, parentId, response); + response.setStatus(200,"OK"); response.write("",true); } void FolderContentControllerV2::serviceContent(const int &library, const qulonglong &folderId, HttpResponse &response) { - //clock_t begin = clock(); - QList folderContent = DBHelper::getFolderSubfoldersFromLibrary(library,folderId); QList folderComics = DBHelper::getFolderComicsFromLibrary(library,folderId); @@ -49,6 +48,8 @@ void FolderContentControllerV2::serviceContent(const int &library, const qulongl folderComics.clear(); + QJsonArray items; + ComicDB * currentComic; Folder * currentFolder; for(QList::const_iterator itr = folderContent.constBegin();itr!=folderContent.constEnd();itr++) @@ -56,17 +57,16 @@ void FolderContentControllerV2::serviceContent(const int &library, const qulongl if((*itr)->isDir()) { currentFolder = (Folder *)(*itr); - response.write(YACReaderServerDataHelper::folderToYSFormat(library, *currentFolder).toUtf8()); + items.append(YACReaderServerDataHelper::folderToJSON(library, *currentFolder)); } else { currentComic = (ComicDB *)(*itr); - response.write(YACReaderServerDataHelper::comicToYSFormat(library, *currentComic).toUtf8()); + items.append(YACReaderServerDataHelper::comicToJSON(library, *currentComic)); } } - /*clock_t end = clock(); - double msecs = double(end - begin); + QJsonDocument output(items); - response.write(QString("%1ms").arg(msecs).toUtf8());*/ + response.write(output.toJson()); } diff --git a/YACReaderLibrary/server/yacreader_server_data_helper.cpp b/YACReaderLibrary/server/yacreader_server_data_helper.cpp index 07c2d85f..3dfea145 100644 --- a/YACReaderLibrary/server/yacreader_server_data_helper.cpp +++ b/YACReaderLibrary/server/yacreader_server_data_helper.cpp @@ -23,12 +23,27 @@ QString YACReaderServerDataHelper::comicToYSFormat(const qulonglong libraryId,co .arg(comic.info.read?1:0); } +QJsonObject YACReaderServerDataHelper::folderToJSON(const qulonglong libraryId, const Folder & folder) +{ + QJsonObject json; + + json["type"] = "folder"; + json["id"] = QString::number(folder.id); + json["library_id"] = QString::number(libraryId); + json["folder_name"] = folder.name; + json["num_children"] = QString::number(folder.getNumChildren()); + json["first_comic_hash"] = folder.getFirstChildHash(); + + return json; +} + QJsonObject YACReaderServerDataHelper::comicToJSON(const qulonglong libraryId, const ComicDB & comic) { QJsonObject json; json["type"] = "comic"; json["id"] = QString::number(comic.id); + json["library_id"] = QString::number(libraryId); json["file_name"] = comic.name; json["file_size"] = QString::number(comic.getFileSize()); json["hash"] = comic.info.hash; diff --git a/YACReaderLibrary/server/yacreader_server_data_helper.h b/YACReaderLibrary/server/yacreader_server_data_helper.h index 9202a28c..e68cfa07 100644 --- a/YACReaderLibrary/server/yacreader_server_data_helper.h +++ b/YACReaderLibrary/server/yacreader_server_data_helper.h @@ -11,6 +11,7 @@ public: static QString folderToYSFormat(const qulonglong libraryId, const Folder & folder); static QString comicToYSFormat(const qulonglong libraryId, const ComicDB & comic); + static QJsonObject folderToJSON(const qulonglong libraryId, const Folder & folder); static QJsonObject comicToJSON(const qulonglong libraryId, const ComicDB & comic); private: