# shellcheck shell=dash

# https://www.mediawiki.org/wiki/API:Properties
# https://www.mediawiki.org/w/api.php?action=help&modules=main#main/datatype/boolean


___x_cmd_wkp_query(){
    [ "$#" -gt 0 ] ||   set -- -h

    local op="$1"; shift
    case "$op" in
        info)       ___x_cmd_wkp_query_info    "$@" ;;
        extract)    ___x_cmd_wkp_query_extract "$@" ;;
        -h|--help)  ___x_cmd help -m wkp       "$@" ;;
        *)          N=wkp M="Unknown subcmd ==> $op" log:ret:64 ;;
    esac
}

___x_cmd_wkp_query_info(){
    local title="$1";
    local proxy; ___x_cmd_wkp_cur proxy:= 2>/dev/null
    data="$(
        ___x_cmd curl gencode \
            titles=="$title" action==query \
            prop==info format==json
    )"

    wkp:debug "request body[$data]"
    ___x_cmd ccmd 10d -- eval x curl -sS \
        ${proxy:+-x} ${proxy:+"$proxy"} \
        -G "$data" \
        "$___X_CMD_WKP_API_URL"
}

___x_cmd_wkp_query_extract(){
    local proxy;        local exchars;     local exlimit
    local exsentences;  local title;       local explaintext
    local exinfo;       local excontinue;  local exsectionformat
    ___x_cmd_wkp_cur proxy:= 2>/dev/null

    while [ $# -gt 0 ]; do
        case "$1" in
            --title)             title="$2";             [ $# -ge 2 ] || N=wkp M="Please provide title value"            log:ret:64; shift 2 ;;
            --exchars)           exchars="$2";           [ $# -ge 2 ] || N=wkp M="Please provide exchars value"          log:ret:64; shift 2 ;;
            --exlimit)           exlimit="$2";           [ $# -ge 2 ] || N=wkp M="Please provide exlimit value"          log:ret:64; shift 2 ;;
            --exinfo)            exinfo="$2";            [ $# -ge 2 ] || N=wkp M="Please provide exinfo value"           log:ret:64; shift 2 ;;
            --excontinue)        excontinue="$2";        [ $# -ge 2 ] || N=wkp M="Please provide excontinue value"       log:ret:64; shift 2 ;;
            --exsentences)       exsentences="$2";       [ $# -ge 2 ] || N=wkp M="Please provide exsentences value"      log:ret:64; shift 2 ;;
            --explaintext)       explaintext="$2";       [ $# -ge 2 ] || N=wkp M="Please provide explaintext value"      log:ret:64; shift 2 ;;
            --exsectionformat)   exsectionformat="$2";   [ $# -ge 2 ] || N=wkp M="Please provide exsectionformat value"  log:ret:64; shift 2 ;;
            *)                   break;;
        esac
    done

    local data
    data="$(
        ___x_cmd curl gencode  \
            action==query prop==extracts                      \
            titles=="$title" format==json                     \
            explaintext=="${explaintext:-1}"                  \
            ${exlimit:+exlimit=="$exlimit"} ${excontinue:+excontinue=="$excontinue"}     \
            ${exchars:+exchars=="$exchars"} ${exsentences:+exsentences=="$exsentences"}   \
            ${exinfo:+exinfo=="$exinfo"}    ${exsectionformat:+exsectionformat=="$exsectionformat"}
    )"

    wkp:debug "request body[$data]"
    ___x_cmd ccmd 10d -- eval x curl -sS \
        ${proxy:+-x} ${proxy:+"$proxy"} \
        -G "$data" \
        "$___X_CMD_WKP_API_URL"
}

___x_cmd_wkp_query_image(){
    :
}

___x_cmd_wkp_query_pageprop(){
    :
}

___x_cmd_wkp_query_pageterm(){
    :
}
