#!/bin/sh

# curl -s https://www.homedepot.com/p/HDX-Black-5-Tier-Plastic-Garage-Storage-Shelving-Unit-36-in-W-x-74-in-H-x-18-in-D-241592/306331734 | grep -v href | md5sum | awk '{print $1}'

checkType="total"
agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0"
status=""
verbose=""
size=0
checkSize=""

while [ -n "$1" ]; do
  case "$1" in
    --alpha) checkType="alpha"; shift 1;;
    -v) verbose="true"; shift 1;;
    -u) url="$2"; shift 2;;
    -s) size="$2"; shift 2;;
    *) shift 1;;
  esac
done

check_size_total() {
  [ -n "$verbose" ] && echo "DEBUG: curl --connect-timeout 10 -A \"$agent\" -skL \"$url\" -w \"%{size_download}\" -o /dev/null"
  checkSize=$(curl --connect-timeout 10 -A "$agent" -skL "$url" -w "%{size_download}" -o /dev/null)
  status=$?
  if [ "$status" != "0" ]; then
    sleep 2
    checkSize=$(curl --connect-timeout 10 -A "$agent" -skL "$url" -w "%{size_download}" -o /dev/null)
    status=$?
  fi
}

check_size_alpha() {
  output=`curl --connect-timeout 10 -A "$agent" -skL "$url"`
  status=$?
  if [ "$status" != "0" ]; then
    sleep 2
    output=`curl --connect-timeout 10 -A "$agent" -skL "$url"`
    status=$?
  fi
  checkSize=`echo "$output" | tr -d -c "[:alnum:]" | wc -c`
}

case $status in
  0) ;;
  3) echo "UNKNOWN: malformed URL $url" && exit 3;;
  6) echo "WARNING: could not resolve host for $url" && exit 3;;
  7) echo "WARNING: could not connect to host $url" && exit 1;;
  28) echo "WARNING: curl timeout" && exit 1;;
  35) echo "WARNING: TLS/SSL handshake failure - $output" && exit 1;;
  47) echo "WARNING: too many redirects" && exit 1;;
  52) echo "WARNING: $url returned no data" && exit 1;;
esac

check_size_${checkType}

if [ "$size" = "$checkSize" ]; then
  echo "OK; received $size bytes|bytes=${checkSize}B"
  exit 0
else
  echo "CRITICAL; $checkSize is not expected value of $size bytes|bytes=${checkSize}B"
  exit 2
fi
