Kelson
0f07cab920
Small HTTP header beautification
2020-05-17 20:19:19 +02:00
Kelson
4f8b397081
Merge pull request #352 from kiwix/small-compilation-error-fix
...
Fix small compilation error in tests
2020-05-17 18:37:53 +02:00
Kelson
2df74d9755
Fix small compilation error in tests
2020-05-17 16:47:21 +02:00
Matthieu Gautier
0b25492edc
Merge pull request #348 from kiwix/http_head_and_etag
2020-05-15 13:55:50 +02:00
Veloman Yunkan
5f0a9d0b08
Added a comment clarifying a non-obvious case
2020-05-15 15:17:04 +04:00
Veloman Yunkan
54f5dbbd35
Handling of If-None-Match conditional requests
2020-05-14 17:01:22 +04:00
Veloman Yunkan
95a5cde359
ETags are set in the response as needed
...
Also added server-unit tests related to ETags in the response.
2020-05-14 17:01:22 +04:00
Veloman Yunkan
3d08ef43f2
HEAD request is not rejected
...
libmicrohttpd handles HEAD requests by dropping the body of the response
(if any). Hence letting a HEAD request through into the code that
processes GET requests is safe.
Also added server unit-tests related to the handling of HEAD requests.
2020-05-14 17:01:22 +04:00
Matthieu Gautier
381ff186cb
Merge pull request #349 from kiwix/fix_python
2020-05-04 10:55:55 +02:00
Matthieu Gautier
e32fa28a6c
Use python3 instead of python.
...
`python` binary is not installed on all platform.
But `python3` is (because meson is python3).
And the script we launch is python3 so use the correct version.
2020-05-04 10:52:11 +02:00
Matthieu Gautier
1842e8f51c
Merge pull request #345 from kiwix/server_refactoring
2020-04-29 17:38:41 +02:00
Veloman Yunkan
bfa51c2d87
Refactoring: got rid of duplicate get_mime_type()
2020-04-29 18:33:25 +04:00
Veloman Yunkan
81e781133d
Refactoring: utilized is_compressible_mime_type()
2020-04-29 18:33:01 +04:00
Veloman Yunkan
9ec7757efe
Refactoring: smart Response::set_entry()
...
Response::set_entry() was upgraded from a simple setter to a method
performing certain business logic that was previously taken care of by
InternalServer::handle_content().
2020-04-29 18:22:15 +04:00
Veloman Yunkan
7bd7ec4937
Refactoring: preparing to move some code
2020-04-29 18:22:15 +04:00
Veloman Yunkan
14d8583c83
Refactoring in InternalServer::handle_content()
...
Deduplicated common code found in the two branches of the last
if(){}else{} statement in InternalServer::handle_content().
2020-04-29 18:22:15 +04:00
Veloman Yunkan
a004d96cd7
Refactoring: extracted get_range_len()
2020-04-29 18:22:15 +04:00
Veloman Yunkan
21c6de2f80
Refactoring: split Response::create_mhd_response()
...
The changes are easier to understand in ignore-white-space mode
(git diff -w, git show -w).
2020-04-29 18:22:15 +04:00
Veloman Yunkan
a8e78f27e1
Refactoring: extracted Response::create_mhd_response()
2020-04-29 18:22:15 +04:00
Veloman Yunkan
6c7ab6ff54
Refactoring: moved local variable declarations
2020-04-29 18:21:40 +04:00
Veloman Yunkan
659ee6ba71
Refactoring: extracted InternalServer::build_redirect()
2020-04-29 16:08:10 +04:00
Veloman Yunkan
83ee8dec15
Made InternalServer::get_default_response() const
2020-04-29 16:08:10 +04:00
Veloman Yunkan
87cbbed9e3
Refactoring: extracted is_compressible_mime_type()
2020-04-29 16:08:10 +04:00
Veloman Yunkan
a058520628
Refactoring: extracted get_mime_type()
2020-04-29 16:08:10 +04:00
Veloman Yunkan
1ef5ebfb52
Refactoring: extracted InternalServer::get_reader()
2020-04-29 16:08:10 +04:00
Veloman Yunkan
bbc06931ad
Refactoring: extracted get_book_name()
2020-04-29 16:08:10 +04:00
Veloman Yunkan
2d3bf9b981
Refactoring: extracted InternalServer::homepage_data()
...
Also typedef'ed kainjow::mustache::data as MustacheData
2020-04-29 16:08:10 +04:00
Veloman Yunkan
fd80f2a89f
Refactoring: extracted fullURL2LocalURL()
...
Also dropped RequestContex::valid_url
2020-04-29 16:08:10 +04:00
Veloman Yunkan
abb3dec700
Refactoring: extracted str2RequestMethod()
2020-04-29 16:08:10 +04:00
Kelson
80fcbceeb3
Merge pull request #344 from kiwix/server_unittests
...
Server unittests
2020-04-29 14:02:57 +02:00
Veloman Yunkan
9a893a854e
Revert "Server can be started on a random free port"
...
This change failed to build under the following platforms
due to an older version of libmicrohttpd missing support for
the MHD_DAEMON_INFO_BIND_PORT query:
- Linux (native_dyn)
- Linux (win32_dyn)
2020-04-29 15:40:02 +04:00
Veloman Yunkan
b0f65a02f2
Server can be started on a random free port
...
If the server is started with a port value of 0, it binds to a random
free port. The bound port can be obtained with a `getPort()` method.
2020-04-29 15:40:02 +04:00
Veloman Yunkan
9bf6d0621f
Introducing 1st real unit test of the server
...
Added a new unit test 'test/server.cpp'. The pre-existing unit test
test/kiwixserve.cpp tests kiwixlib indirectly by running the kiwix-serve
executable which may be built with another version of the library.
Included with this commit is the cpp-httplib C++ HTTP/HTTPS library
(https://github.com/yhirose/cpp-httplib , v0.5.11).
The new file test/httplib.h was copied from
https://raw.githubusercontent.com/yhirose/cpp-httplib/v0.5.11/httplib.h
2020-04-29 15:39:18 +04:00
Veloman Yunkan
fcadacb0ad
Resources are compiled as needed
...
Correct dependencies are set up for resource compilation and
build_always_stale is set to false.
2020-04-28 19:46:14 +04:00
Matthieu Gautier
8f07689c57
Merge pull request #346 from kiwix/unit-test
2020-04-28 11:04:58 +02:00
luddens
0630298fb9
Manager::addBookFromPathAndGetId unit test
2020-04-28 10:56:12 +02:00
Matthieu Gautier
9f61301423
New version 9.1.2
2020-04-20 15:31:14 +02:00
Matthieu Gautier
9c101daad7
Merge pull request #341 from kiwix/fix-addBookFromPathAndGetId
2020-04-20 15:27:57 +02:00
luddens
0586ef6d41
fix open external zim
...
Check if the parameter `pathToSave` is empty before use it otherwise the
book path is empty too, which causes crash on opening external zim files
2020-04-20 15:22:36 +02:00
Matthieu Gautier
8fc42558d3
New version 9.1.1
2020-04-17 17:36:11 +02:00
Matthieu Gautier
5d98a6964e
Merge pull request #343 from kiwix/fix_datadir_windows
...
Fix datadir windows
2020-04-15 10:18:51 +02:00
Matthieu Gautier
9d8bf8ddcb
Create the dataDirectory before returning its path.
2020-04-15 08:24:55 +02:00
Matthieu Gautier
4c8aad0e68
Do not use std::fstream has it doesn't support wchar path.
...
This is surprising, but C++11 fstream doesn't have a constructor
that take wchar as path.
So, on windows, we cannot open a stream on a path containing non ascii
char. VC++ provide an extension for that, but it is not standard and
g++ mingwin doesn't provide it.
So move all our write/read tools function to the plain old c versions,
using _wopen to open wide path on windows.
2020-04-14 18:13:35 +02:00
Matthieu Gautier
eb6f0f710c
Correctly detetect the dataDir on windows.
...
We must use the wide version of the getenv to correctly handle the case
we have accents in the user directory.
This also change the default dataDirectory on windows from $APPDATA to
$APPDATA/kiwix.
2020-04-14 12:12:34 +02:00
Matthieu Gautier
d9d2a702ef
Merge pull request #342 from kiwix/fix_iterator
...
Adapt to new libzim api.
2020-04-13 16:18:57 +02:00
Matthieu Gautier
cbf5bd57a8
Adapt to new libzim api.
...
It is not possible to create a iterator without argument anymore.
2020-04-13 16:06:17 +02:00
Matthieu Gautier
2bf6b04726
Update minimum version of libzim.
2020-04-08 18:03:18 +02:00
Matthieu Gautier
12a0660342
New version 9.1.0
2020-04-08 15:38:25 +02:00
Matthieu Gautier
ab478ed4cf
Merge pull request #337 from kiwix/fix_book_articlecount
...
Fix book articlecount
2020-04-07 12:46:56 +02:00
Matthieu Gautier
533541cf45
Write the articleCount and mediaCount metadata in the OPDS stream.
...
This is not standard OPDS. But clients need this information.
2020-04-07 12:22:44 +02:00