main.misk.grpc.reflect.ServerReflectionApi.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of misk-grpc-reflect Show documentation
Show all versions of misk-grpc-reflect Show documentation
Open source application container in Kotlin
package misk.grpc.reflect
import com.squareup.wire.MessageSink
import com.squareup.wire.MessageSource
import com.squareup.wire.reflector.SchemaReflector
import grpc.reflection.v1alpha.ServerReflectionRequest
import grpc.reflection.v1alpha.ServerReflectionResponse
import grpc.reflection.v1alpha.ServerReflectionServerReflectionInfoBlockingServer
import misk.security.authz.Unauthenticated
import misk.web.actions.WebAction
import jakarta.inject.Inject
// https://raw.githubusercontent.com/grpc/grpc/master/src/proto/grpc/reflection/v1alpha/reflection.proto
class ServerReflectionApi @Inject constructor(
private val reflector: SchemaReflector,
) : ServerReflectionServerReflectionInfoBlockingServer, WebAction {
@Unauthenticated
override fun ServerReflectionInfo(
requests: MessageSource,
responses: MessageSink
) {
requests.use {
responses.use {
while (true) {
val serverReflectionRequest = requests.read() ?: break
responses.write(reflector.process(serverReflectionRequest))
}
}
}
}
}