#!/bin/bash

set -e

STATE="$1"
FOLDER="$2"/files

MQTT_CONFIG_FOLDER="/data/openems/Bridge/Mqtt"

case "$STATE" in

    NeedsArtifactReboot)
        echo "No"
    ;;

    SupportsRollback)
        echo "No"
    ;;

    ArtifactInstall)
        echo "Processing OpenEMS Gateway credentials..."

        if [ ! -d "$FOLDER" ]; then
            echo "Directory $FOLDER not found, aborting"
            exit 1
        else
            files=($FOLDER/*)
            JSON_FILE=${files[0]}

            echo "Working with payload file $JSON_FILE"
        fi

        # get MQTT Data
        MQTT_BROKER_URL="$(jq -r -e .broker_url <"$JSON_FILE")"
        MQTT_USER="$(jq -r -e .username <"$JSON_FILE")"
        MQTT_PASS="$(jq -r -e .password <"$JSON_FILE")"
        MQTT_CLIENT_ID="$(jq -r -e .client_id <"$JSON_FILE")"

        # verify MQTT Data
        if [[ "$MQTT_BROKER_URL" == "null" ]]; then
            echo "MQTT_BROKER_URL not found"
            exit 0
        fi

        if [[ "$MQTT_PASS" == "null" ]]; then
            echo "MQTT_PASS not found"
            exit 0
        fi

        if [[ "$MQTT_USER" == "null" ]]; then
            echo "MQTT_USER not found"
            exit 0
        fi

        # Falls die Client ID nicht über den Datensatz mitgeliefert wird, wird versucht, eine UUID zu setzen
        if [[ "$MQTT_CLIENT_ID" == "null" ]]; then
            echo "MQTT_CLIENT_ID not found, trying to generate UUID as mqtt client id..."
            MQTT_CLIENT_ID=$(cat /proc/sys/kernel/random/uuid)
        fi

        echo "Creating OpenEMS MqttBridge for clientID $MQTT_CLIENT_ID"

        curl -X POST -H 'Authorization: Basic QWRtaW46YWRtaW4=' \
            -H 'Content-Type: application/json' \
            -d '{"jsonrpc":"2.0","method":"createComponentConfig","params":{
            "factoryPid": Bridge.Mqtt,
            "properties": [{
                "name": "id",
                "value": "mqtt-bridge-consolinno-cloud"
            },{
                "name": "brokerUrl",
                "value": "'${MQTT_BROKER_URL}'"
            },{
                "name": "password",
                "value": "'${MQTT_PASS}'"
            },{
                "name": "username",
                "value": "'${MQTT_USER}'"
            },{
                "name": "clientId",
                "value": "'${MQTT_CLIENT_ID}'"
            }
            ]}}' \
            http://localhost:8086/jsonrpc
esac
