#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:$PATH
RETRY_AFTER=600

cd /opt/euro-beta
DATA="data_export/foodcost"

ENABLED=`systools/get_eurodb_config_val FoodCostSyncEnabled`
if [ ! "$ENABLED" ] || [ "$ENABLED" -eq 0 ]; then exit 0; fi

function running_on_master()
{
  INIFILE1=customdb.ini
  INIFILE=eurodb.ini
  MYIP=`/sbin/ifconfig eth0 | awk '/inet (addr:)?[0-9]/ { print gensub("^.*inet (addr:)?([0-9.]*) .*","\\\\2",1) }'` 
  HOST=`cat $INIFILE1 $INIFILE 2>/dev/null | awk '/Host=/ {print gensub("^.*Host=","",1); exit 0 }'`

  [ ! "$HOST" -o "$HOST" = 127.0.0.1 -o "$HOST" = localhost -o "$HOST" = "$MYIP" ]
}

running_on_master || exit



VAR="FoodCostLastTry"
LAST_TRY=`systools/get_eurodb_config_val $VAR`
NOW=`date +%s`
TO_SEND=`ls $DATA/*.csv 2>/dev/null`
case "$1" in
  test) TEST=1; ;;
  force) LAST_TRY=0; ;;
  count) echo $TO_SEND | wc -w; exit 0; ;;
esac

if [ ! "$LAST_TRY" ]; then LAST_TRY=0; fi
if [ ! "$TO_SEND" -o $(( $NOW - $LAST_TRY )) -lt $RETRY_AFTER  ] && [ ! "$TEST" ]
then
  exit 0
fi

# sem se to dostane jenom kdyz ne neco na poslani a ubehlo aspon 10 minut od posledniho pokusu
systools/set_eurodb_config_val $VAR string $NOW

USER=`systools/get_eurodb_config_val FoodCostUsername`
PWD=`systools/get_eurodb_config_val FoodCostPassword`
URL=`systools/get_eurodb_config_val FoodcostUrl`

CURL="curl -s --digest --max-time 600 --connect-timeout 5 -u $USER:$PWD "

function do_curl()
{
  RES=`$CURL -o /dev/null -w "%{http_code}" "$@" `
  STATUS=$?
  
  if [ $STATUS -ne 0 ] 
  then
    case $STATUS in
      3) echo "URL malformato"; ;;
      6) echo "Host non trovato - problema del DNS oppure host inesistente"; ;;
      7) echo "Impossibile collegarsi al host"; ;;
      *) echo "Errore CURL $STATUS"; ;;
    esac
    return 1
  elif [ $RES -lt 200 -o $RES -ge 300 ]
  then
    case $RES in
      401) echo "401 Non autorizzato (username o password errato)"; ;;
      403) echo "403 Non permesso"; ;;
      404) echo "404 Non trovato"; ;;
      *)   echo "Errore HTTP $RES"; ;;
    esac
    return 1
  fi
  return 0
}

function upload()
{
  do_curl -T $1 $2
}

function move()
{
  do_curl -X MOVE --header "Destination:$2" "$1"
}


cd $DATA
if [ "$TEST" ]; then echo test >test.csv; fi
NR=0
for f in *.csv
do
  if upload $f $URL/$f.tmp &&
     move $URL/$f.tmp $URL/$f &&
     rm $f
  then
    NR=$(( $NR + 1 ))
  else 
    break 
  fi
  
done

case $NR in
  0) echo "Nessun file inviato"; ;;
  1) echo "1 file inviato correttamente"; ;;
  *) echo "$NR files inviati correttamente"; ;;
esac
CNT=`ls *.csv 2>/dev/null | wc -l`
case $CNT in
  0) ;;
  1) echo "rimane ancora 1 file da inviare"; ;;
  *) echo "rimangono ancora $CNT files da inviare"; ;;
esac
exit 0


