rocket-send/bin/rocket-send

107 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
set -eo pipefail
RC_HOST_URL=https://rocket.cadoles.com
RC_CONFIG_DIR="$HOME/.config/rocket-send"
RC_LOGIN=
RC_PASSWORD=
RC_CLIENT_ID=
RC_CLIENT_TOKEN=
RC_MESSAGE=
RC_CHANNEL=
RC_ALIAS=
RC_EMOJI=
function help {
cat<<EOF 1>&2
Envoie un message sur un canal Rocket.Chat
Usage: rocket-send -c [CHANNEL] -m [MESSAGE]
Options:
-c, --channel [Obligatoire] Nom du canal sur lequel envoyer le message
-m, --message [Obligatoire] Message à envoyer
-s, --server URL racine du serveur Rocket.Chat
-e, --emoji Emoji à utiliser comme avatar pour le message
-a, --alias Alias à utiliser pour le message
--config-dir Chemin vers le répertoire de configuration, par défaut $HOME/.config/rocket-send
-h, --help Afficher l'aide
EOF
}
function get_options {
while [[ "$#" -gt 0 ]]
do
case $1 in
-s|--server)
RC_HOST_URL="$2"
;;
-e|--emoji)
RC_EMOJI="$2"
;;
-a|--alias)
RC_ALIAS="$2"
;;
--config-dir)
RC_CONFIG_DIR="$2"
;;
-m|--message)
RC_MESSAGE="$2"
;;
-c|--channel)
RC_CHANNEL="$2"
;;
-h|--help)
help
exit 0
;;
esac
shift
done
}
function get_config {
mkdir -p "$RC_CONFIG_DIR"
if [ -e "$RC_CONFIG_DIR/config" ]; then
source "$RC_CONFIG_DIR/config"
fi
}
function login {
local login=$1
local password=$2
local res=$(curl --silent \
-H "Content-Type:application/json" \
"$RC_HOST_URL/api/v1/login" \
-d "{ \"user\": \"$login\", \"password\": \"$password\" }" \
)
RC_CLIENT_ID=$(echo $res | jq -r '.data.userId')
RC_CLIENT_TOKEN=$(echo $res | jq -r '.data.authToken')
}
function post_message {
local channel=$1
local message=$2
local emoji=$3
local alias=$4
curl --silent \
-H "X-Auth-Token: $RC_CLIENT_TOKEN" \
-H "X-User-Id: $RC_CLIENT_ID" \
-H "Content-Type:application/json" \
"$RC_HOST_URL/api/v1/chat.postMessage" \
-d "{ \"channel\": \"$channel\", \"text\": \"$message\", \"emoji\": \"$emoji\", \"alias\": \"$alias\" }"
}
function main {
get_config
get_options $@
login "$RC_LOGIN" "$RC_PASSWORD"
post_message "$RC_CHANNEL" "$RC_MESSAGE" "$RC_EMOJI" "$RC_ALIAS"
}
main $@