# Copyright (c) 2021-2025 community-scripts ORG
# Author: michelroegl-brunner
# License: MIT | https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/LICENSE

post_to_api() {

  if ! command -v curl &> /dev/null; then
    return
  fi

  if [ "$DIAGNOSTICS" = "no" ]; then
    return
  fi

  if [ -z "$RANDOM_UUID" ]; then
    return
  fi

  local API_URL="http://api.community-scripts.org/upload"
  local pve_version="not found"
  pve_version=$(pveversion | awk -F'[/ ]' '{print $2}')

  JSON_PAYLOAD=$(cat <<EOF
{
    "ct_type": $CT_TYPE,
    "type":"lxc",
    "disk_size": $DISK_SIZE,
    "core_count": $CORE_COUNT,
    "ram_size": $RAM_SIZE,
    "os_type": "$var_os",
    "os_version": "$var_version",
    "disableip6": "$DISABLEIP6",
    "nsapp": "$NSAPP",
    "method": "$METHOD",
    "pve_version": "$pve_version",
    "status": "installing",
    "random_id": "$RANDOM_UUID"
}
EOF
)

  RESPONSE=$(curl -s -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \
    -H "Content-Type: application/json" \
    -d "$JSON_PAYLOAD") || true
}

post_to_api_vm() {

  if [[ ! -f /usr/local/community-scripts/diagnostics ]]; then
    return
  fi
  DIAGNOSTICS=$(grep -i "^DIAGNOSTICS=" /usr/local/community-scripts/diagnostics | awk -F'=' '{print $2}')
  if ! command -v curl &> /dev/null; then
    return
  fi

  if [ "$DIAGNOSTICS" = "no" ]; then
    return
  fi

  if [ -z "$RANDOM_UUID" ]; then
    return
  fi

  local API_URL="http://api.community-scripts.org/upload"
  local pve_version="not found"
  pve_version=$(pveversion | awk -F'[/ ]' '{print $2}')

  DISK_SIZE_API=${DISK_SIZE%G}

  JSON_PAYLOAD=$(cat <<EOF
{
    "ct_type": 2,
    "type":"vm",
    "disk_size": $DISK_SIZE_API,
    "core_count": $CORE_COUNT,
    "ram_size": $RAM_SIZE,
    "os_type": "$var_os",
    "os_version": "$var_version",
    "disableip6": "",
    "nsapp": "$NSAPP",
    "method": "$METHOD",
    "pve_version": "$pve_version",
    "status": "installing",
    "random_id": "$RANDOM_UUID"
}
EOF
)

  RESPONSE=$(curl -s -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \
    -H "Content-Type: application/json" \
    -d "$JSON_PAYLOAD") || true
}

POST_UPDATE_DONE=false
post_update_to_api() {

    if ! command -v curl &> /dev/null; then
      return
    fi

    if [ "$POST_UPDATE_DONE" = true ]; then
        return 0
    fi
    local API_URL="http://api.community-scripts.org/upload/updatestatus"    
    local status="${1:-failed}"
    local error="${2:-No error message}"

    JSON_PAYLOAD=$(cat <<EOF
{
    "status": "$status",
    "error": "$error",
    "random_id": "$RANDOM_UUID"
}
EOF
)
   
  RESPONSE=$(curl -s -w "%{http_code}" -L -X POST "$API_URL" --post301 --post302 \
    -H "Content-Type: application/json" \
    -d "$JSON_PAYLOAD") || true

  POST_UPDATE_DONE=true
}