#!/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<&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 $@