* Fix gated communities being unviewable by treating them as quarantined
* Show restriction reason in quarantine template
* Add `gated` checks for other requests
Making a new connection on every request is very slow and wasteful, espectially on slower network.
Fix this by reuse a hyper client which shares a connection pool.
I'm able to lower /r/popular loading time from 5s to 1.5s on my machine.
* Redirect /:id to canonical URL for post.
This implements redirection of `/:id` (a short-form URL to a post) to
the post's canonical URL. Libreddit issues a `HEAD /:id` to Reddit to get
the canonical URL, and on success will send an HTTP 302 to a client with
the canonical URL set in as the value of the `Location:` header.
This also implements support for short IDs for non-ASCII posts, c/o
spikecodes.
Co-authored-by: spikecodes <19519553+spikecodes@users.noreply.github.com>
Implements HTTP compression, between both Reddit and Libreddit and Libreddit
and a web browser. Compression between Reddit and Libreddit is mandatory,
whereas compression between Libreddit and a client is opt-in (client must
specify a compressor in the Accept-Encoding header).
Supported compressors are gzip and brotli. gzip support is ubiquitous,
whereas brotli is supported by almost all modern browsers except Safari
(iOS, iPhone, macOS), although Safari may support brotli in the future.
Co-authored-by: Matthew E <matt@matthew.science>
* Added support for quarantined subreddits
* Added confirmation wall for quarantined subreddits
* Added quarantine walls to other routes and fixed case issue
* Correct obsolete use of cookie()
* Refactor param() and quarantine()
Co-authored-by: Spike <19519553+spikecodes@users.noreply.github.com>