ratatoskr/ratatoskr.sh

50 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# Hopefully one day this will be a full featured Pleroma client.
# Let's see how far we can get. :)
# Get an oauth token
get_oauth_token() {
echo "Welcome to ${softwareName}!"
echo
echo "Let's get you connected to your instance."
while true; do
read -e -p "Enter the URL of a Pleroma instance: " instanceURL
if [[ ! "${instanceURL}" =~ ^https://[a-zA-Z0-9._-]+\.[a-zA-Z]{2,}$ ]]; then
echo "Invalid URL format. Please enter a valid URL that starts with 'https'."
echo
else
break
fi
done
redirectURI="file://$(realpath ${0})"
# get client id and secret
curl -s -X POST -d client_name="${softwareName}" -d redirect_uris="://${redirectURI}" "${instanceURL}/api/v1/apps" |
jq --raw-output '"client_id=\"\(.client_id)\"\nclient_secret=\"\(.client_secret)\""' > "${configPath}/${configFile}"
# Load the new variables from the configuration file
source "${configPath}/${configFile}"
# Create the url to get the oauth token
local url="${instanceURL}/oauth/authorize?client_id=${client_id}&redirect_uri=${redirectURI}&response_type=code&scope=read+write+follow"
echo "Please open the following url in your browser."
echo "Copy the generated token, and paste it here."
echo
echo "${url}"
echo
}
# Variable initialization
configPath="${XDG_CONFIG_HOME:-$HOME/.config}/ratatoskr" # Path for settings, usually ~/.config/ratatoskr
configFile="default.conf" # The default config file, eventually will support multiple accounts.
softwareName="Ratatoskr" # The name of the client.
# Main code starts here
# make sure the configuration path exists:
mkdir -p "${configPath}"
get_oauth_token
exit 0