// ĠVer i Block ĠNode Core Ċ // ĠCopyright Ġ 2 0 1 7 - 2 0 2 1 ĠX en ios ĠSE ZC Ċ // ĠAll Ġrights Ġreserved . Ċ // Ġhttps :// www . ver ib lock . org Ċ // ĠDistributed Ġunder Ġthe ĠMIT Ġsoftware Ġlicense , Ġsee Ġthe Ġaccompanying Ċ // Ġfile ĠLICENSE Ġor Ġhttp :// www . opensource . org / licenses / mit - license . php . Ċ Ċ package Ġorg . ver ib lock . min ers . pop . api . controller Ċ Ċ import Ġcom . pap sign . ktor . open ap igen . annotations . Path Ċ import Ġcom . pap sign . ktor . open ap igen . route . info Ċ import Ġcom . pap sign . ktor . open ap igen . route . path . auth . Open API Authenticated Route Ċ import Ġcom . pap sign . ktor . open ap igen . route . path . auth . post Ċ import Ġcom . pap sign . ktor . open ap igen . route . route Ċ import Ġio . ktor . auth . UserId Principal Ċ import Ġorg . ver ib lock . min ers . pop . api . model . Withdraw Request Ċ import Ġorg . ver ib lock . min ers . pop . model . result . Result Ċ import Ġorg . ver ib lock . min ers . pop . service . Miner Service Ċ Ċ class ĠWallet Controller ( ĊĠĠĠ Ġprivate Ġval Ġminer Service : ĠMin er Service Ċ ) Ġ: ĠApi Controller Ġ{ ĊĊĠĠĠ Ġ@ Path (" btc / withdraw ") ĊĠĠĠ Ġclass ĠWith draw Btc Path ĊĊĠĠĠ Ġoverride Ġfun ĠOpenAPI Authenticated Route < UserId Principal >. register Api () Ġ= Ġroute (" wallet ") Ġ{ ĊĠĠĠĠĠĠĠ Ġpost < Withdraw Btc Path , ĠResult , ĠWith draw Request , ĠUserId Principal >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo (" Withdraw s ĠBTC Ġfrom Ġthe ĠPo P ĠMin er ") ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġrequest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress : ĠString Ġ= Ġrequest . destination Address ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠBadRequest Exception (" Parameter Ġ' destination Address ' Ġwas Ġnot Ġsupplied ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount String : ĠString Ġ= Ġrequest . amount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠBadRequest Exception (" Parameter Ġ' amount ' Ġwas Ġnot Ġsupplied ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount Ġ= Ġamount String . to BigDecimal OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠBadRequest Exception (" Parameter Ġ' amount ' Ġis Ġnot Ġa Ġvalid Ġnumber ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġminer Service . send Bitcoin To Address ( address , Ġamount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . did Fail ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCall FailureException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . messages . first OrNull ()?. let Ġ{ Ġrm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrm . message Ġ+ Ġ( rm . details . first OrNull ()?. let Ġ{ Ġ"; Ġ$ it " Ġ} Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġ" Failed Ġto Ġsend Ġ$ amount ĠBit coins Ġto Ġ$ address " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ