#!/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 datetime
import pprint
import re

import mwclient
import mattermost

import config


REXwreminder_line = re.compile(r"^\s*(\{\{mm-reminder\|[^\|\}]+\|.*\}\}.*)$", re.IGNORECASE|re.MULTILINE)
REXwreminder_data = re.compile(r"^^\s*\{\{mm-reminder\|([^\|\}]+)\|?(.*\}\}.*)$", re.IGNORECASE)


def processData(mws, mm, datasource, matchdata):
    match = re.match(REXwreminder_data, matchdata)

    timediff = datetime.datetime.now() - datetime.datetime.strptime(match.group(1), "%Y-%m-%d %H:%M")
    if abs(timediff.total_seconds()) > 1800.0:
        print("outside of 1800 sec.")
        return

    msg = "``BOT-AUTODELETE-SLOW`` Termin-Reminder source: "+datasource+"\n### ``"+(match.group(2).replace("}}", "``", 1))
    print("Posting to channel:" +str(mm.create_post(config.mm_chanid, msg)))


def processWiki(mws, mm):
    # notify of upcomming events. (up to: now +- 30 min)
    page = mws.Pages["TOPs_der_kommenden_Fachschaftssitzung"]
    pprint.pprint(page)
    for t in re.findall(REXwreminder_line, page.text()):
        try:
            processData(mws, mm, "https://"+config.mw_name+"/wiki/TOPs_der_kommenden_Fachschaftssitzung", t)
        except:
            pass


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)

    processWiki(mws, mm)

    mm.logout()
