import markdown
import requests
from requests.auth import HTTPBasicAuth
import json

def readFile(company):
    rootdir = "/Users/normrasmussen/Documents/Northpass/Scripts/API_Notes/SampleNotes/"
    with open(rootdir+company+".md", "r") as companyfile:
        notes = companyfile.read()
        notes = markdown.markdown(notes)
        getContent(company, notes)

def createNewPage(company, notes): 
    url = "https://northpass.atlassian.net/wiki/rest/api/content/"
    auth = HTTPBasicAuth("nrasmussen@northpass.com", "qf9Il7X4wkthgQKBOIly5737")
    headers = {
        "X-Atlassian-Token": "no-check",
        "Accept": "application/json",
        "Content-Type": "application/json"
    }
    payload = json.dumps( {
        "type":"page",
    "title": company,
        "ancestors":[{"id":2210463745}], 
        "space":
            {"key":"~350535240"},
            "body":
                {"storage":
                    {"value": notes,
                        "representation":"storage"}}
    } )
    response = requests.request(
        "POST",
        url,
        data=payload,
        headers=headers,
        auth=auth
    )
    print("createNewPage function has run")
    response = json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": "))
    print(response)
    exists = "already exists"
    if exists in response:
        print("This page exists! Updating page instead.")
        getContent(company, notes)

def getContent(company, notes):
    url = "https://northpass.atlassian.net/wiki/rest/api/content/search?cql=parent=2210463745&expand=body.storage,version"
    # Found the answer to this URL here: https://community.atlassian.com/t5/Confluence-questions/How-can-i-get-the-page-version-using-a-specific-page-id/qaq-p/898721
    auth = HTTPBasicAuth("nrasmussen@northpass.com", "qf9Il7X4wkthgQKBOIly5737")
    headers = {
        "Accept": "application/json",
        }
    response = requests.request("GET", url, headers=headers, auth=auth)
    jsonResponse = response.json()

    text = json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",",": "))
    print(text)
    listCompanies = []
    for response in jsonResponse['results']:
        if response['title'] == company:
            print(f"{company} Found.")
            version = int(response["version"]["_links"]["self"][-1])
            if version == "":
                version = 1
            else:
                pass
            id = response['id']
            print(id)
            print(version)
            updatePage(company, notes, id, version)
        else:
            listCompanies.append(response["title"])
            pass
    print("Other Companies, not pertinent right now. List of companies:")
    print(listCompanies)

def updatePage(company, notes, id, version):
    url = f"https://northpass.atlassian.net/wiki/rest/api/content/{id}"
    newVersion = version+1
    print(newVersion)
    auth = HTTPBasicAuth("nrasmussen@northpass.com", "qf9Il7X4wkthgQKBOIly5737")
    headers = {
        "X-Atlassian-Token": "no-check",
        "Accept": "application/json",
        "Content-Type": "application/json",
        "User-Agent" : "python-requests/2.28.1",
    }
    payload = json.dumps( {
        "version": {
            "number": newVersion
        },
        "type":"page",
        "title": company,
        "status": "curent",
        "ancestors":[{"id": 2210463745}], 
            "body":
                {"storage":
                    {"value": notes,
                        "representation":"storage"}}
    } )

    response = requests.request(
        "PUT",
        url,
        data=payload,
        headers=headers,
        auth=auth
    )
    response = json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": "))
    print(response)
    print("updatePage function has run")

if __name__ == "__main__":
    readFile(company="Flink")
   #readNewNotes(company="Flink")
