import requests
import os
import json

# get absolute paths
source = os.path.dirname(__file__)
parent = os.path.abspath(source + '/../../')

# load vars file
vars_file = open(parent + '/email_server_vars.json')
server_vars = json.load(vars_file)
server_info = server_vars['server_info']
vars_file.close()

mailcowserver = server_info['mail_server']
mailcowtoken = server_info['mailcow_api_key']
domain = server_info['domain']

api_url = 'https://' + mailcowserver + '/api/v1/'
request_get_url = api_url + 'get/dkim/' + domain
request_add_url = api_url + 'add/dkim/' + domain

headers = {
    'Content-Type': 'application/json',
    'X-API-Key': mailcowtoken
}


def create_dkim() -> list:
    values = {
        "domains": domain,
        "dkim_selector": "dkim",
        "key_size": "2048"
    }
    try:
        response = requests.post(request_add_url, headers=headers, json=values)
        dkim_info = response.json()
        return dkim_info

    except Exception as e:
        print(e)


def get_dkim():
    response = requests.get(request_get_url, headers=headers)
    dkim_info = response.json()
    # if we recieve no data, we need to create a dkim key
    if not dkim_info:
        create_dkim()
        response = requests.get(request_get_url, headers=headers)
        dkim_info = response.json()

    dkim_key = dkim_info['pubkey']
    return dkim_key


def main():
    print(get_dkim())


if __name__ == "__main__":
    main()
