package net

import (
	"strings"
)

func ParseNetwork(nwStr string) Network {
	if network, found := Network_value[nwStr]; found {
		return Network(network)
	}
	switch strings.ToLower(nwStr) {
	case "tcp":
		return Network_TCP
	case "udp":
		return Network_UDP
	default:
		return Network_Unknown
	}
}

func (v Network) AsList() *NetworkList {
	return &NetworkList{
		Network: []Network{v},
	}
}

func (v Network) SystemString() string {
	switch v {
	case Network_TCP:
		return "tcp"
	case Network_UDP:
		return "udp"
	default:
		return "unknown"
	}
}

func (v Network) URLPrefix() string {
	switch v {
	case Network_TCP:
		return "tcp"
	case Network_UDP:
		return "udp"
	default:
		return "unknown"
	}
}

// HashNetwork returns true if the given network is in v NetworkList.
func (v NetworkList) HasNetwork(network Network) bool {
	for _, value := range v.Network {
		if string(value) == string(network) {
			return true
		}
	}
	return false
}

func (v NetworkList) Get(idx int) Network {
	return v.Network[idx]
}

func (v NetworkList) Size() int {
	return len(v.Network)
}