geoip2-golang

Unofficial MaxMind GeoIP2 Reader for Go

Github stars Tracking Chart

GeoIP2 Reader for Go

GoDoc

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 github.com/oschwald/geoip2-golang

Usage

See GoDoc for
documentation and examples.

Example

package main

import (
	"fmt"
	"github.com/oschwald/geoip2-golang"
	"log"
	"net"
)

func main() {
	db, err := geoip2.Open("GeoIP2-City.mmdb")
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()
	// If you are using strings that may be invalid, check that ip is not nil
	ip := net.ParseIP("81.2.69.142")
	record, err := db.City(ip)
	if err != nil {
		log.Fatal(err)
	}
	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.

Main metrics

Overview
Name With Owneroschwald/geoip2-golang
Primary LanguageGo
Program languageGo (Language Count: 1)
Platform
License:ISC License
所有者活动
Created At2014-03-15 21:10:40
Pushed At2025-03-24 19:00:01
Last Commit At
Release Count14
Last Release Namev1.11.0 (Posted on )
First Release Namev0.1.0 (Posted on 2014-05-05 18:46:12)
用户参与
Stargazers Count2k
Watchers Count31
Fork Count204
Commits Count199
Has Issues Enabled
Issues Count61
Issue Open Count4
Pull Requests Count45
Pull Requests Open Count3
Pull Requests Close Count20
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private