feat: add image upload for avatar and banner

This commit is contained in:
2026-05-24 02:06:47 +02:00
parent 1874954ad7
commit 01932cf337
40 changed files with 1396 additions and 112 deletions

185
Cargo.lock generated
View File

@@ -14,7 +14,7 @@ dependencies = [
"domain",
"futures",
"k-ap",
"reqwest",
"reqwest 0.13.3",
"serde",
"serde_json",
"tokio",
@@ -47,12 +47,12 @@ dependencies = [
"http-signature-normalization",
"http-signature-normalization-reqwest",
"httpdate",
"itertools",
"itertools 0.14.0",
"moka",
"pin-project-lite",
"rand 0.8.6",
"regex",
"reqwest",
"reqwest 0.13.3",
"reqwest-middleware",
"rsa",
"serde",
@@ -275,8 +275,10 @@ version = "0.1.0"
dependencies = [
"activitypub",
"async-trait",
"bytes",
"chrono",
"domain",
"futures",
"hex",
"sha2",
"thiserror 2.0.18",
@@ -469,6 +471,7 @@ dependencies = [
"matchit",
"memchr",
"mime",
"multer",
"percent-encoding",
"pin-project-lite",
"serde_core",
@@ -580,6 +583,7 @@ name = "bootstrap"
version = "0.1.0"
dependencies = [
"activitypub",
"application",
"async-nats",
"async-trait",
"auth",
@@ -595,6 +599,7 @@ dependencies = [
"postgres-search",
"presentation",
"sqlx",
"storage",
"tokio",
"tower-http",
"tower_governor",
@@ -1040,6 +1045,7 @@ name = "domain"
version = "0.1.0"
dependencies = [
"async-trait",
"bytes",
"chrono",
"futures",
"hex",
@@ -1623,7 +1629,7 @@ dependencies = [
"base64",
"http-signature-normalization",
"httpdate",
"reqwest",
"reqwest 0.13.3",
"reqwest-middleware",
"sha2",
"tokio",
@@ -1641,6 +1647,12 @@ version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "humantime"
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424"
[[package]]
name = "hyper"
version = "1.9.0"
@@ -1673,6 +1685,7 @@ dependencies = [
"hyper",
"hyper-util",
"rustls",
"rustls-native-certs",
"tokio",
"tokio-rustls",
"tower-service",
@@ -1888,6 +1901,15 @@ version = "2.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"
[[package]]
name = "itertools"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
dependencies = [
"either",
]
[[package]]
name = "itertools"
version = "0.14.0"
@@ -1992,7 +2014,7 @@ dependencies = [
[[package]]
name = "k-ap"
version = "0.1.0"
source = "git+https://git.gabrielkaszewski.dev/GKaszewski/k-ap.git?tag=v0.1.2#767b1e69d4f384093ea33d72d5aa46ff140f5ac8"
source = "git+https://git.gabrielkaszewski.dev/GKaszewski/k-ap.git?tag=v0.1.3#7901b29f7c09415e82f7f098f89c1df6b86bbfd3"
dependencies = [
"activitypub_federation",
"anyhow",
@@ -2001,7 +2023,7 @@ dependencies = [
"chrono",
"enum_delegate",
"futures",
"reqwest",
"reqwest 0.13.3",
"serde",
"serde_json",
"tokio",
@@ -2187,6 +2209,23 @@ dependencies = [
"uuid",
]
[[package]]
name = "multer"
version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b"
dependencies = [
"bytes",
"encoding_rs",
"futures-util",
"http 1.4.0",
"httparse",
"memchr",
"mime",
"spin",
"version_check",
]
[[package]]
name = "nats"
version = "0.1.0"
@@ -2311,6 +2350,36 @@ dependencies = [
"libm",
]
[[package]]
name = "object_store"
version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3cfccb68961a56facde1163f9319e0d15743352344e7808a11795fb99698dcaf"
dependencies = [
"async-trait",
"base64",
"bytes",
"chrono",
"futures",
"humantime",
"hyper",
"itertools 0.13.0",
"md-5",
"parking_lot",
"percent-encoding",
"quick-xml",
"rand 0.8.6",
"reqwest 0.12.28",
"ring",
"serde",
"serde_json",
"snafu",
"tokio",
"tracing",
"url",
"walkdir",
]
[[package]]
name = "once_cell"
version = "1.21.4"
@@ -2534,6 +2603,7 @@ dependencies = [
"axum",
"chrono",
"domain",
"futures",
"http-body-util",
"serde",
"serde_json",
@@ -2582,6 +2652,16 @@ dependencies = [
"winapi",
]
[[package]]
name = "quick-xml"
version = "0.37.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb"
dependencies = [
"memchr",
"serde",
]
[[package]]
name = "quinn"
version = "0.11.9"
@@ -2797,6 +2877,48 @@ version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
[[package]]
name = "reqwest"
version = "0.12.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147"
dependencies = [
"base64",
"bytes",
"futures-core",
"futures-util",
"h2",
"http 1.4.0",
"http-body",
"http-body-util",
"hyper",
"hyper-rustls",
"hyper-util",
"js-sys",
"log",
"percent-encoding",
"pin-project-lite",
"quinn",
"rustls",
"rustls-native-certs",
"rustls-pki-types",
"serde",
"serde_json",
"serde_urlencoded",
"sync_wrapper",
"tokio",
"tokio-rustls",
"tokio-util",
"tower",
"tower-http",
"tower-service",
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
"wasm-streams 0.4.2",
"web-sys",
]
[[package]]
name = "reqwest"
version = "0.13.3"
@@ -2836,7 +2958,7 @@ dependencies = [
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
"wasm-streams",
"wasm-streams 0.5.0",
"web-sys",
]
@@ -2849,7 +2971,7 @@ dependencies = [
"anyhow",
"async-trait",
"http 1.4.0",
"reqwest",
"reqwest 0.13.3",
"thiserror 2.0.18",
"tower-service",
]
@@ -3289,6 +3411,27 @@ dependencies = [
"serde",
]
[[package]]
name = "snafu"
version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e84b3f4eacbf3a1ce05eac6763b4d629d60cbc94d632e4092c54ade71f1e1a2"
dependencies = [
"snafu-derive",
]
[[package]]
name = "snafu-derive"
version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1c97747dbf44bb1ca44a561ece23508e99cb592e862f22222dcf42f51d1e451"
dependencies = [
"heck",
"proc-macro2",
"quote",
"syn 2.0.117",
]
[[package]]
name = "socket2"
version = "0.5.10"
@@ -3541,6 +3684,19 @@ version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
[[package]]
name = "storage"
version = "0.1.0"
dependencies = [
"anyhow",
"async-trait",
"bytes",
"domain",
"futures",
"object_store",
"tokio",
]
[[package]]
name = "stringprep"
version = "0.1.5"
@@ -4290,6 +4446,19 @@ dependencies = [
"wasmparser",
]
[[package]]
name = "wasm-streams"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65"
dependencies = [
"futures-util",
"js-sys",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
]
[[package]]
name = "wasm-streams"
version = "0.5.0"