#!/bin/bash

USAGE="./bin/waitForHTTP.sh target [retries] [delay] [test_output]"
if [ -z "$1" ]; then
  echo $USAGE
  exit
fi
TARGET="$1"
RETRIES=${2:-2}
RETRY_DELAY=${3:-5}
TEST_OUTPUT=${4:-"pong"}

START_TIME=$(date +%s)
function waitForHTTP {
  echo "Waiting for $TARGET..."
  OUTPUT=$(curl -s ${TARGET})
  if [ $? -eq 0 ] && [ "$OUTPUT" == "$TEST_OUTPUT" ]; then
    echo "API Ready - Took $(($(date +%s) - $START_TIME)) seconds to boot" && \
    exit 0
  else
    RETRIES=$(($RETRIES-1))
    if [ $RETRIES -eq 0 ]; then
      echo "API failed to start!"
      exit 1
    else
      echo "API not up! Retries left: $RETRIES. Waiting $RETRY_DELAY seconds."
      sleep $RETRY_DELAY
      waitForHTTP
    fi
  fi
}

waitForHTTP
