77 lines
1.3 KiB
Bash
Executable file
77 lines
1.3 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
oc_handle_get() {
|
|
# on attrape le parametre de la fonction
|
|
line="$1"
|
|
|
|
# le verble http (= le premier mot de la requete)
|
|
route="$(echo "$line" |sed -e 's/^GET *//')"
|
|
|
|
echo "Route: $route"
|
|
|
|
# table de routage
|
|
case "$route" in
|
|
/history) # faire des trucs pour history
|
|
cat history.csv >> input
|
|
# TODO: rediriger ça vers le client
|
|
;;
|
|
|
|
/count/*) # faire des trucs pour count
|
|
value="$(echo "$route" |sed -e 's|/count/||')"
|
|
timestamp="$(date --rfc-3339=seconds)"
|
|
|
|
echo "$timestamp, $value" >> history.csv
|
|
;;
|
|
esac
|
|
}
|
|
|
|
oc_handle_post() {
|
|
>&2 echo "Warning: NOT YET IMPLEMENTED"
|
|
}
|
|
|
|
oc_handle_request() {
|
|
# on attrape le parametre de la fonction
|
|
read line
|
|
# le verble http (= le premier mot de la requete)
|
|
verb="$(echo "$line" |awk '{print $1;}')"
|
|
|
|
echo "Cat pid = $pid"
|
|
echo "Verb: $verb"
|
|
case "$verb" in
|
|
GET)
|
|
oc_handle_get "$line"
|
|
;;
|
|
POST)
|
|
oc_handle_post "$line"
|
|
;;
|
|
esac
|
|
echo "Closing pipe..."
|
|
exec 3>&-
|
|
> input
|
|
}
|
|
|
|
# écouter sur le port 80
|
|
# prendre une requete
|
|
# lire la requete 'GET ... '
|
|
|
|
# GET /history
|
|
# => oc_history
|
|
# GET /count/:value
|
|
# => oc_count
|
|
oc_server() {
|
|
port="$1"
|
|
|
|
while true ; do
|
|
exec 3<> input
|
|
|
|
>&3 cat input &
|
|
pid="$!"
|
|
|
|
echo "Ready for next client !"
|
|
nc -l -q 1 -p "$port" <&3 -c "oc_handle_request"
|
|
#"$pid"
|
|
done
|
|
}
|
|
|
|
oc_server "$1"
|
|
|