#!/bin/bash

## example:
## WIKI_URL=https://www.kicksecure.com/w wiki_remote_file_name_fetch_to_file=/tmp/a wiki_remote_file_name="File:Ubuntu_software_icon.png" mw-file-to-link

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

echo "$0: INFO: Fetching imageinfo '${WIKI_API}' '$wiki_remote_file_name'..."

if test -d "$wiki_remote_file_name_fetch_to_file" ; then
   echo "$0: ERRROR: wiki_remote_file_name_fetch_to_file '$wiki_remote_file_name_fetch_to_file' is a folder!" >&2
   exit 1
fi

rm -f "$wiki_remote_file_name_fetch_to_file"
touch "$wiki_remote_file_name_fetch_to_file"
test -w "$wiki_remote_file_name_fetch_to_file"

## https://en.wikipedia.org/w/api.php?action=query&prop=imageinfo&iiprop=url&titles=File:Limbo%20Royal%20Blood.jpg
api_link="${WIKI_API}?action=query&format=json&prop=imageinfo&iiprop=url&titles=$wiki_remote_file_name"

## MediaWiki API return json, which contains an already encoded URL.
curl_run \
   $curl_opts \
   --cookie "$cookie_jar" \
   --cookie-jar "$cookie_jar" \
   --header "Accept-Language: en-GB" \
   --header "Connection: keep-alive" \
   --compressed \
   --output "${TMPFOLDER}/wiki-remote-file-name-fetch-to-file.json" \
   --request "GET" \
   "$api_link"

echo "$0: INFO: Network for imageinfo ok."

query_result=$(cat "${TMPFOLDER}/wiki-remote-file-name-fetch-to-file.json")

## example query_result in case of error:
## {"error":{"code":"internal_api_error_DBConnectionError","info":"[98c54e341525482101c71b32] Caught exception of type Wikimedia\\Rdbms\\DBConnectionError","errorclass":"Wikimedia\\Rdbms\\DBConnectionError"}}

echo "$0: INFO: Saving URL in file wiki_remote_file_name_fetch_to_file: '$wiki_remote_file_name_fetch_to_file'"

url=$(echo "$query_result" | jq -r ".query.pages[].imageinfo[].url")
## url contains encoded URL.
## url example:
## https://www.kicksecure.com/w/images/7/74/MediaWiki-2020-logo-%28black%29.svg

echo "$url" | tee "$wiki_remote_file_name_fetch_to_file" >/dev/null

test -r "$wiki_remote_file_name_fetch_to_file"

echo "$0: INFO: Fetch imageinfo success."
