9ece0fa7b805 — Eddie Barraco 5 years ago
Refactorise the script
1 files changed, 129 insertions(+), 117 deletions(-)

M script.sh
M script.sh +129 -117
@@ 4,32 4,6 @@ protocol="http"
 domain="blog.eddiebarraco.docker"
 api_prefix_url="$protocol://$domain/api"
 
-send_request()
-{
-	url="$1"
-	post_data="$2"
-	method="${3:-GET}"
-	authentication="$4"
-
-	if [ ! -z "$authentication" ]
-	then
-		ensure_token
-	fi
-
-	echo $(curl -s -X "$method" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d "$post_data" "$url")
-}
-
-cmd_token_get() {
-	username="$1"
-	read -s password
-
-	url="$api_prefix_url/login_check"
-	post_data="{\"username\": \"$username\", \"password\": \"$password\"}"
-
-	token=$(send_request "$url" "$post_data" "POST" | jq -r .token)
-	echo "export TOKEN=$token"
-}
-
 ensure_token() {
 	if [ -z "$TOKEN" ]
 	then

          
@@ 40,102 14,77 @@ ensure_token() {
 	fi
 }
 
-cmd_tag_post() {
-	ensure_token
-
-	url="$api_prefix_url/tags"
-
-	label="$1"
+send_request()
+{
+	url="$1"
+	post_data="$2"
+	method="$3"
 
-	if [ -z "$label" ]
-	then
-		cmd_tag_post_usage
-		exit 1
-	fi
-
-	post_data="{\"label\": \"$label\"}"
-
-	response=$(send_request "$url" "$post_data" "POST" true)
-
-	echo $response | jq .
+	echo $(curl -s -X "$method" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d "$post_data" "$url")
 }
 
-cmd_tag_get() {
-	ensure_token
-
-	id="$1"
+send_rest_get_request()
+{
+	target="$1"
+	id="$2"
+	query_parameters="$3"
 
 	if [ -z "$id" ]
 	then
-		cmd_tag_get_usage
+		url="$api_prefix_url/$target"
+	else
+		url="$api_prefix_url/$target/$id"
+	fi
+
+	if [ ! -z "$query_parameters" ]
+	then
+		url="$url?$query_parameters"
+	fi
+
+	send_request "$url" "$post_data" "GET"
+}
+
+send_rest_post_request()
+{
+	target="$1"
+	post_data="$2"
+
+	url="$api_prefix_url/$target"
+
+	send_request "$url" "$post_data" "POST"
+}
+
+cmd_token_get_usage() {
+	echo "$0 token get user-name"
+	echo "    password is read from stdin"
+}
+
+cmd_token_usage() {
+	cmd_token_get_usage
+}
+
+cmd_token() {
+	case "$1" in
+		get) shift; cmd_token_get "$@";;
+		*) cmd_token_usage ;;
+	esac
+}
+
+cmd_token_get() {
+	username="$1"
+	if [ -z "$username" ]
+	then
+		cmd_token_get_usage
 		exit 1
 	fi
 
-	url="$api_prefix_url/tags/$id"
-
-	response=$(send_request "$url" "$post_data" "GET" true)
-
-	echo $response | jq .
-}
-
-cmd_tag_list() {
-	ensure_token
-
-	url="$api_prefix_url/tags"
-
-	response=$(send_request "$url" "$post_data" "GET" true)
-
-	echo $response | jq .
-}
-
-cmd_tag_find() {
-	ensure_token
-
-	search="$1"
-
-	if [ -z "$search" ]
-	then
-		cmd_tag_find_usage
-		exit 1
-	fi
-
-	url="$api_prefix_url/tags?$search"
-
-	response=$(send_request "$url" "$post_data" "GET" true)
+	read -s password
 
-	echo $response | jq .
-}
-
-cmd_tag_put() {
-	ensure_token
-
-	id="$1"
-	label="$2"
-
-	if [ -z "$id" ] || [ -z "$label" ]
-	then
-		cmd_tag_put_usage
-		exit 1
-	fi
-
-	url="$api_prefix_url/tags/$id"
+	url="$api_prefix_url/login_check"
+	post_data="{\"username\": \"$username\", \"password\": \"$password\"}"
 
-	post_data="{\"label\": \"$label\"}"
-
-	response=$(send_request "$url" "$post_data" "PUT" true)
-
-	echo $response | jq .
-}
-
-cmd_tag() {
-	case "$1" in
-		post) shift; cmd_tag_post "$@";;
-		put) shift; cmd_tag_put "$@";;
-		get) shift; cmd_tag_get "$@";;
-		list) shift; cmd_tag_list "$@";;
-		find) shift; cmd_tag_find "$@";;
-		*) cmd_tag_usage ;;
-	esac
+	token=$(send_request "$url" "$post_data" "POST" | jq -r .token)
+	echo "export TOKEN=$token"
 }
 
 cmd_tag_post_usage() {

          
@@ 167,16 116,79 @@ cmd_tag_usage() {
 	cmd_tag_put_usage
 }
 
-cmd_token() {
+cmd_tag() {
+	ensure_token
 	case "$1" in
-		get) shift; cmd_token_get "$@";;
-		*) cmd_token_usage ;;
+		post) shift; cmd_tag_post "$@";;
+		put) shift; cmd_tag_put "$@";;
+		get) shift; cmd_tag_get "$@";;
+		list) shift; cmd_tag_list "$@";;
+		find) shift; cmd_tag_find "$@";;
+		*) cmd_tag_usage ;;
 	esac
 }
+cmd_tag_list() {
 
-cmd_token_usage() {
-	echo "$0 token get user-name"
-	echo "    password is read from stdin"
+	echo $(send_rest_get_request "tags") | jq .
+}
+
+cmd_tag_find() {
+
+	search="$1"
+
+	if [ -z "$search" ]
+	then
+		cmd_tag_find_usage
+		exit 1
+	fi
+
+	echo $(send_rest_get_request "tags" "$id" "$search") | jq .
+}
+
+cmd_tag_get() {
+	id="$1"
+
+	if [ -z "$id" ]
+	then
+		cmd_tag_get_usage
+		exit 1
+	fi
+
+	echo $(send_rest_get_request "tags" "$id") | jq .
+}
+
+cmd_tag_post() {
+	label="$1"
+
+	if [ -z "$label" ]
+	then
+		cmd_tag_post_usage
+		exit 1
+	fi
+
+	post_data="{\"label\": \"$label\"}"
+
+	echo $(send_rest_post_request "tags" "$post_data") | jq .
+}
+
+cmd_tag_put() {
+
+	id="$1"
+	label="$2"
+
+	if [ -z "$id" ] || [ -z "$label" ]
+	then
+		cmd_tag_put_usage
+		exit 1
+	fi
+
+	url="$api_prefix_url/tags/$id"
+
+	post_data="{\"label\": \"$label\"}"
+
+	response=$(send_request "$url" "$post_data" "PUT")
+
+	echo $response | jq .
 }
 
 cmd_global_usage() {