Newer
Older
api-wos / SOAP / WosClose.sh
@besagni besagni on 25 Jul 2022 2 KB Homogénéisation des options
#!/bin/bash


# Initialisation des variables pour les options
programme=$(basename $0)
substitut=$(echo $programme | sed 's/./ /g')
version='1.3.1'
modif='25/07/2022'

function usage
{
echo "Usage : $programme -s sid [ -j cookie_jar ] "
echo "        $programme -h "
}

function aide
{
cat << EOT

Usage
=====
    $programme -s sid [ -j cookie_jar ]
    $programme -h

Options
=======
    -h  affiche cette aide
    -j  indique le nom du fichier qui recevra les cookies (“cookies.txt”
        par défaut)
    -s  indique le jeton d’authentification “SID” obtenu avec le programme
        d’authentification à l'API WoS

EOT

exit 0
}

function nettoie
{
if [[ -f close$$.xml ]]
then
    rm -f close$$.xml
fi
}

# Déclaration explicite du tableau “liste”
declare -a liste

# Options
while getopts hj:s: i
    do
    case $i in
        h) aide;;
        j) cookiejar=$OPTARG;;
        s) sid=$OPTARG;;
        \?) echo  >&2
            usage >&2
            exit 1;;
    esac
    done

# Vérification des options
if [[ -z $sid ]]
then
    echo "Erreur : option manquante" >&2
    echo "" >&2
    usage   >&2
    echo "" >&2
    exit 2
fi

if [[ -z $cookiejar ]]
then
    cookiejar='cookies.txt'
fi

# Vérification de la présence des programmes
# “curl” et “xmllint”
for i in curl xmllint
do
    prog=$(which $i 2> /dev/null)
    if [[ -z $prog ]]
    then
        echo "" >&2
        echo "Erreur : programme “$i” introuvable. Vérifier \$PATH." >&2
        echo "" >&2
        exit 2
    fi
done

# Nettoyage en cas d’arrêt prématuré
trap nettoie HUP INT QUIT TERM

# Définition des fichiers de sortie
out='WosApiOut.txt'
err='WosApiErr.txt'

cat << EOT > close$$.xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
 xmlns:auth="http://auth.cxf.wokmws.thomsonreuters.com">
   <soapenv:Header/>
   <soapenv:Body>
      <auth:closeSession/>
   </soapenv:Body>
</soapenv:Envelope>
EOT

curl -X POST -d @close$$.xml -b $cookiejar -c $cookiejar -v 'http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl' \
     -H "Cookie: SID=$sid" 2> $err | xmllint -format - > $out

msg=$(perl -ne 'print "$1" if m|<faultstring>(.+?)</faultstring>|;' $out)
if [[ -n $msg ]]
then
    echo " " >&2
    echo "Erreur : $msg ">&2
    echo " " >&2
    nettoie
    exit 3
else
    echo " " >&2
    echo "Fermeture de session réussie " >&2
    echo " " >&2
fi

nettoie


exit 0