Commit Graph

21 Commits

Author SHA1 Message Date
Paul van Tilburg 49e0e47ba2
Introduce enum and enum dispatching for backends
This way handlers don't need to do case matching on backend ID strings
anymore.

* Rename `backend` to `backend_id` where we have a backend ID
* Add `get` function and `Backends` enum to the `backend` module
* Add a depend on the `enum_dispatch` crate
2022-08-15 20:21:42 +02:00
Paul van Tilburg cb40f6b192
Split off feed generation to feed module
Also rename the handler function names so they don't conflict with
(current and future) modules.
2022-08-14 10:16:05 +02:00
Paul van Tilburg bc9a9e307d
Add back-end abstraction; refactor Mixcloud back-end (closes: #10)
* Add a `backend` module `Backend` trait and necessary abstract types
* Refactor handlers to use the back-end abstraction
* Directly serialize to URLs where necessary in Mixcloud back-end
* Require `serde` feature for the url crate
2022-08-14 09:03:58 +02:00
Paul van Tilburg 01ca8165e1 Fix string type 2022-08-12 09:52:23 +02:00
Paul van Tilburg 8e77e35690
Add missing error documentation; tweak messages 2022-06-05 21:58:02 +02:00
Paul van Tilburg 0701088fbc
Update the documentation 2022-05-27 22:47:52 +02:00
Paul van Tilburg c13ce71c69
Add feed item limit support
* The feed item limit defaults to the default page size (50) if not
  provided
* Move caching from response to URL fetch results; add helper functions
* Add a helper function to set the paging query of an URL
* Modify paging so we don't retrieve more than the feed item limit
2022-05-27 22:47:52 +02:00
Paul van Tilburg 78fc93fedf
Retrieve all pages by following the next URL
* Derserialize the paging information
* Parse each next URL; handle URL parse errors
* Use a default page size of 50; pass offset 0 to count by item index
2022-05-27 22:47:52 +02:00
Paul van Tilburg 11c78a6cc8
Drop the get_ prefix for functions 2022-05-26 21:25:37 +02:00
Paul van Tilburg 3ec1879932
Replace own youtube-dl impl by youtube_dl crate (refs: #8)
* Drop the depend on the `tokio` crate, because we don't need to
  run our own processes anymore.
* Remove unnecessary error variant for command failure
2022-05-26 20:38:51 +02:00
Paul van Tilburg a67df934bf
Enable some more lints; fix clippy issues 2022-05-26 20:03:44 +02:00
Paul van Tilburg b53365a293
Implement proper error logging and handling (closes: #6)
* Use the `thiserror` crate to make our own error type
* Implement Rocket's `Responder` type for the error type
* Adjust all methods to use the error type
* Small documentation tweaks
2022-05-26 19:57:24 +02:00
Paul van Tilburg 8afd4b17ba
Add a simple index page that explains the usage 2022-05-24 11:05:59 +02:00
Paul van Tilburg 18f4a5f575
Add feed category and iTunes extension attributes 2022-05-24 10:35:10 +02:00
Paul van Tilburg 85cc0b06b2
Second round of rework to make more podcast clients happy
* Prefix the feed handler path with '/feed'
* Mount both handlers under `/` now that they have a prefix in the path
* Provide the backend to the feed and download handler in their paths
* Use the ID as filename download handler, also add an extension
2022-05-24 10:04:06 +02:00
Paul van Tilburg a4546c1641
Use redirection instead of streaming
This might solve some issues with clients that don't get the file type
and size and don't know what to do?
Also, we're not longer involved in the download, yay! (For now.)
2022-05-23 22:21:38 +02:00
Paul van Tilburg 1ab89f87c4
Don't use Markdown link formatting 2022-05-23 22:20:02 +02:00
Paul van Tilburg fc2f200ee5
Also pass the backend to the download handler 2022-05-23 22:19:13 +02:00
Paul van Tilburg d7f209aecc
Add README.md and LICENSE file
Also link the files from the crate and include `README.md` as the main
crate documentation
2022-05-20 16:19:58 +02:00
Paul van Tilburg 6efae911de
Configure URL via config; dd Rocket.toml example file
Also ignore a local `Rocket.toml`; it can be used for development
without committing it.
2022-05-20 16:15:33 +02:00
Paul van Tilburg aac6248878
Initial import into Git 2022-05-20 16:14:55 +02:00