import base64
import os
import pickle
import sys
from tkinter import Button, Label, Toplevel

from requests import get
from requests.exceptions import ConnectionError

from tcping import Ping


def check_network(ip, port):
    try:
        req = get(f"{ip}").status_code
        return req in range(200, 300)
    except ConnectionError:
        return False
    # ping = Ping(ip, port, 20)
    # ping.ping(1)
    # return ping.result.rows[0].successed == 1


def get_os():
    if sys.platform in ["linux", "windows", "win32"]:
        return sys.platform
    raise Exception("OS not supported")


def alert(window, message, title="Munyal"):
    child = Toplevel(window)
    child.title(title)
    label = Label(child, text=message)
    button = Button(child, text="Aceptar", command=child.destroy)
    label.pack()
    button.pack()


def flatten_dirs(content, path="", action=""):
    output = []
    for item in content:
        if item["is_file"]:
            item["name"] = os.path.join(path, item["name"])
            output.append(item)
        else:
            if item["content"] and action == "add":
                output.extend(
                    flatten_dirs(item["content"],
                                 os.path.join(path, item["name"]),
                                 action=action))
            else:
                item["name"] = os.path.join(path, item["name"])
                output.append(item)
    return output