Move the code updating a book from a reader in the Book class.

This commit is contained in:
Matthieu Gautier 2018-09-06 11:36:03 +02:00
parent 04b05dd68b
commit 66a9a69480
3 changed files with 25 additions and 29 deletions

View File

@ -38,6 +38,7 @@ namespace kiwix
enum supportedIndexType { UNKNOWN, XAPIAN }; enum supportedIndexType { UNKNOWN, XAPIAN };
class OPDSDumper; class OPDSDumper;
class Reader;
/** /**
* A class to store information about a book (a zim file) * A class to store information about a book (a zim file)
@ -49,6 +50,7 @@ class Book
~Book(); ~Book();
bool update(const Book& other); bool update(const Book& other);
void update(const Reader& reader);
static bool sortByTitle(const Book& a, const Book& b); static bool sortByTitle(const Book& a, const Book& b);
static bool sortBySize(const Book& a, const Book& b); static bool sortBySize(const Book& a, const Book& b);
static bool sortByDate(const Book& a, const Book& b); static bool sortByDate(const Book& a, const Book& b);

View File

@ -18,6 +18,7 @@
*/ */
#include "library.h" #include "library.h"
#include "reader.h"
#include <pugixml.hpp> #include <pugixml.hpp>
@ -97,6 +98,26 @@ bool Book::update(const kiwix::Book& other)
return true; return true;
} }
void Book::update(const kiwix::Reader& reader)
{
m_path = reader.getZimFilePath();
m_id = reader.getId();
m_description = reader.getDescription();
m_language = reader.getLanguage();
m_date = reader.getDate();
m_creator = reader.getCreator();
m_publisher = reader.getPublisher();
m_title = reader.getTitle();
m_name = reader.getName();
m_tags = reader.getTags();
m_origId = reader.getOrigId();
m_articleCount = reader.getArticleCount();
m_mediaCount = reader.getMediaCount();
m_size = reader.getFileSize();
reader.getFavicon(m_favicon, m_faviconMimeType);
}
std::string Book::getHumanReadableIdFromPath() std::string Book::getHumanReadableIdFromPath()
{ {
std::string id = m_path; std::string id = m_path;

View File

@ -244,35 +244,8 @@ bool Manager::addBookFromPath(const string pathToOpen,
bool Manager::readBookFromPath(const string path, kiwix::Book* book) bool Manager::readBookFromPath(const string path, kiwix::Book* book)
{ {
try { try {
kiwix::Reader* reader = new kiwix::Reader(path); kiwix::Reader reader(path);
book->update(reader);
if (book != NULL) {
book->setPath(path);
book->setId(reader->getId());
book->setDescription(reader->getDescription());
book->setLanguage(reader->getLanguage());
book->setDate(reader->getDate());
book->setCreator(reader->getCreator());
book->setPublisher(reader->getPublisher());
book->setTitle(reader->getTitle());
book->setName(reader->getName());
book->setTags(reader->getTags());
book->setOrigId(reader->getOrigId());
book->setArticleCount(reader->getArticleCount());
book->setMediaCount(reader->getMediaCount());
book->setSize(reader->getFileSize());
string favicon;
string faviconMimeType;
if (reader->getFavicon(favicon, faviconMimeType)) {
book->setFavicon(base64_encode(
reinterpret_cast<const unsigned char*>(favicon.c_str()),
favicon.length()));
book->setFaviconMimeType(faviconMimeType);
}
}
delete reader;
} catch (const std::exception& e) { } catch (const std::exception& e) {
std::cerr << e.what() << std::endl; std::cerr << e.what() << std::endl;
return false; return false;