#!/bin/bash
export PROTOCOL="https"
export BASE_URL='ponton.dev.bearingx.io'
export USERNAME='dev'
export PASSWORD='test'
export FILENAME='./bearingx_upload.csv'
export WORKDIR='./'
cleanup() {
echo "Cleaning up..."
rm bearingx_cookie.txt
exit
}
success() {
echo "Upload successfully done!"
cleanup
}
error() {
echo "Upload failed!"
cleanup
}
echo "Starting automatic upload..."
cd $WORKDIR || error
echo "Logging in as '${USERNAME}' and saving cookie"
curl "${PROTOCOL}://${BASE_URL}/login" \
-H "authority: ${BASE_URL}" \
-H 'cache-control: max-age=0' \
-H 'upgrade-insecure-requests: 1' \
-H "origin: ${PROTOCOL}://${BASE_URL}" \
-H 'content-type: application/x-www-form-urlencoded' \
-H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,im-
age/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'
\
-H 'sec-fetch-site: same-origin' \
-H 'sec-fetch-mode: navigate' \
-H 'sec-fetch-user: ?1' \
-H 'sec-fetch-dest: document' \
-H 'accept-language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7' \
--data-raw "username=${USERNAME}&password=${PASSWORD}" \
--compressed \
-c "bearingx_cookie.txt" \
--silent \
|| error
echo "Uploading file '${FILENAME}'"
responseCode=$(curl --write-out "%{http_code}\\n" "${PROTO-
COL}://${BASE_URL}/api/orders/upload" \
-H "authority: ${BASE_URL}" \
-H 'accept: application/hal+json' \
-H "origin: ${PROTOCOL}://${BASE_URL}" \
-H 'sec-fetch-site: same-origin' \
-H 'sec-fetch-mode: cors' \
-H 'sec-fetch-dest: empty' \
-H 'accept-language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7' \
-F "file=@${FILENAME}" \
--compressed \
-b "bearingx_cookie.txt" \
--output "/dev/null" \
--silent) \
|| error
# http response code should start with 20
if [[ "$responseCode" != 20* ]]
then
echo "Return code: ${responseCode}"
error
fi
success
Wie funktionieren die Skripte?
Die folgende Beschreibung basiert auf dem mitgelieferten Skript 'automaticUploadBearingx.sh'. Das Skript ist nur ein Beispiel dafür, wie ein Upload möglich ist.
Das Skript ruft die Restfassade über einfache curl-Befehle auf. Der erste curl-Befehl erstellt ein Login
und speichert das erstellte Cookie in einer Datei zur weiteren Verwendung. Diese Datei sollte sich direkt
neben dem Skript befinden und heißt _'bearingx-cookie.txt'_. Es sollte daran gedacht werden, dieses
Cookie zu löschen, sobald das Skript fertig ist. Der nächste curl-Befehl verwendet das im ersten Schritt
erstellte Cookie, um den Upload-Aufruf zu authentifizieren. Der zweite curl-Befehl ruft _'/api/or-
ders/upload'_ der Rest-Facade auf und hängt die hochzuladende Datei an den Aufruf an.
Das Shell-Skript muss UNIX-Zeilenenden haben, um korrekt zu funktionieren (die "-H [...]-Befehle wur-
den zur besseren Lesbarkeit in neue Zeilen verschoben, gehören aber immer noch zum obigen Befehl).