diff --git a/laconia b/laconia index 09e8d18..6b91eba 100755 --- a/laconia +++ b/laconia @@ -1,14 +1,7 @@ -#!/bin/sh +#!/bin/bash PROGNAME=${0##*/} VERSION="0.0.1" - -proto="$(echo $1 | grep :// | sed -e's,^\(.*://\).*,\1,g')" -url=$(echo $1 | sed -e 's,$proto,,g') -host=$(echo "$url" | sed -e 's|^[^/]*//||' -e 's|/.*$||') -path="$(echo $url | grep / | cut -d/ -f2-)" -port=300 - error_exit() { printf "%s: %s\n" "$PROGNAME" "${1:-"Unknown Error"}" >&2 exit 1 @@ -19,15 +12,36 @@ usage() { printf "Simple client for spartan protocol\n" } -case $1 in - -h | --help) - usage; exit ;; - -p | --port) - export PORT=$3 ;; - -* | --*) - usage; error_exit "unknown option $1" ;; - *) - echo $proto $host $path $port - printf "$host /$path 0\r\n" | nc $host $port - ;; -esac +request(){ + printf "$host /$path $( $post | wc -c )\r\n$post" | nc $host $port +} + +while getopts ":h:p:i:u:" arg; do + case $arg in + h | --help) + usage; exit ;; + p | --port) + export port=$OPTARG + ;; + i | --input) + export post=$OPTARG + ;; + u | --url) + url_unparsed=$OPTARG + #pattern=^((spartan)://)?([^/:]+)(:([0-9]+))?/(.*)$ + #echo $url_unparsed + if [[ "$url_unparsed" =~ ^((spartan)://)?([^/:]+)(:([0-9]+))?/(.*)$ ]]; then + url=$(echo $url_unparsed | sed -e 's,spartan://,,g') + host=$(echo "$url" | sed -e 's|^[^/]*//||' -e 's|/.*$||') + path="$(echo $url | grep / | cut -d/ -f2-)" + port=${port:-300} + echo $port $post $host $path + request + else + echo $url_unparsed is not a Spartan URL + fi + ;; + * | -* | --*) + usage; error_exit "unknown option $1" ;; + esac +done