#!/bin/sh
#
#  This file is part of TALER
#  Copyright (C) 2014-2024 Taler Systems SA
#
#  TALER is free software; you can redistribute it and/or modify it under the
#  terms of the GNU General Public License as published by the Free Software
#  Foundation; either version 3, or (at your option) any later version.
#
#  TALER is distributed in the hope that it will be useful, but WITHOUT ANY
#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License along with
#  TALER; see the file COPYING.  If not, If not, see <http://www.gnu.org/license>
#

# This is a converter that takes the output of an
# OAuth2 service which is expected to yield a full_name
# and a birthdate.
#
# The converter doesn't actually do anything, it
# just restricts the output to exactly these values.


# Hard error reporting on.
set -eu

echo "Running $0" 1>&2

# Exit, with error message (hard failure)
function exit_fail() {
  echo " FAIL: " "$@" >&2
  EXIT_STATUS=1
  exit "$EXIT_STATUS"
}

CONF="$HOME/.config/taler-exchange.conf"
VERBOSE=0

while getopts 'c:hovV' OPTION;
do
    case "$OPTION" in
        c)
            # shellcheck disable=SC2034
            CONF="$OPTARG"
            ;;
        h)
            echo "This is a KYC measure program that freezes the account and flags it for manual investigation. This is the ultimate fallback measure."
            echo 'Supported options:'
            echo '  -a           -- show required attributes'
            # shellcheck disable=SC2016
            echo '  -c $CONF     -- set configuration'
            echo '  -h           -- print this help'
            echo '  -i           -- show required inputs'
            echo '  -r           -- show required context'
            echo '  -v           -- show version'
            echo '  -V           -- be verbose'
            exit 0
            ;;
        o)
            # This converter produces a full name and birthdate.
            echo "full_name"
            echo "birthdate"
            exit 0
            ;;
        v)
            echo "$0 v0.0.0"
            exit 0
            ;;
        V)
            VERBOSE=1
            ;;
        ?)
        exit_fail "Unrecognized command line option"
        ;;
    esac
done

# First, check everything we expect is in stdin.
J=$(jq -r 'def get($k):
             if has($k)
               then .[$k]
               else error("attribute missing")
           end;
           {"full_name":get("full_name"),
            "birthdate":get("birthdate")}')

# Return the restricted values.
echo "$J"

exit 0
