chirpstack/api/kotlin
2024-01-12 09:19:50 +00:00
..
gradle/wrapper Protobuf Java and Kotlin code generation. (#64) 2023-01-10 15:46:04 +00:00
build.gradle.kts Bump version to 4.7.0-test.3 2024-01-12 09:19:50 +00:00
gradlew Protobuf Java and Kotlin code generation. (#64) 2023-01-10 15:46:04 +00:00
gradlew.bat Protobuf Java and Kotlin code generation. (#64) 2023-01-10 15:46:04 +00:00
Makefile Protobuf Java and Kotlin code generation. (#64) 2023-01-10 15:46:04 +00:00
README.md Protobuf Java and Kotlin code generation. (#64) 2023-01-10 15:46:04 +00:00
settings.gradle.kts Protobuf Java and Kotlin code generation. (#64) 2023-01-10 15:46:04 +00:00

chirpstack-api

ChirpStack gRPC API message and service wrappers for Kotlin.

Install

An artifact is not yet public on Maven Central. You can build your own jar with

make jar

or install the artifact in your local Maven repository $HOME/.m2 with

make install

Usage

All messages, services, constants, etc. are auto-generated from the ChirpStack protobuf definitions. The result is that this package structure matches that of the protobuf definitions.

The protobuf definitions can be found here: https://github.com/chirpstack/chirpstack/tree/master/api/proto

Example

Maven

<dependency>
  <groupId>io.chirpstack</groupId>
  <artifactId>chirpstack-api-kotlin</artifactId>
  <version>1.0-SNAPSHOT</version>
</dependency>

Gradle

dependencies {
    implementation("io.chirpstack:chirpstack-api-kotlin:1.0-SNAPSHOT")
}

Example #1: List tenants

Note: To make this example work you will also need to add kotlin coroutines as a dependency

dependencies {
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4")
}
import io.chirpstack.api.TenantServiceGrpcKt
import io.chirpstack.api.listTenantsRequest
import io.grpc.ManagedChannelBuilder
import io.grpc.Metadata
import kotlinx.coroutines.runBlocking

fun main() {
    val channel = ManagedChannelBuilder
        .forAddress("localhost", 8080)
        .usePlaintext()
        .build()
    val token = "Bearer <INSERT_TOKEN_HERE>"
    val metadata = Metadata()
    val key = Metadata.Key.of("authorization", Metadata.ASCII_STRING_MARSHALLER)
    metadata.put(key, token)
    val stub = TenantServiceGrpcKt.TenantServiceCoroutineStub(channel)
    val request = listTenantsRequest {
        limit=10
    }
    val response = runBlocking { stub.list(request, metadata) }
    println("Number of tenants: ${response.totalCount}")
}