first commit

This commit is contained in:
2024-09-18 10:17:07 +05:30
commit dfa85ede7e
31 changed files with 1147 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import model.NeftTransaction
import model.TransferTransaction
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody.Companion.toRequestBody
import response.TransactionFailureResponse
import response.TransactionResponse
import response.TransactionSuccessResponse
import java.io.IOException
class TransactionExecutor() {
private val protocol = "http"
private val host = "localhost"
private val port = "8080"
private val rootRoute = "WESTBANGAL/api"
private val remoteUrl = "$protocol://$host:$port/$rootRoute"
fun executePair(transactionPair: Pair<TransferTransaction, NeftTransaction>): Pair<TransactionResponse, TransactionResponse> {
val transferTransaction = transactionPair.first
val neftTransaction = transactionPair.second
val transferResponse = execute(Json.encodeToString(transferTransaction))
val neftResponse = execute(Json.encodeToString(neftTransaction))
return Pair(transferResponse, neftResponse)
}
private fun execute(postBody: String): TransactionResponse {
val transferRoute = "IPKSNeftRtgsApiTransfer"
val transferURL = "$remoteUrl/$transferRoute"
val jsonMediaType = "application/json; charset=utf-8".toMediaType()
val httpClient = OkHttpClient()
val request = Request.Builder()
.url(transferURL)
.post(postBody.toRequestBody(jsonMediaType))
.build()
val responseBody = httpClient.newCall(request).execute().use { response ->
if (!response.isSuccessful) {
throw IOException("Unexpected code $response")
}
response.body!!.string()
}
val response = if(responseBody.contains("SUCCESS")) {
Json.decodeFromString<TransactionSuccessResponse>(responseBody)
} else {
Json.decodeFromString<TransactionFailureResponse>(responseBody)
}
return response
}
}