Files
website/tesoft.bash

181 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
cookie_path=./cookies.txt
print_help() {
echo "tesoft.dev helper script"
echo ""
echo "usage: $0 <action>"
echo ""
echo "login into the webpage with a password:"
echo "> $0 login"
echo ""
echo "logout from the webpage:"
echo "> $0 logout"
echo ""
echo "create a new blog article:"
echo "> $0 upload ./article.tar"
echo ""
echo "update an existing blog article:"
echo "> $0 patch 123 ./article.tar"
echo ""
echo "publish an existing blog article:"
echo "> $0 publish 123"
echo ""
echo "unpublish an existing blog article:"
echo "> $0 unpublish 123"
echo ""
echo "delete an existing blog article:"
echo "> $0 drop 123"
echo ""
}
login() {
echo -n "password: "
read -s password
echo ""
out=$(curl -v -f -H 'Content-Type: application/json' -d "{\"password\":\"$password\"}" "$URL/api/login" -c "$cookie_path" 2>&1)
if [ $? -ne 0 ]; then
echo "$out" >&2
exit 1
fi
echo "ok"
}
logout() {
out=$(curl -v -f -X POST "$URL/api/logout" -b "$cookie_path" 2>&1)
if [ $? -ne 0 ]; then
echo "$out" >&2
exit 1
fi
rm -f "$cookie_path"
echo "ok"
}
upload() {
if [ -z "$1" ]; then
echo "error: article file is not passed" >&2
exit 1
fi
if ! [ -f "$1" ]; then
echo "error: article file not found" >&2
exit 1
fi
out=$(curl -v -f -X PUT -F "file=@$1" "$URL/api/blog" -b "$cookie_path" 2>&1)
if [ $? -ne 0 ]; then
echo "$out" >&2
exit 1
fi
echo "ok, id = $(echo "$out" | tail -1 | grep -oP '[0-9]+')"
}
patch() {
if [ -z "$1" ]; then
echo "error: article id is not passed" >&2
exit 1
fi
if [ -z "$2" ]; then
echo "error: article file is not passed" >&2
exit 1
fi
if ! [ -f "$2" ]; then
echo "error: article file not found" >&2
exit 1
fi
out=$(curl -v -f -X PATCH -F "file=@$2" "$URL/api/blog/$1" -b "$cookie_path" 2>&1)
if [ $? -ne 0 ]; then
echo "$out" >&2
exit 1
fi
echo "ok"
}
publish() {
if [ -z "$1" ]; then
echo "error: article id is not passed" >&2
exit 1
fi
out=$(curl -v -f -X POST "$URL/api/blog/$1/publish" -b "$cookie_path" 2>&1)
if [ $? -ne 0 ]; then
echo "$out" >&2
exit 1
fi
echo "ok"
}
unpublish() {
if [ -z "$1" ]; then
echo "error: article id is not passed" >&2
exit 1
fi
out=$(curl -v -f -X POST "$URL/api/blog/$1/unpublish" -b "$cookie_path" 2>&1)
if [ $? -ne 0 ]; then
echo "$out" >&2
exit 1
fi
echo "ok"
}
drop() {
if [ -z "$1" ]; then
echo "error: article id is not passed" >&2
exit 1
fi
out=$(curl -v -f -X DELETE "$URL/api/blog/$1" -b "$cookie_path" 2>&1)
if [ $? -ne 0 ]; then
echo "$out" >&2
exit 1
fi
echo "ok"
}
if [ "$#" -eq 0 ] || [ "$1" = "--help" ]; then
print_help
exit 0
fi
if [ -z "$URL" ]; then
URL="https://tesoft.dev"
fi
case "$1" in
login)
login
;;
logout)
logout
;;
upload)
upload "$2"
;;
patch)
patch "$2" "$3"
;;
publish)
publish "$2"
;;
unpublish)
unpublish "$2"
;;
drop)
drop "$2"
;;
*)
echo "error: unknown action" >&2
exit 1
;;
esac