Get Started With IP2Location Kotlin Module

Dependencies

This library requires IP2Location BIN database to function. You may download the BIN database at


Requirements

Intellij IDEA: https://www.jetbrains.com/idea/


Sample Codes

Query geolocation information from BIN database

You can query the geolocation information from the IP2Location BIN database as below:

import kotlin.jvm.JvmStatic
import java.lang.Exception
import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.Paths

object Main {
    @JvmStatic
    fun main(args: Array<String>) {
        try {
            val strIPAddress = "8.8.8.8"

            // querying with the BIN file
            val dbPath = "/usr/data/IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-USAGETYPE-ADDRESSTYPE-CATEGORY-DISTRICT-ASN.BIN"

            var loc = IP2Location()

            // this is to initialize with a BIN file
            val useMMF = true
            loc.open(dbPath, useMMF)

            // this is to initialize with byte array
            // val binPath: Path = Paths.get(dbPath)
            // val binFileBytes = Files.readAllBytes(binPath)
            // loc.open(binFileBytes)

            var rec = loc.ipQuery(strIPAddress)

            when (rec.status) {
                "OK" -> println(rec)
                "EMPTY_IP_ADDRESS" -> println("IP address cannot be blank.")
                "INVALID_IP_ADDRESS" -> println("Invalid IP address.")
                "MISSING_FILE" -> println("Invalid database path.")
                "IPV6_NOT_SUPPORTED" -> println("This BIN does not contain IPv6 data.")
                else -> println("Unknown error." + rec.status)
            }
            loc.close()

        } catch (e: Exception) {
            println(e)
            e.printStackTrace(System.out)
        }
    }
}

							
						

Processing IP address using IP Tools class

You can manupulate IP address, IP number and CIDR as below:

object Main {
    @JvmStatic
    fun main(args: Array<String>) {
        try {
            val tools = IPTools()

            println(tools.isIPV4("60.54.166.38"))
            println(tools.isIPV6("2600:1f18:45b0:5b00:f5d8:4183:7710:ceec"))
            println(tools.ipV4ToDecimal("60.54.166.38"))
            println(tools.ipV6ToDecimal("2600:118:450:5b00:f5d8:4183:7710:ceec"))
            println(tools.decimalToIPV4(BigInteger("1010214438")))
            println(tools.decimalToIPV4(BigInteger("770")))
            println(tools.decimalToIPV6(BigInteger("50510686025047391022278667396705210092")))
            println(tools.decimalToIPV6(BigInteger("977677717377287979008")))
            println(tools.ipV4ToDecimal("0.0.166.38"))

            println(tools.compressIPV6("0000:0000:0000:0035:0000:FFFF:0000:0000"))
            println(tools.compressIPV6("::0035:0000:FFFF:0000:0000"))
            println(tools.compressIPV6("0120:F000:0000:0035:0000:FFFF:0000:0000"))
            println(tools.compressIPV6("0120:F000:0002:0035:0090:FFFF:0000:0000"))
            println(tools.compressIPV6("::"))
            println(tools.compressIPV6("233::"))
            println(tools.compressIPV6("::233:0:0"))
            println(tools.compressIPV6("00FF:0E00:2000:0035:0009:FFFF:10:0000"))
            println(tools.expandIPV6(tools.compressIPV6("0500:6001:00FE:35:0000:FFFF:0000:0000")))
            val stuff = tools.ipV4ToCIDR("10.0.0.0", "10.10.2.255")
            stuff?.forEach(System.out::println)

            val stuff2 =
                tools.ipV6ToCIDR("2001:4860:4860:0000:0000:0000:0000:8888", "2001:4860:4860:0000:eeee:ffff:ffff:ffff")
            stuff2?.forEach(System.out::println)

            val stuff3 = tools.cIDRToIPV4("10.123.80.0/12")
            stuff3?.forEach(System.out::println)
            val stuff4 = tools.cIDRToIPV6("2002:1234::abcd:ffff:c0a8:101/62")
            stuff4?.forEach(System.out::println)
        } catch (e: Exception) {
            println(e)
            //e.printStackTrace(System.out)
            throw e
        }
    }
}

							
						

List down country information

You can query country information for a country from IP2Location Country Information CSV file as below:

object Main {
    @JvmStatic
    fun main(args: Array<String>) {
        try {
            val cc = Country("./IP2LOCATION-COUNTRY-INFORMATION.CSV")

            val ccResult: Map<String, String?>? = cc.getCountryInfo("US")
            println(ccResult.toString())

            val ccResults: List<Map<String, String?>> = cc.getCountryInfo()
            println(ccResults.toString())
        } catch (e: Exception) {
            println(e)
            //e.printStackTrace(System.out)
            throw e
        }
    }
}

							
						

List down region information

You can get the region code by country code and region name from IP2Location ISO 3166-2 Subdivision Code CSV file as below:

object Main {
    @JvmStatic
    fun main(args: Array<String>) {
        try {
            val reg = Region("./IP2LOCATION-ISO3166-2.CSV")

            val regionCode: String? = reg.getRegionCode("US", "California")

            println(regionCode)
        } catch (e: Exception) {
            println(e)
            //e.printStackTrace(System.out)
            throw e
        }
    }
}

							
						

IP2Location Sample Database (BIN)

Sample Packages - BIN File IPv4 IPv6
IP2Location DB1 Download (1,001.91 kB) Download (1.04 MB)
IP2Location DB2 Download (24.58 MB) Download (25.22 MB)
IP2Location DB3 Download (21.21 MB) Download (21.32 MB)
IP2Location DB4 Download (43.89 MB) Download (44.04 MB)
IP2Location DB5 Download (31.89 MB) Download (32.05 MB)
IP2Location DB6 Download (54.08 MB) Download (54.26 MB)
IP2Location DB7 Download (48.70 MB) Download (48.88 MB)
IP2Location DB8 Download (59.17 MB) Download (59.37 MB)
IP2Location DB9 Download (36.78 MB) Download (36.95 MB)
IP2Location DB10 Download (64.62 MB) Download (64.89 MB)
IP2Location DB11 Download (37.51 MB) Download (37.69 MB)
IP2Location DB12 Download (65.32 MB) Download (65.55 MB)
IP2Location DB13 Download (35.03 MB) Download (35.21 MB)
IP2Location DB14 Download (66.55 MB) Download (66.80 MB)
IP2Location DB15 Download (40.72 MB) Download (40.96 MB)
IP2Location DB16 Download (70.89 MB) Download (71.18 MB)
IP2Location DB17 Download (42.47 MB) Download (42.69 MB)
IP2Location DB18 Download (78.33 MB) Download (78.61 MB)
IP2Location DB19 Download (61.85 MB) Download (62.09 MB)
IP2Location DB20 Download (80.79 MB) Download (81.12 MB)
IP2Location DB21 Download (44.39 MB) Download (44.56 MB)
IP2Location DB22 Download (84.78 MB) Download (85.22 MB)
IP2Location DB23 Download (62.33 MB) Download (62.51 MB)
IP2Location DB24 Download (85.90 MB) Download (86.40 MB)
IP2Location DB25 Download (87.92 MB) Download (88.33 MB)
IP2Location DB26 Download (94.51 MB) Download (95.09 MB)