Merge pull request #329 from kiwix/getBookByPath

Get book by path
This commit is contained in:
Matthieu Gautier 2020-03-06 12:12:43 +01:00 committed by GitHub
commit 3ab3ffe3ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 23 additions and 2 deletions

View File

@ -149,6 +149,7 @@ class Library
bool removeBookmark(const std::string& zimId, const std::string& url); bool removeBookmark(const std::string& zimId, const std::string& url);
Book& getBookById(const std::string& id); Book& getBookById(const std::string& id);
Book& getBookByPath(const std::string& path);
std::shared_ptr<Reader> getReaderById(const std::string& id); std::shared_ptr<Reader> getReaderById(const std::string& id);
/** /**

View File

@ -89,7 +89,7 @@ class Searcher
* @param resultEnd the end offset of the search results (used for pagination). * @param resultEnd the end offset of the search results (used for pagination).
* @param verbose print some info on stdout if true. * @param verbose print some info on stdout if true.
*/ */
void search(std::string& search, void search(const std::string& search,
unsigned int resultStart, unsigned int resultStart,
unsigned int resultEnd, unsigned int resultEnd,
const bool verbose = false); const bool verbose = false);

View File

@ -85,6 +85,18 @@ Book& Library::getBookById(const std::string& id)
return m_books.at(id); return m_books.at(id);
} }
Book& Library::getBookByPath(const std::string& path)
{
for(auto& it: m_books) {
auto& book = it.second;
if (book.getPath() == path)
return book;
}
std::ostringstream ss;
ss << "No book with path " << path << " in the library." << std::endl;
throw std::out_of_range(ss.str());
}
std::shared_ptr<Reader> Library::getReaderById(const std::string& id) std::shared_ptr<Reader> Library::getReaderById(const std::string& id)
{ {
try { try {

View File

@ -97,7 +97,7 @@ Reader* Searcher::get_reader(int readerIndex)
} }
/* Search strings in the database */ /* Search strings in the database */
void Searcher::search(std::string& search, void Searcher::search(const std::string& search,
unsigned int resultStart, unsigned int resultStart,
unsigned int resultEnd, unsigned int resultEnd,
const bool verbose) const bool verbose)

View File

@ -258,4 +258,12 @@ TEST_F(LibraryTest, filterCheck)
EXPECT_EQ(bookIds.size(), 1U); EXPECT_EQ(bookIds.size(), 1U);
} }
TEST_F(LibraryTest, getBookByPath)
{
auto& book = lib.getBookById(lib.getBooksIds()[0]);
book.setPath("/some/abs/path.zim");
EXPECT_EQ(lib.getBookByPath("/some/abs/path.zim").getId(), book.getId());
EXPECT_THROW(lib.getBookByPath("non/existant/path.zim"), std::out_of_range);
}
}; };