import requests
import re
from flask import render_template
from urllib.parse import urlparse

def check_link(link):
    parsed_url = urlparse(link)
    if parsed_url.scheme and parsed_url.netloc:
        return 1
    else:
        print("link not valid (https:// missing??)")
        return -1


def check_response(link):
    """
    responds    1 if link is ok
                2 if there's conncetion error
                3 if link is invalid (no "http" for example)
    """
    try:
        response = requests.head(link)
        if response.status_code == 200:
            return 1
        else:
            #TODO drugi statusi code?
            #return "WEIRD", response
            #TODO samo za testiranje
            return f"Error: {response.status_code}"
    except Exception as e:
        print(e)
        return f"Link error: {e}"


# kako vse možne linke embeddat?
def render_embed_link(cm_username, card, maybe_in, no_in):
    url = card.item_location

    response = check_response(url)
    if response != 1:
        render_template("embed_link/bad_link.html",
                        card=card,
                        username=cm_username, 
                        maybe_in=maybe_in, 
                        no_in=no_in)

    if re.match(r'^https?://(www\.)?twitter\.com/.*/status/\d+$', url):
        tweet_id = url.split("/")[-1]
        return render_template("embed_link/twitter_embed.html", 
                               card=card, 
                               tweet_id=tweet_id, 
                               username=cm_username, 
                               maybe_in=maybe_in, 
                               no_in=no_in)
    
    elif re.match(r'^https?://(www\.)?youtube\.com/watch\?.*v=([-\w]+)', url):
        youtube_id = re.search(r'v=([-\w]+)', url).group(1)
        return render_template("embed_link/youtube_embed.html",
                                youtube_id=youtube_id,
                                card=card,
                                username=cm_username, 
                                maybe_in=maybe_in, 
                                no_in=no_in)

    #TODO kill me wtf about the instances.........
    elif re.match(r'^https?://(www\.)?mastodon\.social/@[a-zA-Z0-9]+/\d+', url):
        username, post_id = url.split("/")[-3:-1]
        return render_template("embed_link/mastodon_embed.html", username=username, post_id=post_id)

    else:
        #TODO what if iframe fails
        return render_template("embed_link/iframe_embed.html",
                                url=url,
                                card=card,
                                username=cm_username, 
                                maybe_in=maybe_in, 
                                no_in=no_in)
