kVINInfo is a pure Kotlin library designed to simplify tasks related to Vehicle Identification Numbers (VINs), including simple VIN Validation, extracting information from VIN, NHTSA Database integration to get information like Vehicle type, Make and Model.
Please, note that, This library draws inspiration from the Dart library vin-decoder-dart by Adaptant Labs and vindecoder.js by Kevin Boutin, so big shout out to them.
Warning: For more complex VIN processing, professional-grade validation, or in-depth information extraction, consider implementing custom logic or integrating with your company specific business logic, or country-specific databases or APIs.
Install
This library can be installed with ease for both Kotlin Multiplatform projects and Android projects.
Kotlin Multiplatform Projects
Add the following dependency to your commonMain source set:
val commonMain by getting {
dependencies {
implementation("io.github.kabirnayeem99:kvininfo:1.0.0")
}
}
Android Projects
Use the following dependency in your app module’s build.gradle file:
Kotlin DSL (build.gradle.kts
)
dependencies {
// all other dependencies
implementation("io.github.kabirnayeem99:kvininfo:1.0.0")
}
Groovy DSL (build.gradle
)
dependencies {
// all other dependencies
implementation "io.github.kabirnayeem99:kvininfo:1.0.0"
}
Note: Replace 1.0.0
with the latest version of the library.
Usage
This library offers a simple API for working with VINs.
val vin = "WBA3A5G59DNP26082"
val vinInfo = VinInfo.fromNumber(vin)
// Access VIN information
println(vinInfo.year) // 2013
println(vinInfo.region) // Europe
println(vinInfo.manufacturer) // BMW AG
// Using the `use` scope for resource management
vinInfo.use {
println(it.wmi) // WMI part of the VIN
// ... other operations
}
For more concise and expressive code, leverage Kotlin’s extension functions:
"WBA3A5G59DNP26082".withVinInfo {
println(year) // 2013
println(region) // Europe
println(manufacturer) // BMW AG
println(getMakeFromNhtsa()) // BMW
println(getModelFromNhtsa()) // 328i
// ... other operations
}
Explanation:
- The withVinInfo extension function provides a fluent-style API for working with VIN data.
- The lambda passed to withVinInfo receives the VinInfo instance as its receiver, allowing direct access to its properties.