#!/bin/bash

set -e
source /usr/share/mediawiki-shell/common
source /usr/share/mediawiki-shell/wiki-config

if [ -z "$WIKI_API_USER_PASS" ]; then
   echo "$0: ERROR: Password not supplied!" >&2
   exit 1
fi

true "$0: INFO: Logging into '$WIKI_API' as '$WIKI_API_USER_NAME'... Requesting Login token..."

rm -f "${TMPFOLDER}/login-token.json"
rm -f "${TMPFOLDER}/login-result.json"

curl_run \
   $curl_opts \
   --cookie "$cookie_jar" \
   --cookie-jar "$cookie_jar" \
   --header "Content-Type: application/json" \
   --header "Accept-Language: en-GB" \
   --output "${TMPFOLDER}/login-token.json" \
   --request "POST" \
   "${WIKI_API}?action=query&meta=tokens&type=login&format=json"

true "$0: INFO: Login Token received."

login_token=$(cat "${TMPFOLDER}/login-token.json" | jq --raw-output '.query.tokens.logintoken')

## Sensitive?
#echo "$0: INFO: login_token: $login_token"

curl_run \
   $curl_opts \
   --cookie "$cookie_jar" \
   --cookie-jar "$cookie_jar" \
   --header "Accept-Language: en-GB" \
   --data-urlencode "lgname=${WIKI_API_USER_NAME}" \
   --data-urlencode "lgpassword=${WIKI_API_USER_PASS}" \
   --data-urlencode "lgdomain=${USERDOMAIN}" \
   --data-urlencode "lgtoken=${login_token}" \
   --output "${TMPFOLDER}/login-result.json" \
   --request "POST" \
   "${WIKI_API}?action=login&format=json"

## XXX:
## If already logged in:
## "login": {
## "result": "Aborted",
## "reason": "Cannot log in when using MediaWiki\\Session\\BotPasswordSessionProvider sessions."

RESULT=$(cat "${TMPFOLDER}/login-result.json" | jq -r '.login.result')

if [ "$RESULT" = "Success" ]; then
   true "$0: INFO: Successfully logged in as '$WIKI_API_USER_NAME'."
   exit 0
fi

cat "${TMPFOLDER}/login-result.json" | jq >&2
echo "$0: ERROR: Login failed!" >&2
exit 1
