#!/usr/bin/env python3
# Someone's Mattermost scripts.
#  Copyright (c) 2016-2020 by Someone <someone@somenet.org> (aka. Jan Vales <jan@jvales.net>)
#  published under MIT-License
#

import pprint
import re
from inspect import cleandoc

import mwclient
import mattermost

import config


rex_wtops = re.compile(r"^={1,3}[^=].*$", re.IGNORECASE|re.MULTILINE)


def process_wiki(mws, mm):
    # notify of upcomming events. (up to: now +- 30 min)
    page = mws.Pages["TOPs_der_kommenden_Fachschaftssitzung"]
    pprint.pprint(page)
    found = [re.sub(r"\s*=+\s*$", "", "+ ".join([re.sub(r"^(=+)\s*", r"\g<1>+ ", x).split("+ ", 1)[0].replace("=", "  "), re.sub(r"^(=+)\s*", r"\g<1>+ ", x).split("+ ", 1)[1]])) for x in re.findall(rex_wtops, page.text())]

    msg = "``BOT-AUTODELETE-SLOW``\n### :warning: ``Upcoming FSS-TOPs`` :warning:\n@channel Zwecks Hut-Top-Minimierung, trage bitte deine TOPs asap ein. :)!\n"
    msg += ":arrow_right: https://intern.fsinf.at/wiki/TOPs_der_kommenden_Fachschaftssitzung\n\n----\n"
    msg += cleandoc("\n".join(found))
    print("Posting to channel:" +str(mm.create_post(config.mm_chanid, msg)))


if __name__ == "__main__":
    mws = mwclient.Site(config.mw_name, path="/")
    mws.login(config.mw_user, config.mw_user_pw)
    mm = mattermost.MMApi(config.mm_api_url)
    mm.login(config.mm_user, config.mm_user_pw)

    process_wiki(mws, mm)

    mm.logout()
