2024-11-03 15:35:53 +11:00
#!/bin/bash
loc = $( dirname $( readlink -f " $0 " ) )
# TOKEN MANAGEMENT
function migrate
{
curl " https://swataftermath.com:8443/account/ $1 /activate-migrated " --json '{"currentPassword":"' " $3 " '","emailAddress":"' " $2 " '","newPassword":"' " $3 " '"}'
curl " https://swataftermath.com:8443/account/ $1 /verify-email " --json '{"verificationCode":"' " $( cat) " '"}'
login " $1 " " $3 "
}
function login
{
[ -n " $2 " ] || { echo "Please provide a username and password, in that order, when calling this" ; exit; }
curl https://swataftermath.com:8443/login --json '{"username":"' " $1 " '","password":"' " $2 " '"}' > ~/.config/rcpd.cfg
}
function get_token
{
cat ~/.config/rcpd.cfg 2>/dev/null || { echo "Please login first" >& 2; exit; }
}
# CORE API CALLS
function get
{
TOKE = ` get_token`
curl -H " Authorization:Bearer $TOKE " https://swataftermath.com:9443/account/$1
}
function post
{
TOKE = ` get_token`
2024-11-03 16:32:44 +11:00
curl -H " Authorization:Bearer $TOKE " https://swataftermath.com:9443/account/$1 --json " $2 "
2024-11-03 15:35:53 +11:00
}
function delete_code
{
TOKE = ` get_token`
curl -H " Authorization:Bearer $TOKE " https://swataftermath.com:9443/account/rank-code/$1 -X DELETE
}
# UTILS
function lookup
{
w =
2024-11-03 16:55:38 +11:00
matches = ` grep -ic " ${ * : 2 } " $loc /$1 `
2024-11-03 15:35:53 +11:00
if [ " $matches " -ne 1 ] ; then
echo " $1 ' ${ * : 2 } ' is ambiguous (got $matches matches), trying whole-word match " >& 2
# Attempt whole-word match and see if we get exactly one result (and then remember it has happened!!!)
w = w
2024-11-03 16:55:38 +11:00
word_matches = ` grep -ic$w " ${ * : 2 } " $loc /$1 `
2024-11-03 15:35:53 +11:00
if [ " $word_matches " -ne 1 ] ; then echo " still ambiguous (got $word_matches matches) " >& 2; return 1; fi
fi
2024-11-03 16:55:38 +11:00
read $1 garbage <<< " `grep -i $w " ${ * : 2 } " $loc / $1 ` "
2024-11-03 15:35:53 +11:00
}
# USER-FACING COMMANDS
function builds
{
if [ -n " $1 " ] ; then filter = '.[] | select(.buildName=="' " $* " '")' ; fi
get saved-builds | jq $filter
}
function save
{
if [ -n " $2 " ] ; then name = ',"buildName":"' " ${ * : 2 } " '"' ; fi
2024-11-12 12:21:12 +11:00
res = ` post rank-code '{"rankCode":"' $1 '"' " $name " '}' `
jq <<< " $res "
if [ -z "`jq -r '.buildName // " " ' <<< $" res"`" ] ; then delete_code $1 ; fi # Don't bother storing any build that doesn't have a name. Assume it's just logging the results of a game.
2024-11-03 15:35:53 +11:00
}
function generate
{
# mfw I actually have to do work
IFS = / read -a hero <<< " $* "
length = ${# hero [*] }
if [ $length -eq 6 ] ; then IFS = / read class gun armour trait spec talent <<< " $* "
elif [ $length -eq 5 ] ; then IFS = / read class armour trait spec talent <<< " $* "
elif [ $length -eq 4 ] ; then IFS = / read class trait spec talent <<< " $* " ; fi # Probably a borg or a wm.
if [ -z " $gun " ] ; then
2024-11-12 12:21:12 +11:00
if [ " ${ class %wm } " != " $class " ] ; then gun = ${ class %wm } ; class = wm
elif [ " ${ class %mav } " != " $class " ] ; then gun = ${ class %mav } ; class = mav; fi
2024-11-03 15:35:53 +11:00
fi
res = 0
lookup class " $class "
res = $(( res+$? ))
if [ -z " $gun " ] ; then gun = $class ; fi # Do this after qualifying class so I don't have to nest the full class table in the gun table.
lookup gun " $gun "
res = $(( res+$? ))
if [ -z " $armour " ] ; then armour = $class ; fi
lookup armour " $armour "
res = $(( res+$? ))
lookup trait " $trait "
res = $(( res+$? ))
lookup spec " $spec "
res = $(( res+$? ))
lookup talent " $talent "
res = $(( res+$? ))
if [ $res -gt 0 ] ; then echo "Please correct above errors and try again" ; exit; fi
echo $class $gun $armour $trait $spec $talent
post generate '{"swatClass":"' $class '","gun":"' $gun '","armor":"' $armour '","trait":"' $trait '","specialization":"' $spec '","talent":"' $talent '"}' | jq '.rankCode//.'
}
# DO SHIT
2024-11-03 16:55:38 +11:00
" $@ "