Add Ebook::DownloadUrl for web and feed downloads

This commit adds a rewrite rule for ebook downloads of the form:

```
/ebooks/some-author/some-book/downloads/some-filename.epub
```

to `www/ebooks/download.php`. That file handles the logic of whether to
show a thank you page before beginning the download.

Download URLs in RSS, Atom, and OPDS feeds follow the same pattern, but
they have a query string parameter `?source=feed` to always skip the
thank you page.
This commit is contained in:
Mike Colagrosso 2025-04-24 16:20:44 -06:00 committed by Alex Cabal
parent 1f41eb1e55
commit 03ed3c2257
10 changed files with 99 additions and 36 deletions

View file

@ -0,0 +1,7 @@
<?
namespace Enums;
enum EbookDownloadSource: string{
case Feed = 'feed';
case DownloadPage = 'download';
}

View file

@ -13,4 +13,27 @@ enum EbookFormatType: string{
default => 'application/epub+zip'
};
}
/**
* @throws \Exceptions\InvalidEbookFormatException
*/
public static function FromFilename(string $filename): self{
if(str_ends_with($filename, '.azw3')){
return self::Azw3;
}
if(str_ends_with($filename, '.kepub.epub')){
return self::Kepub;
}
if(str_ends_with($filename, '_advanced.epub')){
return self::AdvancedEpub;
}
if(str_ends_with($filename, '.epub')){
return self::Epub;
}
throw new \Exceptions\InvalidEbookFormatException();
}
}