Commit Graph

936 Commits

Author SHA1 Message Date
a599fb3892 Initial version of Xapian-based catalog search 2021-03-17 14:32:03 +01:00
a17fc0ef2d Library::getBooksByTitleOrDescription() 2021-03-17 14:32:03 +01:00
db06b2c7ca Library::BookIdCollection typedef 2021-03-17 14:32:03 +01:00
a20f9e2ce1 Library::filter() works in two stages
1. Get the subset of books matching the q (title/description) parameter
   of the search

2. Filter out books not matching the other parameters of the search.

Stage 1. currently works in the old way, but will be replaced by Xapian
based search in subsequent commits.
2021-03-17 14:32:03 +01:00
b7b0bdbdd8 Both Book::update() methods update the category 2021-03-17 14:10:57 +04:00
4abc4f8518 Support for book category attribute in library.xml 2021-03-17 14:10:57 +04:00
6b2067c236 Reading category element from OPDS stream 2021-03-17 14:10:57 +04:00
e55bf514e8 Dedicated 'category' parameter in catalog search 2021-03-17 14:10:57 +04:00
80d4f7e349 Extracted InternalServer::search_catalog() 2021-03-17 14:10:57 +04:00
58186ffb26 kiwix::Book::getCategory() 2021-03-17 14:09:48 +04:00
ae32ff40c0 Dropped an extra colon from book <updated> dates 2021-03-17 14:02:27 +04:00
26331b401e Fixed the month in OPDS feed <updated> date
`tm::tm_mon` varies in the [0, 11] range.
2021-03-17 14:02:27 +04:00
67caae6c32 Use the new libzim's getRandomEntry instead of implementing it ourselves. 2021-03-02 14:16:09 +01:00
839fc10a4f Fixed the Windows build
Opening ZIM archives by file descriptor (as well as embedded
ZIM archives) is not supported under Windows.
2021-02-10 14:19:47 +01:00
5a8b825c70 Testing of JNIKiwixReader.getDirectAccessInformation() 2021-02-10 14:19:47 +01:00
7a465e66d7 Renamed org.kiwix.kiwixlib.{Pair->DirectAccessInfo} 2021-02-10 14:19:47 +01:00
5a99634dfd Java wrapper test checks favicon.png too 2021-02-10 14:19:47 +01:00
e028bcbb04 Android's java.io.FileDescriptor is different 2021-02-10 14:19:47 +01:00
9cdf7a44c0 JNIKiwixReader can open an embedded ZIM archive 2021-02-10 14:19:47 +01:00
4d23e44de7 JNIKiwixReader ctor taking a file descriptor
... and a corresponding unit test
2021-02-10 14:19:47 +01:00
98d69ef59b Added testReader unit-test for the java wrapper 2021-02-10 14:19:47 +01:00
e40827fbac Renamed the java wrapper unit test runner script 2021-02-10 14:19:47 +01:00
a798e0c0a1 Made the java wrapper unit test run & pass
The kiwixlib java wrapper unit test can be run manually via the
src/wrapper/java/org/kiwix/testing/compile_test.sh script.

The test ZIM files in src/wrapper/java/org/kiwix/testing were created
using the create_test_zimfiles. They must be updated/re-generated and
committed in git whenever their source data or the create_test_zimfiles
script changes. Note: small.zim.embedded is not used at this point, it
was created for testing the enhancement coming in a few commits.
2021-02-10 14:19:47 +01:00
24b2e6e585 Remove unnecessary include. 2021-01-26 17:53:25 +01:00
3fd1310008 Use c++11 std::thread instead of pthread. 2021-01-26 17:53:25 +01:00
4749656828 Do not crash if zim file has no Counter metadata. 2021-01-26 15:15:27 +01:00
84895c4036 Better </head> detection regex 2021-01-18 13:16:56 +01:00
a8bf9dd5b4 Better Kiwix Serve Taskbar insertion (after charset definition) 2021-01-18 11:18:53 +01:00
a61c94ef10 Add GPLv3 header 2021-01-18 10:54:33 +01:00
8c43fd8d36 Fix taskbar insertion in case of '<head>' attributes 2021-01-11 14:37:19 +01:00
3e2810dff4 Support 'video/*' * 'audio/*' mimetypes in getMediaCount() 2021-01-07 12:32:32 +01:00
44c4aa931a Better use kiwix::startsWith() 2021-01-03 15:17:03 +01:00
95b32b168d More robust getMediaCount() 2021-01-01 17:05:32 +01:00
1002c15e0d Remove unnecessary checks.
`Reader` cannot be created with a null `zimArchive`.
We don't have to check for zimArchive being not null.
2020-12-09 14:25:02 +01:00
d51000c4a9 Use new libzim method hasFulltextIndex to check for fulltext index. 2020-12-09 14:25:02 +01:00
ba302bed33 Use new libzim method getFaviconEntry to get the favicon. 2020-12-09 14:25:02 +01:00
6900b4e506 fix build on FreeBSD
With this header, sockaddr_in and INADDR_ANY are not defined
2020-12-07 09:38:46 -05:00
1a5a2e7a8e Adapt kiwix-lib to the new libzim api. 2020-12-02 12:16:48 +01:00
d87079ec13 Remove deprecated method in the reader. 2020-11-24 19:00:52 +01:00
0f8fe1f63f Alternative implementation of parseMimetypeCounter() 2020-10-29 14:11:27 +04:00
08464f23bc Better parsing of M/Counter
Mimetype may contain a parameters.
Then, the mimetype would be something like "text/html;foo=bar;foz=baz"

It will contains a `;` and `=` and it conflicts with the same operators
we use to separate the items in our list.

We have to use a more advanced algorithm which takes the context into
account.

Fix #416
2020-10-28 16:03:18 +01:00
ef42abea4b Add some tests of parseMimetypeCounter 2020-10-28 14:44:23 +01:00
4407dd12bd Move mimetypeCounter parsing in its own function. 2020-10-28 14:08:06 +01:00
632583ede2 Add missing include 2020-10-07 18:43:57 +02:00
61f9d4ab3a Stop the internal server only if it exists. 2020-10-07 14:36:45 +02:00
470bfc3f1f Better variable name for outStream. 2020-08-28 15:27:03 +02:00
ea3180cb8c Better error printing. 2020-08-28 15:27:03 +02:00
72d3f8f8e2 Fix segmentation fault with curl requests.
Use a heap allocated buffer (with lifetime of Aria2 class) instead of
a stack allocated one.

Original fix made by @ZaWertun. Kudos to him.

Fix #kiwix/kiwix-desktop#123, kiwix/kiwix-desktop#513
and kiwix/kiwix-desktop#423
2020-08-26 12:42:16 +02:00
af9e03904c Use std::mutex and std::unique_lock instead of pthread mutex/lock.
It simplify a bit the code and ensure that mutex is correctly unlock
even in case of exception.
2020-08-26 12:30:56 +02:00
39611cbd60 Wait for waitingThread to exit before destroying the subprocess memory.
WaitingThread read some shared memory with the SubProcess
(`mutex`, `m_running`).
When we destroy the SubProcess, we must be sure that WaitingThread has
correctly finished else we may have invalid read/write on freed memory.
2020-08-26 12:26:04 +02:00