A Kotlin Multiplatform HTTP client library built with Ktor for URL scanning and web requests across all major platforms.
The project is still in its early stages, aiming to provide a robust and type-safe way to interact with API as per documentation https://docs.urlscan.io/apis/urlscan-openapi.
- Cross-platform support: JVM, Android, iOS, Linux, macOS, Windows, and JavaScript
- Ktor-powered: Modern HTTP client with coroutines support
- Type-safe: Built with Kotlin serialization for JSON handling
- Lightweight: Minimal dependencies with platform-optimized engines
- Production-ready: Comprehensive logging and error handling
| Platform | Target | Engine |
|---|---|---|
| JVM | Java 21+ | OkHttp |
| Android | API 21+ | OkHttp |
| iOS | iPhone, iPad, Simulator | Darwin |
| Linux | x64, ARM64 | Curl |
| macOS | Intel, Apple Silicon | Curl |
| Windows | x64 | Curl |
| JavaScript | Browser, Node.js | JS Engine |
dependencies {
implementation("io.urlscan:UrlScanKtor:1.0.0")
}<dependency>
<groupId>io.urlscan</groupId>
<artifactId>UrlScanKtor</artifactId>
<version>1.0.0</version>
</dependency>- JDK 21 or higher
- Android SDK (for Android targets)
- Xcode (for iOS targets, macOS only)
# Build all targets
./gradlew build
# Run tests
./gradlew test
# Build specific targets
./gradlew jvmJar # JVM JAR
./gradlew assembleRelease # Android AAR
./gradlew linkReleaseFrameworkIosArm64 # iOS Framework
./gradlew linuxX64Binaries # Linux binaries
./gradlew jsBrowserDistribution # JavaScript (Browser)
# Print all available targets
./gradlew printTargets
# Clean everything
./gradlew cleanAll- Kotlin 2.2.21+
- Gradle 8.0+
- Android Gradle Plugin 8.12.3
- JVM: Java 21+
- Android: API Level 21+
- iOS: iOS 12.0+
- Native: Platform-specific requirements
UrlScanKtor/
├── commonMain/ # Shared code across all platforms
├── jvmMain/ # JVM and Android specific code
├── iosMain/ # iOS specific code
├── nativeMain/ # Linux, macOS, Windows code
└── jsMain/ # JavaScript specific code
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.