@pluskode/client-android
v0.1.2
Published
Pluskode Client SDK for Android - Kotlin client with HTTP, WebSocket, SSE, gRPC, MQTT, and Binary Stream support
Maintainers
Readme
Pluskode Android Client SDK
Kotlin client SDK for Pluskode Backend Framework.
Status
✅ Core Implementation Complete - Basic structure and HTTP/WebSocket ready
Features
- ✅ HTTP client (OkHttp)
- ✅ WebSocket client (OkHttp WebSocket)
- 🚧 SSE client (EventSource) - Basic structure
- ✅ gRPC client (HTTP-based)
- ✅ MQTT client (WebSocket-based)
- ✅ Binary stream support
- ✅ Auto-reconnect
- ✅ Offline queue
- ✅ Authentication (Bearer, Basic)
- ✅ Coroutines support
Installation
Gradle (Kotlin DSL)
// build.gradle.kts
dependencies {
implementation("com.pluskode:client:0.1.0")
}Gradle (Groovy)
dependencies {
implementation 'com.pluskode:client:0.1.0'
}Usage
Basic Setup
import com.pluskode.client.*
val client = PluskodeClient.create(
PluskodeClientOptions(
baseURL = "http://localhost:3000",
timeout = 30_000,
retries = 3
)
)
// Set authentication
client.setAuth("Bearer", "your-jwt-token")HTTP Requests
// GET request
val users = client.get<List<Map<String, Any>>>("/api/users")
// POST request
val newUser = client.post<Map<String, Any>>(
"/api/users",
mapOf(
"name" to "John",
"email" to "[email protected]"
)
)
// PUT, PATCH, DELETE
client.put("/api/users/123", mapOf("name" to "Jane"))
client.patch("/api/users/123", mapOf("email" to "[email protected]"))
client.delete<Unit>("/api/users/123")WebSocket
// Subscribe to channel
val unsubscribe = client.subscribe("chat/room1") { data ->
println("Message: $data")
}
// Send message
client.send("chat/room1", mapOf("text" to "Hello!"))
// Unsubscribe
unsubscribe()Server-Sent Events (SSE)
val unsubscribe = client.subscribeSSE("/events/stream") { event ->
println("Event: ${event.event}, Data: ${event.data}")
}
// Close
unsubscribe()gRPC
val user = client.rpc<Map<String, Any>>(
service = "UserService",
method = "GetUser",
request = mapOf("id" to "123")
)MQTT
// Subscribe
val unsubscribe = client.subscribeMQTT(
topic = "sensors/temperature",
callback = { topic, message, qos ->
println("$topic: $message (QoS: $qos)")
},
options = MQTTOptions(qos = 1)
)
// Publish
client.publishMQTT(
topic = "sensors/temperature",
message = "25.5",
options = MQTTOptions(qos = 1, retain = false)
)Binary Streams
val close = client.connectBinary("/custom-protocol") { data ->
println("Received ${data.size} bytes")
}
// Close
close()Coroutines
// All methods are suspend functions
lifecycleScope.launch {
try {
val users = client.get<List<User>>("/api/users")
// Update UI
} catch (e: Exception) {
// Handle error
}
}Cleanup
// Cleanup all connections
client.destroy()Project Structure
client/android/
├── src/
│ ├── main/
│ │ ├── kotlin/
│ │ │ └── com/pluskode/client/
│ │ │ ├── PluskodeClient.kt
│ │ │ └── EventSource.kt
│ │ └── AndroidManifest.xml
│ └── test/
├── build.gradle.kts
└── README.mdDependencies
- Kotlin Coroutines 1.7.3
- OkHttp 4.12.0
- JSON (org.json)
Requirements
- Android API 21+ (Android 5.0+)
- Kotlin 1.9+
- Gradle 7.0+
License
MIT
Note: This is a working implementation with core features. Full gRPC and MQTT native libraries can be added as optional dependencies.
