All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.provenance.client.protobuf.extensions.Names.kt Maven / Gradle / Ivy

There is a newer version: 1.19.1
Show newest version
package io.provenance.client.protobuf.extensions

import io.provenance.client.protobuf.paginationBuilder
import io.provenance.name.v1.QueryResolveRequest
import io.provenance.name.v1.QueryReverseLookupRequest
import io.provenance.name.v1.QueryGrpc.QueryBlockingStub as BlockingNames
import io.provenance.name.v1.QueryGrpcKt.QueryCoroutineStub as CoroutineNames

/**
 * Resolve a name to an address.
 *
 * See [Names](https://github.com/FigureTechnologies/service-wallet/blob/v45/pb-client/src/main/kotlin/com/figure/wallet/pbclient/client/grpc/Names.kt#L13).
 *
 * @param name The name to look up.
 * @return The bech32 address of the name.
 */
fun BlockingNames.resolveAddressForName(name: String): String =
    resolve(QueryResolveRequest.newBuilder().setName(name).build()).address

/**
 * Resolve a name to an address.
 *
 * See [Names](https://github.com/FigureTechnologies/service-wallet/blob/v45/pb-client/src/main/kotlin/com/figure/wallet/pbclient/client/grpc/Names.kt#L13).
 *
 * @param name The name to look up.
 * @return The bech32 address of the name.
 */
suspend fun CoroutineNames.resolveAddressForName(name: String): String =
    resolve(QueryResolveRequest.newBuilder().setName(name).build()).address

/**
 * Get all names associated with the given address.
 *
 * See [Names](https://github.com/FigureTechnologies/service-wallet/blob/v45/pb-client/src/main/kotlin/com/figure/wallet/pbclient/client/grpc/Names.kt#L16).
 *
 * @param address The bech32 address to list the names of.
 * @return The names associated with the address.
 */
fun BlockingNames.getAllNames(address: String): List {
    var offset = 0
    var total: Long
    val limit = 100
    val names = mutableListOf()

    do {
        val results =
            reverseLookup(
                QueryReverseLookupRequest.newBuilder()
                    .setAddress(address)
                    .setPagination(paginationBuilder(offset, limit))
                    .build()
            )
        total = results.pagination?.total ?: results.nameCount.toLong()
        offset += limit
        names.addAll(results.nameList)
    } while (names.count() < total)

    return names
}

/**
 * Get all names associated with the given address.
 *
 * See [Names](https://github.com/FigureTechnologies/service-wallet/blob/v45/pb-client/src/main/kotlin/com/figure/wallet/pbclient/client/grpc/Names.kt#L16).
 *
 * @param address The bech32 address to list the names of.
 * @return The names associated with the address.
 */
suspend fun CoroutineNames.getAllNames(address: String): List {
    var offset = 0
    var total: Long
    val limit = 100
    val names = mutableListOf()

    do {
        val results =
            reverseLookup(
                QueryReverseLookupRequest.newBuilder()
                    .setAddress(address)
                    .setPagination(paginationBuilder(offset, limit))
                    .build()
            )
        total = results.pagination?.total ?: results.nameCount.toLong()
        offset += limit
        names.addAll(results.nameList)
    } while (names.count() < total)

    return names
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy