Introduce better API to manipulate entries in a zim file.

The previous API suffer different problems:
- It was difficult to handle articles redirecting to other article.
- It was not possible to get few information (title) without getting
  the whole content.

The new API introduce the new class `Entry` that act as a proxy to an
article in the zim file.

Methods of `Reader` now return an `Entry` and the user has to call
`Entry`'s methods to get useful information.
No redirection is made explicitly.
If an entry is not found, an exception is raised instead of returning
an invalid `Entry`.

The common pattern to get the content of an entry become :

```
std::string content;
try {
  auto entry = reader.getEntryFromPath(path);
  entry = entry.getFinalEntry();
  content = entry.getContent();
} catch (NoEntry& e) {
  ...
}
```

Older methods are keep (with the same behavior) but are marked as
deprecated.
This commit is contained in:
Matthieu Gautier
2018-03-15 15:35:59 +01:00
parent 1f3fcd85a0
commit 135028c16a
8 changed files with 684 additions and 235 deletions

View File

@ -5,6 +5,7 @@ headers = [
'opds_dumper.h',
'downloader.h',
'reader.h',
'entry.h',
'searcher.h'
]