Skip to content

Commit a8c3a99

Browse files
author
Łukasz Gąsior
committed
Update iele call response
1 parent 786f0a7 commit a8c3a99

File tree

3 files changed

+11
-6
lines changed

3 files changed

+11
-6
lines changed

src/main/scala/io/iohk/ethereum/jsonrpc/EthService.scala

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,9 @@ object EthService {
127127
contractCode: Option[ByteString])
128128

129129
case class CallRequest(tx: CallTx, block: BlockParam)
130-
case class IeleCallRequest(tx: IeleCallTx, block: BlockParam)
131130
case class CallResponse(returnData: ByteString)
131+
case class IeleCallRequest(tx: IeleCallTx, block: BlockParam)
132+
case class IeleCallResponse(returnData: Seq[ByteString])
132133
case class EstimateGasResponse(gas: BigInt)
133134

134135
case class GetCodeRequest(address: Address, block: BlockParam)
@@ -567,7 +568,7 @@ class EthService(
567568
}
568569
}
569570

570-
def ieleCall(req: IeleCallRequest): ServiceResponse[CallResponse] = {
571+
def ieleCall(req: IeleCallRequest): ServiceResponse[IeleCallResponse] = {
571572
import req.tx
572573

573574
val args = tx.arguments.getOrElse(Nil)
@@ -578,7 +579,9 @@ class EthService(
578579
}
579580

580581
dataEither match {
581-
case Right(data) => call(CallRequest(CallTx(tx.from, tx.to, tx.gas, tx.gasPrice, tx.value, ByteString(data)), req.block))
582+
case Right(data) =>
583+
call(CallRequest(CallTx(tx.from, tx.to, tx.gas, tx.gasPrice, tx.value, ByteString(data)), req.block))
584+
.map(_.right.map { callResponse => IeleCallResponse(rlp.decode[Seq[ByteString]](callResponse.returnData)(seqEncDec[ByteString])) })
582585
case Left(error) => Future.successful(Left(error))
583586
}
584587
}

src/main/scala/io/iohk/ethereum/jsonrpc/IeleJsonMethodsImplicits.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package io.iohk.ethereum.jsonrpc
22

33
import akka.util.ByteString
44
import io.iohk.ethereum.jsonrpc.EthService._
5-
import io.iohk.ethereum.jsonrpc.JsonRpcController.JsonDecoder
5+
import io.iohk.ethereum.jsonrpc.JsonRpcController.{JsonDecoder, JsonEncoder}
66
import io.iohk.ethereum.jsonrpc.JsonRpcErrors.InvalidParams
77
import io.iohk.ethereum.jsonrpc.PersonalService.{InvalidAddress, SendIeleTransactionRequest}
88
import org.json4s.JsonAST.{JArray, JObject, JString, JValue}
@@ -33,7 +33,7 @@ object IeleJsonMethodsImplicits extends JsonMethodsImplicits {
3333
arguments = arguments)
3434
}
3535

36-
implicit val iele_call = new JsonDecoder[IeleCallRequest] {
36+
implicit val iele_call = new JsonDecoder[IeleCallRequest] with JsonEncoder[IeleCallResponse] {
3737
def decodeJson(params: Option[JArray]): Either[JsonRpcError, IeleCallRequest] =
3838
params match {
3939
case Some(JArray((txObj: JObject) :: (blockValue: JValue) :: Nil)) =>
@@ -43,6 +43,8 @@ object IeleJsonMethodsImplicits extends JsonMethodsImplicits {
4343
} yield IeleCallRequest(tx, blockParam)
4444
case _ => Left(InvalidParams())
4545
}
46+
47+
override def encodeJson(t: IeleCallResponse): JValue = JArray(t.returnData.map(encodeAsHex).toList)
4648
}
4749

4850

src/main/scala/io/iohk/ethereum/jsonrpc/JsonRpcController.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ class JsonRpcController(
222222
case req @ JsonRpcRequest(_, "iele_sendTransaction", _, _) =>
223223
handle[SendIeleTransactionRequest, SendTransactionResponse](personalService.sendIeleTransaction, req)
224224
case req @ JsonRpcRequest(_, "iele_call", _, _) =>
225-
handle[IeleCallRequest, CallResponse](ethService.ieleCall, req)
225+
handle[IeleCallRequest, IeleCallResponse](ethService.ieleCall, req)
226226
}
227227

228228
private def handlePersonalRequest: PartialFunction[JsonRpcRequest, Future[JsonRpcResponse]] = {

0 commit comments

Comments
 (0)