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.