forge-avatar-sync: fix data URI prefix and add jq to service path (closes #197)
This commit is contained in:
parent
edf7f1602d
commit
cd9831b39e
1 changed files with 6 additions and 2 deletions
|
|
@ -505,6 +505,7 @@
|
||||||
path = [
|
path = [
|
||||||
pkgs.curl
|
pkgs.curl
|
||||||
pkgs.coreutils
|
pkgs.coreutils
|
||||||
|
pkgs.jq
|
||||||
pkgs.librsvg
|
pkgs.librsvg
|
||||||
];
|
];
|
||||||
script = ''
|
script = ''
|
||||||
|
|
@ -535,12 +536,15 @@
|
||||||
fi
|
fi
|
||||||
IMAGE=$(base64 -w 0 < "$PNG")
|
IMAGE=$(base64 -w 0 < "$PNG")
|
||||||
rm -f "$PNG"
|
rm -f "$PNG"
|
||||||
DATA_URI="data:image/png;base64,$IMAGE"
|
# Forgejo POST /user/avatar expects {"image":"<base64>"} — just the
|
||||||
|
# raw base64 string, NOT a data URI (data:image/png;base64,...).
|
||||||
|
# Use jq to build the payload so the large base64 value is safely quoted.
|
||||||
|
PAYLOAD=$(jq -n --arg img "$IMAGE" '{image:$img}')
|
||||||
RESP=$(curl -sf --max-time 10 \
|
RESP=$(curl -sf --max-time 10 \
|
||||||
-X POST "$FORGE_URL/api/v1/user/avatar" \
|
-X POST "$FORGE_URL/api/v1/user/avatar" \
|
||||||
-H "Authorization: token $TOKEN" \
|
-H "Authorization: token $TOKEN" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d "{\"image\":\"$DATA_URI\"}" \
|
-d "$PAYLOAD" \
|
||||||
-w "\n%{http_code}" 2>/dev/null || true)
|
-w "\n%{http_code}" 2>/dev/null || true)
|
||||||
CODE=$(printf '%s' "$RESP" | tail -1)
|
CODE=$(printf '%s' "$RESP" | tail -1)
|
||||||
if [ "$CODE" = "204" ] || [ "$CODE" = "200" ]; then
|
if [ "$CODE" = "204" ] || [ "$CODE" = "200" ]; then
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue