Ga naar inhoud

ApoAlly Insights Configuratie#

Debian/Ubuntu#

Bash Upload-Script
apoally-insights-upload.sh
#!/bin/bash
# upload_csv.sh
#
# Dit script zoekt nu automatisch naar een optioneel schema-bestand (.json of .csvs)
# met dezelfde basisnaam als het CSV/TSV-bestand. JSON heeft prioriteit boven CSVS als beide bestaan.
# Als er geen schema-bestand wordt gevonden, wordt alleen het CSV/TSV-bestand geüpload. Als een map wordt opgegeven,
# verwerkt het script alle .csv- en .tsv-bestanden erin (recursief), elk met zijn optionele schema-bestand.
#
# Gebruik:
#   ./upload_csv.sh <pad_naar_csv_of_tsv_bestand_of_map>
#
# Omgevingsvariabelen:
#   API_URL - De URL van het CSV-upload eindpunt (standaard: https://api.apoally.de/insights/upload)
#   API_KEY - De API-sleutel gebruikt voor authenticatie (standaard: YOUR-API-KEY)

API_URL="https://api.apoally.de/insights/upload"
API_KEY="YOUR-API-KEY"

# Controleer of exact één argument is opgegeven
if [ "$#" -ne 1 ]; then
    echo "Gebruik: $0 <pad_naar_csv_of_tsv_bestand_of_map>"
    exit 1
fi

TARGET="$1"

function upload_single_file() {
    local file_path="$1"
    local base="${file_path%.*}"

    # Detecteer optioneel schema-bestand met dezelfde basisnaam
    local schema_file=""
    if [ -f "${base}.json" ]; then
        schema_file="${base}.json"
    elif [ -f "${base}.csvs" ]; then
        schema_file="${base}.csvs"
    fi

    echo "Bestand uploaden: $file_path"
    if [ -n "$schema_file" ]; then
        echo "Optioneel schema-bestand gevonden: $schema_file"
        curl -X POST \
             -H "X-API-Key: $API_KEY" \
             -F "files=@${file_path}" \
             -F "files=@${schema_file}" \
             "$API_URL"
    else
        # Geen schema-bestand, upload alleen het CSV/TSV
        curl -X POST \
             -H "X-API-Key: $API_KEY" \
             -F "files=@${file_path}" \
             "$API_URL"
    fi
    echo
}

# Als TARGET een bestand is, upload het en het optionele schema
if [ -f "$TARGET" ]; then

    # Haal de extensie op en sta zowel .csv als .tsv toe
    extension="${TARGET##*.}"
    if [ "$extension" != "csv" ] && [ "$extension" != "tsv" ]; then
        echo "Fout: '$TARGET' is geen .csv- of .tsv-bestand."
        exit 1
    fi

    upload_single_file "$TARGET"

# Als TARGET een map is, verwerk alle .csv- en .tsv-bestanden erin recursief
elif [ -d "$TARGET" ]; then

    echo "Map verwerken: $TARGET"
    while IFS= read -r -d '' file; do
        upload_single_file "$file"
    done < <(find "$TARGET" -type f \( -iname '*.csv' -o -iname '*.tsv' \) -print0)

else
    echo "Fout: '$TARGET' is geen geldig bestand of map"
    exit 1
fi

Installatie- en Configuratiehandleiding#

  1. Script aanmaken en opslaan
    Sla het Bash-script apoally-insights-upload.sh op in een gewenste map, bijvoorbeeld /usr/local/bin/.
sudo nano /usr/local/bin/apoally-insights-upload.sh

Plak de inhoud van het script en sla het bestand op.

  1. Uitvoerbaar maken
    Zorg ervoor dat het script uitvoerbaar is:
sudo chmod +x /usr/local/bin/apoally-insights-upload.sh
  1. API-sleutel configureren
    Open het script en vervang YOUR-API-KEY door uw daadwerkelijke API-sleutel.
sudo nano /usr/local/bin/apoally-insights-upload.sh

Wijzig de regel:

API_KEY="YOUR-API-KEY"

Sla het bestand op en sluit het.

  1. Cronjob instellen
    Om het script regelmatig uit te voeren (niet vaker dan elke 15 minuten), maakt u een Cronjob aan:
crontab -e

Voeg de volgende regel toe om het script elke 15 minuten uit te voeren:

*/15 * * * * /usr/local/bin/apoally-insights-upload.sh /path/to/your/csv_or_tsv_files >> /var/log/apoally-upload.log 2>&1

Vervang /path/to/your/csv_or_tsv_files door het pad naar uw bestand of map.

  1. Logbestand controleren
    De uitvoer van het script wordt opgeslagen in /var/log/apoally-upload.log. Controleer het logbestand regelmatig om ervoor te zorgen dat het script correct werkt:
tail -f /var/log/apoally-upload.log
  1. Testuitvoering
    Voer het script handmatig uit om te controleren of alles correct is ingesteld:
/usr/local/bin/apoally-insights-upload.sh /path/to/your/csv_or_tsv_files

Controleer de uitvoer en het logbestand op fouten.

Opmerking#

  • Zorg ervoor dat uw systeem over een stabiele internetverbinding beschikt om de gegevens succesvol te kunnen uploaden.
  • Controleer regelmatig de Cronjob-uitvoering en de logbestanden om ervoor te zorgen dat er geen problemen optreden.