TCP_PROTOCOL = "TCP"
UDP_PROTOCOL = "UDP"
HTTP_APPLICATION_PROTOCOL = "http"
NOT_PROVIDED_APPLICATION_PROTOCOL = ""
NOT_PROVIDED_WAIT = "not-provided-wait"
def new_template_and_data(template, template_data_json):
	return struct(template = template, data = template_data_json)


def path_join(*args):
	joined_path = "/".join(args)
	return joined_path.replace("//", "/")


def path_base(path):
	split_path = path.split("/")
	return split_path[-1]


def path_dir(path):
	split_path = path.split("/")
	if len(split_path) <= 1:
		return "."
	split_path = split_path[:-1]
	return "/".join(split_path) or "/"


def new_port_spec(number, transport_protocol, application_protocol = NOT_PROVIDED_APPLICATION_PROTOCOL, wait = NOT_PROVIDED_WAIT):
	if (wait == NOT_PROVIDED_WAIT):
		return PortSpec(number = number, transport_protocol = transport_protocol, application_protocol = application_protocol)

	return PortSpec(number = number, transport_protocol = transport_protocol, application_protocol = application_protocol, wait = wait)