// Ġ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 . response . respond Ċ import Ġcom . pap sign . ktor . open ap igen . route . route Ċ import Ġio . ktor . auth . UserId Principal Ċ import Ġorg . ver ib lock . core . utilities . Address Utility Ċ import Ġorg . ver ib lock . core . utilities . Utility Ċ import Ġorg . ver ib lock . min ers . pop . api . dto . Withdraw Request Ċ import Ġorg . ver ib lock . min ers . pop . api . dto . Withdraw Response Ċ import Ġorg . ver ib lock . min ers . pop . service . Alt chain Pop Miner Service Ċ import Ġorg . ver ib lock . sdk . models . as Coin Ċ import Ġorg . ver ib lock . sp v . model . Output Ċ import Ġorg . ver ib lock . sp v . model . as Standard Address Ċ Ċ class ĠWallet Controller ( ĊĠĠĠ Ġprivate Ġval Ġminer : ĠAlt chain Pop Miner Service , Ċ ) Ġ: ĠApi Controller Ġ{ ĊĊĠĠĠ Ġ@ Path (" withdraw ") ĊĠĠĠ Ġclass ĠWith draw Path ĊĊĠĠĠ Ġoverride Ġfun ĠOpenAPI Authenticated Route < UserId Principal >. register Api () Ġ= Ġroute (" wallet ") Ġ{ ĊĠĠĠĠĠĠĠ Ġpost < Withdraw Path , ĠWith draw Response , ĠWith draw Request , ĠUserId Principal >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo (" Withdraw ĠV BK s Ġto ĠAddress ") ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġrequest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġatomic Amount Ġ= ĠUtility . convert Decimal Coin To Atomic Long ( request . amount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdestination Address Ġ= Ġif Ġ( Address Utility . isValid Standard Or Mult is ig Address ( request . destination Address )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . destination Address ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠBadRequest Exception ("${ request . destination Address } Ġis Ġnot Ġa Ġvalid Ġstandard Ġaddress ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġminer . sp v Context . sp v Service . send Coins ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Output ( destination Address . as Standard Address (), Ġatomic Amount . as Coin ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġids Ġ= Ġresult . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrespond ( Withdraw Response ( ids )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ