Skip to content
This repository has been archived by the owner on Oct 22, 2023. It is now read-only.

Commit

Permalink
Add new Bitcoin transaction function
Browse files Browse the repository at this point in the history
  • Loading branch information
cyb3rko committed Jul 15, 2022
1 parent 6835f01 commit 2f02ec6
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 2 deletions.
60 changes: 60 additions & 0 deletions src/main/kotlin/com/cyb3rko/m3okotlin/data/Bitcoin.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.cyb3rko.m3okotlin.data

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
Expand All @@ -13,3 +14,62 @@ internal data class BitcoinPriceRequest(val symbol: String)

@Serializable
data class BitcoinPriceResponse(val price: Float, val symbol: String)

@Serializable
internal data class BitcoinTransactionRequest(val hash: String)

@Serializable
data class BitcoinTransactionResponse(
@SerialName("block_height")
val blockHeight: Int,
@SerialName("block_index")
val blockIndex: Int,
@SerialName("double_spend")
val doubleSpend: Boolean,
val fee: Int,
val hash: String,
val inputs: List<TransactionInput>,
@SerialName("lock_time")
val lockTime: Int,
val outputs: List<TransactionOutput>,
val relay: String,
val size: Int,
@SerialName("tx_index")
val txIndex: String,
val version: Int,
@SerialName("vin_sz")
val vinSz: Int,
@SerialName("vout_sz")
val voutSz: Int,
val weight: Int
) {

@Serializable
data class TransactionInput(
@SerialName("prev_out")
val prevOut: TransactionPrevOut,
val script: String
) {

@Serializable
data class TransactionPrevOut(
val address: String,
val n: String,
val script: String,
val spent: Boolean,
@SerialName("tx_index")
val txIndex: String,
val value: String
)
}

@Serializable
data class TransactionOutput(
val address: String,
val script: String,
val spent: Boolean,
@SerialName("tx_index")
val txIndex: String,
val value: String
)
}
13 changes: 11 additions & 2 deletions src/main/kotlin/com/cyb3rko/m3okotlin/services/BitcoinService.kt
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package com.cyb3rko.m3okotlin.services

import com.cyb3rko.m3okotlin.M3O
import com.cyb3rko.m3okotlin.data.*
import com.cyb3rko.m3okotlin.data.BitcoinBalanceRequest
import com.cyb3rko.m3okotlin.data.BitcoinBalanceResponse
import com.cyb3rko.m3okotlin.data.BitcoinPriceRequest
import com.cyb3rko.m3okotlin.data.BitcoinPriceResponse
import io.ktor.client.request.*

private const val SERVICE = "bitcoin"
Expand Down Expand Up @@ -37,4 +36,14 @@ object BitcoinService {
body = BitcoinPriceRequest(symbol)
}
}

/**
* Get the details of a transaction
* @since 0.2.2
*/
suspend fun transaction(hash: String): BitcoinTransactionResponse {
return M3O.ktorHttpClient.post(M3O.getUrl(SERVICE, "Transaction")) {
body = BitcoinTransactionRequest(hash)
}
}
}

0 comments on commit 2f02ec6

Please sign in to comment.