| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Bytes buffers are already reference-counted and cheaply clonable;
there is no need to wrap them further.
|
|
|
|
|
|
|
| |
For now it is not yet exposed on the frontend, but that is merely a
matter of time.
TODO possibly remove the legacy methods, since they're obsoleted
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Note: this requires a reindex of the media database. For the default
CAS backend, use the following:
```bash
for i in */*/*/*/*.json; do
etag="$(echo $i | sed -e 's/\///g' -e 's/\.json$//')";
mv "$i" "$i.bak"
cat "$i.bak" | jq '. + { "etag": '\""$etag"\"'}' > "$i"
rm "$i.bak"
done
```
This change is backwards compatible, but caching headers won't be
emitted without etags present in the metadata.
Actual etags are backend-specific and might differ from backend to
backend.
|
|
|
|
|
|
|
|
|
|
| |
Working:
- Tokens and codes
- Authenticating with a password
Not working:
- Setting the password (need to patch onboarding)
- WebAuthn (the JavaScript is too complicated)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
content_type is now optional; if not specified, it will remain
empty. `application/octet-stream` will be put on read in the
frontend.
Length is now represented as NonZeroUsize - why would you upload a
zero-byte file when you can just conjure one from the void whenever
you need one? This should save me a little bit of memory.
Representing content_type as a typed MIME value would be the next
logical step.
|
|
|
|
|
| |
It turns out that BufWriter requires calling `flush()` manually and
doesn't do it on `drop()`. I forgot about that.
|
|
|
|
| |
It looks like buffering reads can double my performance. Nice.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Supported features:
- Streaming upload
- Content-addressed storage
- Metadata
- MIME type (taken from Content-Type)
- Length (I could use stat() for this one tho)
- filename (for Content-Disposition: attachment, WIP)
|
| |
|
|
Axum has streaming bodies and allows to write simpler code. It also
helps enforce stronger types and looks much more neat.
This allows me to progress on the media endpoint and add streaming
reads and writes to the MediaStore trait.
Metrics are temporarily not implemented. Everything else was
preserved, and the tests still pass, after adjusting for new calling
conventions.
TODO: create method routers for protocol endpoints
|