cashumit/curl_scripts/upload_attachment.sh

58 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
# --- Script untuk Mengupload File PDF sebagai Attachment ke Firefly III ---
# Berdasarkan dokumentasi resmi, hanya file yang dikirim dalam request pertama.
# Untuk menghubungkan attachment dengan transaksi/bill, perlu update terpisah.
# Gantilah nilai berikut dengan nilai yang sesuai:
# - FIREFLY_URL: URL instance Firefly III Anda
# - ACCESS_TOKEN: Token akses personal yang valid
# - PDF_FILE_PATH: Path ke file PDF yang akan diupload
# Contoh menjalankan:
# FIREFLY_URL="http://localhost:8080" ACCESS_TOKEN="token_anda" PDF_FILE_PATH="/path/to/your/file.pdf" ./upload_attachment.sh
if [[ -z "${FIREFLY_URL}" || -z "${ACCESS_TOKEN}" || -z "${PDF_FILE_PATH}" ]]; then
echo "Error: FIREFLY_URL, ACCESS_TOKEN, dan PDF_FILE_PATH harus diset."
echo "Contoh penggunaan:"
echo "FIREFLY_URL=\"http://localhost:8080\" ACCESS_TOKEN=\"token_anda\" PDF_FILE_PATH=\"/path/to/your/file.pdf\" ./upload_attachment.sh"
exit 1
fi
# Cek apakah file PDF ada
if [[ ! -f "${PDF_FILE_PATH}" ]]; then
echo "Error: File PDF tidak ditemukan di path: ${PDF_FILE_PATH}"
exit 1
fi
echo "Mengupload attachment ke Firefly III..."
echo "URL: $FIREFLY_URL"
echo "File: $PDF_FILE_PATH"
echo ""
# Upload file sebagai attachment (tanpa menghubungkan ke transaksi/bill dulu)
RESPONSE=$(curl -s -w "%{http_code}" -X POST "${FIREFLY_URL}/api/v1/attachments" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Accept: application/json" \
-F "file=@${PDF_FILE_PATH}")
HTTP_CODE="${RESPONSE: -3}"
JSON_RESPONSE="${RESPONSE%???}"
echo "HTTP Code: $HTTP_CODE"
if [[ "$HTTP_CODE" -eq 200 ]] || [[ "$HTTP_CODE" -eq 201 ]]; then
echo "Attachment berhasil diupload!"
echo "Response:"
echo "$JSON_RESPONSE" | jq '.'
# Ekstrak ID attachment dari response untuk update berikutnya (jika diperlukan)
ATTACHMENT_ID=$(echo "$JSON_RESPONSE" | jq -r '.data.id')
echo ""
echo "Attachment ID: $ATTACHMENT_ID"
echo "Untuk menghubungkan attachment ini dengan transaksi/bill, gunakan script update_attachment.sh"
else
echo "Gagal mengupload attachment."
if [[ -n "$JSON_RESPONSE" ]]; then
echo "Response: $JSON_RESPONSE"
fi
fi