// ĠVer i Block ĠNode Core Ċ // ĠCopyright Ġ 2 0 1 7 - 2 0 2 0 Ġ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 . annotations . Request Ċ import Ġcom . pap sign . ktor . open ap igen . annotations . Response Ċ import Ġcom . pap sign . ktor . open ap igen . route . info Ċ import Ġcom . pap sign . ktor . open ap igen . route . path . normal . Normal Open API Route Ċ import Ġcom . pap sign . ktor . open ap igen . route . path . normal . get Ċ import Ġcom . pap sign . ktor . open ap igen . route . path . normal . put Ċ import Ġcom . pap sign . ktor . open ap igen . route . response . respond Ċ import Ġorg . ver ib lock . core . utilities . Configuration Ċ import Ġorg . ver ib lock . min ers . pop . Auto Mine Config Ċ import Ġorg . ver ib lock . min ers . pop . api . model . Set Config Request Ċ import Ġorg . ver ib lock . min ers . pop . autom ine . Auto Mine Engine Ċ import Ġorg . ver ib lock . min ers . pop . service . Bitcoin Service Ċ Ċ class ĠConfiguration Controller ( ĊĠĠĠ Ġprivate Ġval Ġconfiguration : ĠConfiguration , ĊĠĠĠ Ġprivate Ġval Ġauto Mine Engine : ĠAuto Mine Engine , ĊĠĠĠ Ġprivate Ġval Ġbitcoin Service : ĠBitcoin Service Ċ ) Ġ: ĠApi Controller Ġ{ ĊĊĠĠĠ Ġ@ Path (" config ") ĊĠĠĠ Ġclass ĠConfig Path ĊĊĠĠĠ Ġ@ Path (" config / autom ine ") ĊĠĠĠ Ġclass ĠAutom ine Path ĊĊĠĠĠ Ġ@ Path (" config / btc - fee ") ĊĠĠĠ Ġclass ĠB tc Fee Path ĊĊĠĠĠ Ġoverride Ġfun ĠNormal Open API Route . register Api () Ġ{ ĊĠĠĠĠĠĠĠ Ġget < ConfigPath , ĠMap < String , ĠString >>( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo (" Get Ġall Ġconfiguration Ġvalues ") ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Values Ġ= Ġconfiguration . list () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrespond ( config Values ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġput < ConfigPath , ĠUnit , ĠSet Config Request >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo (" Set Ġone Ġconfiguration Ġvalue ") ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġrequest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request . key Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠBadRequest Exception ("' key ' Ġmust Ġbe Ġset ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request . value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠBadRequest Exception ("' value ' Ġmust Ġbe Ġset ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Values Ġ= Ġconfiguration . list () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! config Values . containsKey ( request . key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠBadRequest Exception ("' ${ request . key }' Ġis Ġnot Ġpart Ġof Ġthe Ġconfigurable Ġproperties ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . setProperty ( request . key , Ġrequest . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . save Over ridden Properties () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrespond ( Unit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget < Autom ine Path , ĠAuto Mine Config Dto >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo (" Get Ġthe Ġautom ine Ġconfig ") ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Values Ġ= ĠAuto Mine Config Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Mine Engine . config . round 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Mine Engine . config . round 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Mine Engine . config . round 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Mine Engine . config . round 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrespond ( config Values ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġput < Autom ine Path , ĠUnit , ĠAuto Mine Config Dto >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo (" Set Ġthe Ġautom ine Ġconfig ") ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġrequest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauto Mine Engine . config Ġ= ĠAuto Mine Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . round 1 Ġ?: Ġauto Mine Engine . config . round 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . round 2 Ġ?: Ġauto Mine Engine . config . round 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . round 3 Ġ?: Ġauto Mine Engine . config . round 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . round 4 Ġ?: Ġauto Mine Engine . config . round 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrespond ( Unit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget < Btc Fee Path , ĠB tc Fee Config Dto >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo (" Get Ġthe Ġbtc fee Ġconfig ") ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Values Ġ= ĠB tc Fee Config Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitcoin Service . max Fee , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitcoin Service . fee Per Kb ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrespond ( config Values ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġput < Btc Fee Path , ĠUnit , ĠB tc Fee Config Dto >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo (" Set Ġthe Ġbtc fee Ġconfig ") ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġrequest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request . max Fee Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitcoin Service . max Fee Ġ= Ġrequest . max Fee ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request . fee Per KB Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitcoin Service . fee Per Kb Ġ= Ġrequest . fee Per KB ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrespond ( Unit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Request (" Auto Ġmine Ġconfiguration Ġrequest ") Ċ @ Response (" Auto Ġmine Ġconfiguration ") Ċ data Ġclass ĠAuto Mine Config Dto ( ĊĠĠĠ Ġval Ġround 1 : ĠBoolean ?, ĊĠĠĠ Ġval Ġround 2 : ĠBoolean ?, ĊĠĠĠ Ġval Ġround 3 : ĠBoolean ?, ĊĠĠĠ Ġval Ġround 4 : ĠBoolean ? Ċ ) Ċ Ċ @ Request (" Btc Ġfee Ġconfiguration Ġrequest ") Ċ @ Response (" Btc Ġfee Ġconfiguration ") Ċ class ĠB tc Fee Config Dto ( ĊĠĠĠ Ġval Ġmax Fee : ĠLong ?, ĊĠĠĠ Ġval Ġfee Per KB : ĠLong ? Ċ ) Ċ