Deblan blog

Le cut d'url de Deblan, l'API avec Shell

Souvenez-vous, j'avais écris un article concernant l'API de mon système de cut d'url disponible sur url.deblan.fr.

Aujourd'hui je vous propose un script écrit en Shell pour utiliser cette API en ligne de commandes :

#!/bin/sh

VERSION=1.5

urlencode() {
	echo "$1" | sed 's/&/%25/g'
}

usage() {
cat << EOF

NOM
	$(basename $0) - Contact l'API de url.deblan.fr pour raccourcir une URL

SYNOPSIS	
	$0 [OPTIONS] URL

DESCRIPTION
	 Contact l'API de url.deblan.fr pour raccourcir une URL

	--help, -h                   Afficher l'aide-mémoire et quitter
	--version, -v                Afficher le nom et la version du logiciel et quitter
	--title <titre>, -t <titre>  Ajoute un titre dans l'URL de retour

	--type <type>, -r <type>     Indique le type de redirection
	 Formats autorisés
	  - http : redirection http (entête http Location)
	  - meta : direction par meta html
		Valeur par défaut : http

	--time <time>, -s <time>
		Si --type vaut 1, ce paramètre sera ignoré
		Valeurs autorisées (en secondes) : 3, 5, 10
		Valeur par défaut : 5

	--format, -f <format>        Indique le format de retour des données
		Valeur par défaut : text

	 Formats autorisés
	  - json :
		 Retour sans erreur
		  {"error":0,"values":[URL],"format":"json"}
		 Retour avec erreur(s) 
		  {"error":1,"values":[ERREURS],"format":"json"}
		
	  - xml :
		 Retour sans erreur
		  <?xml version="1.0" encoding="UTF-8"?>
		  <response>
		    <error>0</error>
		    <values>
		      <value>URL</value>
		     </values>
		  </response>
		 Retour avec erreur
		  <?xml version="1.0" encoding="UTF-8"?>
		  <response>
		    <error>1</error>
		    <values>
		      <value>ERREUR 1</value>
		      <value>ERREUR 2</value>
		      [...]
		     </values>
		  </response>
	  - text :
		 Retour sans erreur
		  URL
		 Retour avec erreur
		  error
		  ERREURS

AUTEUR
	Ecrit par Simon Vieille - http://www.deblan.fr/

SIGNALER DES BOGUES
	simon.vieille _AT_ free _POINT_ fr

LICENCE
	Ce  programme  est  un  logiciel  libre.  Vous  pouvez le modifier et le redistribuer. Il n'y a AUCUNE GARANTIE dans la mesure autorisée par la loi.

EOF
}

version() {
	cat << EOF
$0, version $VERSION
EOF
}

URL=
TITLE=
TYPE=1
TIME=5
FORMAT=text

for p in "$@"; do
	case "$p" in
		--help|-h) 
			usage | less 
			exit 0;;

		--version|-v) 
			version 
			exit 0;;

		--title|-t)
			shift
			TITLE=$(urlencode "$1")
			shift;;

		--format|-f)
			shift
			FORMAT="$1"
			
			case $FORMAT in
				xml|text|json) ;;
				*) 
					echo "Erreur de paramètre (FORMAT) - $0 --help pour plus d'informations"
					exit 1;;
			esac
			shift;;

		--time|-s)
			shift
			TIME="$1"

			case $TIME in
				3|5|10);;
				*) 
					echo "Erreur de paramètre (TIME) - $0 --help pour plus d'informations"
					exit 1;;
			esac
			shift;;

		--type|-r)
			shift
			TYPE="$1"
			case $TYPE in
				http) TYPE=1;;
				meta) TYPE=2;;
				*) 
					echo "Erreur de paramètre (TYPE) - $0 --help pour plus d'informations"
					exit 1;;
			esac
			shift;;
	esac
done

if [ -z "$URL" ]; then
	URL=$(urlencode "$1")
	if [ -z "$URL" ]; then
		echo "Erreur de paramètre (URL) - $0 --help pour plus d'informations"
		exit 1
	fi
fi

TMP=/tmp/cut$(date '+%N')

wget "http://url.deblan.fr/gestion/api.php?url=$URL&title=$TITLE&type=$TYPE&format=$FORMAT&time=$TIME" -O $TMP >/dev/null 2>&1

echo "`cat $TMP`"
rm -f $TMP

exit 0

Enjoy :) !


Ajouter un commentaire

Vous pouvez utiliser du markdown.Afficher l'aide.