Package list golang-github-oschwald-geoip2-golang / fresh-snapshots/main

Tree @fresh-snapshots/main (Download .tar.gz)

# GeoIP2 Reader for Go #


This library reads MaxMind [GeoLite2](
and [GeoIP2]( databases.

This library is built using
[the Go maxminddb reader](
All data for the database record is decoded using this library. If you only
need several fields, you may get superior performance by using maxminddb's
`Lookup` directly with a result struct that only contains the required fields.
(See [example_test.go](
in the maxminddb repository for an example of this.)

## Installation ##

go get

## Usage ##

[See GoDoc]( for
documentation and examples.

## Example ##

package main

import (

func main() {
	db, err := geoip2.Open("GeoIP2-City.mmdb")
	if err != nil {
	defer db.Close()
	// If you are using strings that may be invalid, check that ip is not nil
	ip := net.ParseIP("")
	record, err := db.City(ip)
	if err != nil {
	fmt.Printf("Portuguese (BR) city name: %v\n", record.City.Names["pt-BR"])
	if len(record.Subdivisions) > 0 {
		fmt.Printf("English subdivision name: %v\n", record.Subdivisions[0].Names["en"])
	fmt.Printf("Russian country name: %v\n", record.Country.Names["ru"])
	fmt.Printf("ISO country code: %v\n", record.Country.IsoCode)
	fmt.Printf("Time zone: %v\n", record.Location.TimeZone)
	fmt.Printf("Coordinates: %v, %v\n", record.Location.Latitude, record.Location.Longitude)
	// Output:
	// Portuguese (BR) city name: Londres
	// English subdivision name: England
	// Russian country name: Великобритания
	// ISO country code: GB
	// Time zone: Europe/London
	// Coordinates: 51.5142, -0.0931

## Testing ##

Make sure you checked out test data submodule:

git submodule init
git submodule update

Execute test suite:

go test

## Contributing ##

Contributions welcome! Please fork the repository and open a pull request
with your changes.

## License ##

This is free software, licensed under the ISC license.