#!/bin/bash
set -e
set -x

pkg=orthanc-wsi
CUR_DIR=`pwd`
service_name=orthanc
orthanc_server="http://localhost:8042"

if [ "${AUTOPKGTEST_TMP}" = "" ] ; then
  AUTOPKGTEST_TMP=$(mktemp -d /tmp/${pkg}-test.XXXXXX)
  trap "rm -rf ${AUTOPKGTEST_TMP}" 0 INT QUIT ABRT PIPE TERM
fi

cp -a ${CUR_DIR}/debian-tests-data/* "${AUTOPKGTEST_TMP}"
cp -a ${CUR_DIR}/debian/tests/configuration.json "${AUTOPKGTEST_TMP}"

cd "${AUTOPKGTEST_TMP}"
ln -s /usr/share/orthanc/plugins/libOrthancWSI.so "${AUTOPKGTEST_TMP}"/libOrthancWSI.so

# Check if user 'orthanc' exists
if getent passwd orthanc > /dev/null 2>&1; then
    echo "User 'orthanc' exists."
else
	adduser --system --group orthanc
    echo "User 'orthanc' added."
fi


# Stop running instance of orthanc
sudo systemctl stop orthanc
sudo pkill Orthanc || true

sudo /usr/sbin/Orthanc ./configuration.json --verbose &


# Try for 15 seconds to find the REST API of Orthanc in a healthy state
URL=http://localhost:8042/system
tries=15
set +e  # Thanks Etienne Mollier - https://lists.debian.org/debian-mentors/2025/04/msg00176.html
while true
do
    STATUSCODE=$(curl --silent --output /dev/null --write-out "%{http_code}" ${URL})
    test "$STATUSCODE" -eq 200 && echo "Orthanc initialized!" && break
    tries=$(expr "$tries" - 1)
    test "$tries" -le 0 && echo "Unable to initialize Orthanc" && exit 1
    sleep 1
done
set -e


# Transcode data and push to server
OrthancWSIDicomizer CMU-1-Small-Region.tiff --orthanc=$orthanc_server


if [ $? -eq 0 ]; then
    echo "TIFF transcoded and pushed to Orthanc server"
fi


# Stop orthanc
sudo systemctl stop orthanc
sudo pkill Orthanc || true
