#!/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