@@ 0,0 1,192 @@
+#!/bin/bash
+
+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
+ echo "Please, hydrate TOKEN"
+ echo 'export USERNAME=XXX'
+ echo 'eval $('$0' token get $USERNAME) # then type your password'
+ exit 1
+ fi
+}
+
+cmd_tag_post() {
+ ensure_token
+
+ url="$api_prefix_url/tags"
+
+ label="$1"
+
+ 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 .
+}
+
+cmd_tag_get() {
+ ensure_token
+
+ id="$1"
+
+ if [ -z "$id" ]
+ then
+ cmd_tag_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)
+
+ 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"
+
+ 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
+}
+
+cmd_tag_post_usage() {
+ echo "$0 tag post tag-label"
+}
+
+cmd_tag_put_usage() {
+ echo "$0 tag put tag-id tag-label"
+}
+
+cmd_tag_get_usage() {
+ echo "$0 tag get tag-id"
+}
+
+cmd_tag_list_usage() {
+ echo "$0 tag list"
+}
+
+cmd_tag_find_usage() {
+ echo "$0 tag find label=toot"
+ echo "$0 tag find \"label[]=foo&label[]=bar\""
+}
+
+cmd_tag_usage() {
+ cmd_tag_list_usage
+ cmd_tag_find_usage
+ cmd_tag_get_usage
+ cmd_tag_post_usage
+ cmd_tag_put_usage
+}
+
+cmd_token() {
+ case "$1" in
+ get) shift; cmd_token_get "$@";;
+ *) cmd_token_usage ;;
+ esac
+}
+
+cmd_token_usage() {
+ echo "$0 token get user-name"
+ echo " password is read from stdin"
+}
+
+cmd_global_usage() {
+ echo "Usage:"
+ cmd_tag_usage
+ cmd_token_usage
+}
+
+case "$1" in
+ tag) shift; cmd_tag "$@";;
+ token) shift; cmd_token "$@";;
+ *) cmd_global_usage ;;
+esac