import os
import requests
import logging
import json

def buildSubparser(subparser):
    subparser.add_argument('--url', default='https://cloud.tsc-vfl.de')

def run(args):
    l = logging.getLogger(__name__)
    l.debug('Login to %s', args.url)

    url = f'{args.url}/index.php/login/v2'
    l.debug('Using login url %s', url)

    startRequest = requests.post(url)
    startRequest.raise_for_status()

    data = startRequest.json()

    print('You need to login in the browser now to validate the login token.')
    print('Please visit the following url:')
    print(data['login'])
    print()
    print('After you have logged in, press enter to continue.')

    input()

    l.debug('Logging in')
    intermediateToken = data['poll']['token']
    pollUrl = data['poll']['endpoint']

    loginRequest = requests.post(pollUrl, data={'token': intermediateToken})
    loginRequest.raise_for_status()

    data = loginRequest.json()

    loginName = data['loginName']
    appPassword = data['appPassword']
    data = {
        'loginName': loginName,
        'appPassword': appPassword,
        'base': data['server']
    }

    with open('login.json', 'w') as f:
        json.dump(data, f)

    l.info('Login successful')

class LoginData:
    def __init__(self, loginName, appPassword):
        self.loginName = loginName
        self.appPassword = appPassword

def loadLoginData():
    with open('login.json', 'r') as f:
        data = json.load(f)

    return LoginData(data['loginName'], data['appPassword'])