nzrsky / MMDB-Swift

A tiny wrapper for libmaxminddb which allows you to lookup Geo data by IP address. Fork with patches and Swift5 support

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

Lex Tang (Twitter: @lexrus)

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.

About

A tiny wrapper for libmaxminddb which allows you to lookup Geo data by IP address. Fork with patches and Swift5 support

License:Apache License 2.0


Languages

Language:C 92.2%Language:Swift 7.8%