MMDB-Swift
A tiny wrapper for libmaxminddb which allows you to lookup Geo data by IP address.
This product uses GeoLite2 data created by MaxMind, available from http://www.maxmind.com.
Swift Package Manager
Package.swift
import PackageDescription
let package = Package(
name: "YOUR_AWESOME_PROJECT",
dependencies: [
.package(url: "https://github.com/5t111111/MMDB-Swift.git", .branch("master"))
],
...
)
Usage
import MMDB
guard let db = MMDB("/path/to/database/file") else {
print("Failed to open DB.")
return
}
if let country = db.lookup("8.8.4.4") {
print(country)
} else {
print("Not found")
}
This outputs:
{
"continent": {
"code": "NA",
"names": {
"ja": "北アメリカ",
"en": "North America",
"ru": "Северная Америка",
"es": "Norteamérica",
"de": "Nordamerika",
"zh-CN": "北美洲",
"fr": "Amérique du Nord",
"pt-BR": "América do Norte"
}
},
"isoCode": "US",
"names": {
"ja": "アメリカ合衆国",
"en": "United States",
"ru": "США",
"es": "Estados Unidos",
"de": "USA",
"zh-CN": "美国",
"fr": "États-Unis",
"pt-BR": "Estados Unidos"
}
}
Notice that country is a struct defined as:
public struct MMDBContinent {
var code: String?
var names: [String: String]?
}
public struct MMDBCountry: CustomStringConvertible {
var continent = MMDBContinent()
var isoCode = ""
var names = [String: String]()
...
}
Original Author
License
MMDB-Swift is available under the Apache License Version 2.0. See the LICENSE file for more info.
The GeoLite2 databases are distributed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.