| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Reads don't lock anymore. At all.
- Writes create a temporary file and use `rename(2)` to atomically
replace it
- since OpenOptions::create_new(true) is used, tempfile creation is
atomic (and since tempfile names are per-post, a post can only be
edited by one request at a time)
- Since written files get atomically replaced, readers can't read a
corrupted file
Potential pitfalls:
1. This approach is not covered by unit tests (yet)
2. Stale tempfiles can prevent editing posts (can be solved by
throwing out tempfiles that are older than, say, a day)
3. Crashed edits can leave stale tempfiles (honestly that sounds
better than corrupting the whole database, doesn't sound like a bug to
me at all!)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Flake lock file updates:
• Updated input 'naersk':
'github:nmattia/naersk/e09c320446c5c2516d430803f7b19f5833781337' (2021-06-17)
→ 'github:nmattia/naersk/8cc379478819e6a22ce7595a761fe1e17c8d7458' (2022-04-16)
• Updated input 'nixpkgs':
'github:kisik21/nixpkgs/e2b7e226ac2f83039d0f116c3693619a8bd6444c' (2021-11-23)
→ 'github:kisik21/nixpkgs/bf819aeeb2f0954506a748ff117962edc8cf732d' (2022-03-28)
• Updated input 'rust':
'github:oxalica/rust-overlay/885ef5bf9d2857dff8689292aedb511dfc952862' (2021-11-23)
→ 'github:oxalica/rust-overlay/26b570500cdd7a359526524e9abad341891122a6' (2022-04-17)
|
| |
|
| |
|
| |
|
|
|
|
| |
It's an advanced HTTP client that can do more than vanilla Hyper does.
|
|
|
|
|
| |
Sometimes it's cumbersome to include them, and I plan to make them
embedded in the app anyway. This is my reminder to do it ASAP.
|
|
|
|
|
|
| |
Now Kittybox can gracefully shutdown on SIGTERM. Nice!
TODO: consider shutting down on multiple signals
|
| |
|
|
|
|
|
|
| |
This stubs the neccesary code with enough stuff that it will work and
be accepted by most compliant Micropub implementations. Later, this
can be extended when the neccesary amendments and refactors are done.
|
| |
|
|
|
|
|
|
| |
This is so minimal it can't be much less than this.
Use it with `docker load`.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This will be used to embed fonts into the executable to not rely on
Google Fonts anymore.
|
|
|
|
|
|
|
|
|
| |
Warp is using hyperium/http instead of http-types, so I replaced all
of the http-types usage (mostly status codes) by Warp's
http::StatusCode.
Additionally some of the struct fields were made public to allow
initialization from public code.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
This adds the ability to use mocks that don't actually touch the
network and alternative transports such as using OpenSSL instead of
rustls (but rustls is still superior).
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
require_token() uses a token endpoint URI and an HTTP client to query
the token endpoint and return a User object if the user was
authorized, or rejecting with IndieAuthError if not. It is recommended
to use recover() and catch the IndieAuthError at the application level
to show a "not authorized" error message to the user.
This function is more intended for API consumption, but is general
enough to permit using in other scenarios.
TODO: make a variant that returns Option<User> instead of rejecting
|
|
|
|
|
|
|
|
|
|
|
| |
Warp allows requests to be applied as "filters", allowing to flexibly
split up logic and have it work in a functional style, similar to
pipes.
Tokio is just an alternative runtime. I thought that maybe switching
runtimes and refactoring the code might allow me to fish out that
pesky bug with the whole application hanging after a certain amount of
requests...
|
| |
|
| |
|
|
|
|
|
|
| |
This is to prevent spinning in a loop waiting for a lock. This hangs
often, though I suspect this should have been fixed in the previous
commit.
|
|
|
|
|
|
|
| |
This may or may not be the cause for the app hanging while waiting for
a lock. Now the operations with locks are never performed over an
async boundary, excluding any shenanigans that can happen when
accidentally leaving a file locked over async boundaries.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
This will allow readers to view private posts intended just for them.
Additionally fixed bugs in patterns due to which webmentions might not
have been sent.
|