#!/usr/bin/env bash

## === Prolouge start ===

set -e
set -o pipefail

APP=wiki-rdr-proxy
HOST=rdrproxy.mpro.maps.yandex.ru
ANYHOST=rdrproxy.mpro.maps.yandex.ru
CHECK=$1

warn() { echo "1;$*" >&3; }
fail() { echo "2;$*" >&3; }
GET() { /usr/lib/yandex/maps/yacare/http-get.sh -t 5 -a "$APP" -h "$HOST" "$1"; }
appstat() { /usr/lib/yandex/maps/yacare/http-get.sh -t 5 -a "$APP" -h "$ANYHOST" ":6100/stat"; }

if [ -z "$CHECK" ] || [ "$CHECK" = "alive" ]; then
    CHECKED=y
    (/usr/lib/yandex/maps/yacare/http-get.sh -t 5 -a "$APP" -h "$ANYHOST" '/ping' | (grep '^[012];' >&3 ||:)) \
        || fail "$APP does not respond to /ping"
fi

if [ -n "$CHECK" ]; then
    appstat | jq -r ".alarms.$CHECK // \"0;OK\"" >&3
else
    STAT=${TMPDIR:-/var/tmp}/yacare-check.$$
    trap "rm -f $STAT" EXIT
    appstat > "$STAT"
    jq -r '.alarms | keys[]' "$STAT" | while read ALARM; do
        jq -r "alarms.$ALARM" "$STAT" >&3
    done
    rm -f "$STAT"
fi

# === Prolouge end ===

if [ -z "$CHECK" ] || [ "$CHECK" = "alive" ]; then
    CHECKED=y
    true
fi

if [ -z "$CHECK" ] || [ "$CHECK" = "load" ]; then
    CHECKED=y
    true
fi


# === Epilouge start ===

if [ -z "$CHECKED" ]; then
    fail "Unknown check $CHECK"
fi

# === Epilouge end ===

