#!{{ bash }}

set -e

APACHEDEX_FILE='{{ apdex_file }}/ApacheDex-'$(date +%Y-%m-%d)'.html'
APACHEDEX_REPORT_JSON_FILE={{ apdex_status_file }} 
DESIRED_THRESHOLD={{ user_threshold }}

# Check if the file is there
if [ ! -s "$APACHEDEX_FILE" ]; then 
  # If file doesn't exists create one
  # If it is empty check for modification time
  if [ ! -f "$APACHEDEX_FILE" ]; then
    touch $APACHEDEX_FILE
  else
    MODIFIED_DATE=`stat -c '%Z' $APACHEDEX_FILE`
    CURRENT_DATE=`date +%s`
    if [[ `echo "$CURRENT_DATE - $MODIFIED_DATE" | bc` -gt 108000 ]]
    then 
      echo "File modification date is greater than 30 hours"
      JSON_CONTENT=`cat $APACHEDEX_REPORT_STATUS_FILE`
      MESSAGE=`echo $JSON_CONTENT | python -c 'import json,sys;obj=json.load(sys.stdin);print obj["message"]'`
      echo $MESSAGE
      exit 2
    else
      echo "File is empty for now"
    fi
  fi
else
  # Check if the result exists
  {
    REGEX="Overall<\/h2><table .*><tr>[[:space:]]<th>apdex<\/th><th>.*?<tr>[[:space:]]<td [^<]*>(.*?)%<\/td>"
    FILE_CONTENT=`cat $APACHEDEX_FILE`
    if [[ $FILE_CONTENT =~ $REGEX ]]
    then
      RESULT=${BASH_REMATCH[1]}
      RESULT=${RESULT:-0}
      if [[ `echo "$RESULT > $DESIRED_THRESHOLD" | bc` -eq 1 ]]
      then
        echo "Your score is $RESULT %, Thanks for keeping it all clean"
      else
        echo "Threshold is lower than exptected: Expected was $DESIRED_THRESHOLD % and we current is $RESULT %"
        exit 2
      fi
    else
      echo "No threshold found in the result"
    fi
  } || {
    echo "Cannot parse the apdex result"
  }
fi
