~nixgoat/shoelace

proxy: Switch to blake3 for proxied URLs

Generally better to use in Rust compared to blake2, since its
officially implemented, faster, and still pretty safe.
src: Cleanup

Apply compiler suggestions and reduce comment volume.
main: Refactor data struct

Strips it down by including the config struct within the app's data, and
adding a common Base struct for all frontend requests.
src: Revamp crate redundancies

A lot of components in Shoelace were set to be on "crate" visibility.
This is not necessary, since Shoelace is not declared as a library, but
as an application, therefore it's redundant to say its components should
be limited to the crate, since they already are.

Additionally, this commit changes the base_url field in Base to just
"url", for similar reasons as to why the previous change was made, and
removes a pointless response clone in the logger function.
test: Fix tests for Axum

This is acheived with the axum_test dependency. Since the previous tests
required the actix_web::test macro, which is no longer present, they've
been switched to the tokio::test macro.
main: Add logging level config

Seems like this was dead code even in previous releases. It should now
be properly handled.
main: Handle errors using anyhow

Since there's no longer a hard requirement to use std::io::Error, like
there was on Actix, errors can now be handled using Anyhow for the main
function. thiserror will still be used for HTTP errors.
main: Remove Shoelace tracing filter

Axum respects log messages way better than Axum, so this is no longer
necessary.
chore: Remove unused imports

The Axum port should be pretty much fully implemented now, so Actix is
no longer necessary. Cleanup is still needed, but it should just be part
of a final stage before merging into master.
main: Implement fallback 404 route
main: Implement custom logger

This was probably one of the hardest parts of this port. The tower-http
crate does include the TraceLayer middleware, but it's a little limited
in terms of customization, and splits everything into multiline outputs
instead of using a oneliner approach. Therefore, I had to implement my
custom logger as a function. I might split it off into another function,
since it seems to be cluttering the current main function quite a bit.
main: Fix condition in TLS log message

The message would display when the TLS options existed instead of when
the "enabled" option was set to true. This adds a conditional which
checks the value mentioned previously.
rss: Port to Axum

Still needs to be rewritten as an Atom feed instead of RSS, but this is
not the current goal for this rewrite.
api: Port to Axum

Requires also changing the to_plaintext() method so it responds with an
Axum response instead of an Actix one.
proxy: Port to Axum

Still needs some cleanup, particularly for logging, but it sends its
requests without a hassle.
frontend: Port post redirect route to Axum

Also removes the unused Actix imports, since we don't need to
crossreference them anymore.
frontend: Implement finder route in Axum
frontend: Implement post view on Axum
frontend: Implement user view on Axum

A lot of routes had to be commented out due to sheer conflicts with how
Axum handles shared app states compared to Actix, which would cause the
software to not compile. Proxy is not yet implemented, so no media will
be loaded.
frontend: Serve static files through Axum

Uses the ServeDir service, nested within the "/static" path, as
done previously with Actix.
Next