cashumit/curl_scripts/submit_dummy_transaction.sh

78 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
# --- Placeholder for User Execution ---
# Anda perlu mengganti placeholder berikut dengan nilai sebenarnya:
# - YOUR_FIREFLY_III_URL: URL instance Firefly III Anda (contoh: https://firefly.yourdomain.com)
# - YOUR_ACCESS_TOKEN: Token akses personal Anda dari Firefly III
# - SOURCE_ACCOUNT_ID: ID akun sumber (dapat ditemukan dengan get_accounts.sh)
# - DESTINATION_ACCOUNT_ID: ID akun tujuan (dapat ditemukan dengan get_accounts.sh)
# - TRANSACTION_TYPE: (Opsional) Jenis transaksi. Default: 'deposit'. Nilai: 'withdrawal', 'deposit', 'transfer'.
# Contoh menjalankan script:
# YOUR_FIREFLY_III_URL="https://firefly.yourdomain.com" YOUR_ACCESS_TOKEN="your_actual_token_here" SOURCE_ACCOUNT_ID=1 DESTINATION_ACCOUNT_ID=2 ./submit_dummy_transaction.sh
# YOUR_FIREFLY_III_URL="https://firefly.yourdomain.com" YOUR_ACCESS_TOKEN="your_actual_token_here" SOURCE_ACCOUNT_ID=1 DESTINATION_ACCOUNT_ID=2 TRANSACTION_TYPE="transfer" ./submit_dummy_transaction.sh
# Cek apakah variabel lingkungan wajib diset
if [[ -z "${YOUR_FIREFLY_III_URL}" || -z "${YOUR_ACCESS_TOKEN}" || -z "${SOURCE_ACCOUNT_ID}" || -z "${DESTINATION_ACCOUNT_ID}" ]]; then
echo "Error: Variabel lingkungan 'YOUR_FIREFLY_III_URL', 'YOUR_ACCESS_TOKEN', 'SOURCE_ACCOUNT_ID', dan 'DESTINATION_ACCOUNT_ID' harus diset."
echo "Contoh penggunaan:"
echo "YOUR_FIREFLY_III_URL=\"https://firefly.yourdomain.com\" YOUR_ACCESS_TOKEN=\"your_actual_token_here\" SOURCE_ACCOUNT_ID=1 DESTINATION_ACCOUNT_ID=2 ./submit_dummy_transaction.sh"
exit 1
fi
# Set default transaction type if not provided
if [[ -z "${TRANSACTION_TYPE}" ]]; then
TRANSACTION_TYPE="deposit"
fi
# --- Data Transaksi Dummy ---
# Anda bisa mengubah nilai-nilai ini sesuai kebutuhan untuk pengujian.
DUMMY_DATE="2025-08-19"
DUMMY_AMOUNT="50.00"
DUMMY_DESCRIPTION="Pengeluaran Dummy via Script"
# --- Perintah Curl ---
echo "=== Mengirim Transaksi Dummy ==="
echo "Data yang dikirim:"
echo " Type: ${TRANSACTION_TYPE}"
echo " Date: ${DUMMY_DATE}"
echo " Amount: ${DUMMY_AMOUNT}"
echo " Description: ${DUMMY_DESCRIPTION}"
echo " Source ID: ${SOURCE_ACCOUNT_ID}"
echo " Destination ID: ${DESTINATION_ACCOUNT_ID}"
echo " URL: ${YOUR_FIREFLY_III_URL}"
echo ""
# Membangun payload JSON secara langsung dalam perintah curl
RESPONSE=$(curl -s -w "%{http_code}" -X POST "${YOUR_FIREFLY_III_URL}/api/v1/transactions" \
-H "Authorization: Bearer ${YOUR_ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d "{
\"transactions\": [
{
\"type\": \"${TRANSACTION_TYPE}\",
\"date\": \"${DUMMY_DATE}\",
\"amount\": \"${DUMMY_AMOUNT}\",
\"description\": \"${DUMMY_DESCRIPTION}\",
\"source_id\": ${SOURCE_ACCOUNT_ID},
\"destination_id\": ${DESTINATION_ACCOUNT_ID}
}
]
}")
HTTP_CODE="${RESPONSE: -3}" # Ambil 3 karakter terakhir sebagai HTTP code
JSON_RESPONSE="${RESPONSE%???}" # Ambil semua karakter kecuali 3 terakhir
echo "Response HTTP Code: ${HTTP_CODE}"
if [[ "${HTTP_CODE}" -eq 200 ]] || [[ "${HTTP_CODE}" -eq 201 ]]; then
echo "Transaksi berhasil dikirim!"
echo "Response JSON:"
echo "${JSON_RESPONSE}" | jq '.' # Format output jika jq tersedia
else
echo "Gagal mengirim transaksi. HTTP Code: ${HTTP_CODE}"
if [[ -n "${JSON_RESPONSE}" ]]; then
echo "Response JSON:"
echo "${JSON_RESPONSE}" | jq '.'
fi
fi