package geoip // Location Types And Constants // Location represents the GeoIP location data about an IP address. type Location struct { // Country is the country whose subnets contain the IP address. Country Country // Continent is the continent whose subnets contain the IP address. Continent Continent // TopSubdivision is the ISO-code of the political subdivision of a country // whose subnets contain the IP address. This field may be empty. TopSubdivision string // ASN is the number of the autonomous system whose subnets contain the IP // address. ASN ASN } // ASN is the autonomous system number of an IP address. // // See also https://datatracker.ietf.org/doc/html/rfc7300. type ASN uint32 // Continent represents a continent code used by MaxMind. type Continent string // Continent code constants. const ( // ContinentNone is an unknown continent code. ContinentNone Continent = "" // ContinentAF is Africa. ContinentAF Continent = "AF" // ContinentAN is Antarctica. ContinentAN Continent = "AN" // ContinentAS is Asia. ContinentAS Continent = "AS" // ContinentEU is Europe. ContinentEU Continent = "EU" // ContinentNA is North America. ContinentNA Continent = "NA" // ContinentOC is Oceania. ContinentOC Continent = "OC" // ContinentSA is South America. ContinentSA Continent = "SA" ) // NewContinent converts s into a Continent while also validating it. Prefer to // use this instead of a plain conversion. func NewContinent(s string) (c Continent, err error) { switch c = Continent(s); c { case ContinentAF, ContinentAN, ContinentAS, ContinentEU, ContinentNA, ContinentOC, ContinentSA, ContinentNone: return c, nil default: return ContinentNone, &NotAContinentError{Code: s} } }