about summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
* FileStorage: code cleanupVika2022-05-101-14/+11
|
* FileStorage: fix the hang when "after" isn't listed in the feedVika2022-05-101-9/+8
| | | | Closes #4.
* media: move to separate subtreeVika2022-05-104-51/+48
| | | | | | | | This will ease future extraction of the media endpoint to a separate crate. This is highly desirable since it will allow Kittybox's media endpoint to be used separately in instances where a standalone media endpoint is desirable (e.g. custom solutions using my code to polyfill for desired functionality that is undesirable to implement by oneself)
* dev.sh: optional cargo-watch and systemfd supportVika2022-05-071-3/+11
|
* Don't enable tokio-console support in productionVika2022-05-071-0/+1
|
* flake.nix: fix build and clean upVika2022-05-071-6/+8
| | | | | | | | | - Somehow it looks like zlib is required, but wasn't passed - Log level in the test is set to (mostly) info - A needless comment is deleted - Single-step build is enabled. Since this is a multi-crate workspace now, naersk will not offer much in terms of incrementality (and I use `nix develop` anyway with a dev-shell)
* main.rs: clean up some dumb stuffVika2022-05-071-8/+6
| | | | | Match blocks and ifs are actually perfectly usable as expressions. I forgot about that when writing that code.
* Split into different cratesVika2022-05-0713-60/+117
| | | | | | | | | Templates and utility types are now separate crates to speed up compilation, linting and potential reuse/replacement. Potentially more crates could be split out/modularized, resulting in speedups, smaller binaries (whenever features are excluded) and even more reuse capabilities.
* flake.nix: use rustc from nixpkgs on release buildsVika2022-05-051-2/+1
|
* flake.lock: UpdateVika2022-05-051-7/+7
| | | | | | | | | | | | | | Flake lock file updates: • Updated input 'naersk': 'github:nmattia/naersk/8cc379478819e6a22ce7595a761fe1e17c8d7458' (2022-04-16) → 'github:nmattia/naersk/f21309b38e1da0d61b881b6b6d41b81c1aed4e1d' (2022-05-03) • Updated input 'nixpkgs': 'github:kisik21/nixpkgs/bf819aeeb2f0954506a748ff117962edc8cf732d' (2022-03-28) → 'github:vikanezrimaya/nixpkgs/bf819aeeb2f0954506a748ff117962edc8cf732d' (2022-03-28) • Updated input 'rust': 'github:oxalica/rust-overlay/26b570500cdd7a359526524e9abad341891122a6' (2022-04-17) → 'github:oxalica/rust-overlay/88991ffbd57e10b474ea768ec0b54c4f379c566c' (2022-05-04)
* Cargo.lock: updateVika2022-05-031-413/+535
|
* chore: code cleanupVika2022-05-013-66/+6
|
* FileStorage: fix writing settings on empty fileVika2022-05-011-8/+12
|
* FileStorage: lockless reads and atomic writesVika2022-05-012-221/+161
| | | | | | | | | | | | | | | | | | | - 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!)
* added tokio-console instrumentation supportVika2022-04-175-17/+356
|
* flake.lock: UpdateVika2022-04-171-9/+9
| | | | | | | | | | | | | | 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)
* More logsVika2022-04-171-1/+1
|
* added mediatype to replace http_types::MimeVika2022-04-172-0/+8
|
* flake.nix: added some tools to simplify my workflowVika2022-04-151-1/+2
|
* Cargo.toml: add reqwestVika2022-04-153-3/+89
| | | | It's an advanced HTTP client that can do more than vanilla Hyper does.
* frontend: Made endpoints optional in templatesVika2022-04-152-12/+27
| | | | | 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.
* feat: graceful shutdownVika2022-04-151-4/+20
| | | | | | Now Kittybox can gracefully shutdown on SIGTERM. Nice! TODO: consider shutting down on multiple signals
* Make the settings in the database a strong typeVika2022-03-236-13/+42
|
* Get rid of todo!() invocationsVika2022-03-231-4/+32
| | | | | | 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.
* Get rid of legacy code, fix mistakes in fluff text and commentsVika2022-03-234-417/+6
|
* Added a docker container image built from NixVika2022-03-181-2/+43
| | | | | | This is so minimal it can't be much less than this. Use it with `docker load`.
* Port onboardingVika2022-03-074-9/+88
|
* FileStorage: add lints to catch panicking inside locked code sectionsVika2022-03-071-149/+168
|
* Restored most of the functionality (except onboarding and some queries)Vika2022-03-069-230/+689
|
* micropub: parse mp-channel as channelVika2022-03-031-2/+72
|
* fonts: init font update scriptVika2022-03-032-1/+10
| | | | | This will be used to embed fonts into the executable to not rely on Google Fonts anymore.
* frontend: convert to warpVika2022-03-023-292/+208
| | | | | | | | | 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.
* metrics: new metrics collection using warp-prometheusVika2022-03-023-76/+95
|
* database: code cleanupVika2022-03-022-26/+58
|
* update dev script to use systemfd and cargo-watchVika2022-03-022-2/+3
|
* Use the media endpoint stubsVika2022-02-211-2/+1
|
* Added stubs for Micropub posts and the media endpointVika2022-02-211-1/+83
|
* Small tweaks, additions and preparationsVika2022-02-212-25/+26
|
* add compat between http_types and httpVika2022-02-212-2/+5
|
* micropub: flesh out queryVika2022-02-211-47/+180
|
* Fix the dev script to use the proper token endpoint and log settingsVika2022-02-211-2/+2
|
* Make the HTTP client a genericVika2022-02-211-7/+5
| | | | | | 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).
* indieauth/require_token(): reject with 401 when no headerVika2022-02-211-2/+34
|
* database/memory: restore, it is useful in test scenariosVika2022-02-212-0/+198
|
* database: code cleanupVika2022-02-212-48/+29
|
* database/file: use Authority instead of origin for directoriesVika2022-02-211-4/+4
|
* Add a module for IndieAuth bearer token authVika2022-02-215-211/+798
| | | | | | | | | | | | | 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
* WIP: convert to Tokio and WarpVika2022-02-159-713/+861
| | | | | | | | | | | 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...
* Added a dev env scriptVika2022-02-142-1/+11
|
* flake: fix e2e testsVika2021-12-311-5/+3
|