From 070b862f25399a7fa326aea3cd7582558e99fb3c Mon Sep 17 00:00:00 2001 From: Rahul Rudragoudar Date: Fri, 5 Mar 2021 14:51:17 +0530 Subject: [PATCH] Remove access methods Signed-off-by: Rahul Rudragoudar --- src/main/scala/lc/Main.scala | 8 +-- src/main/scala/lc/core/captcha.scala | 8 +-- src/main/scala/lc/core/captchaProviders.scala | 31 ++++------ src/main/scala/lc/core/config.scala | 56 ++++--------------- 4 files changed, 31 insertions(+), 72 deletions(-) diff --git a/src/main/scala/lc/Main.scala b/src/main/scala/lc/Main.scala index 145f939..491ed3f 100644 --- a/src/main/scala/lc/Main.scala +++ b/src/main/scala/lc/Main.scala @@ -8,13 +8,13 @@ import lc.core.Config object LCFramework { def main(args: scala.Array[String]): Unit = { val captcha = new Captcha() - val server = new Server(port = Config.getPort, captcha = captcha) + val server = new Server(port = Config.port, captcha = captcha) val backgroundTask = new BackgroundTask( captcha = captcha, - throttle = Config.getThrottle, - timeLimit = Config.getCaptchaExpiryTimeLimit + throttle = Config.throttle, + timeLimit = Config.captchaExpiryTimeLimit ) - backgroundTask.beginThread(delay = Config.getThreadDelay) + backgroundTask.beginThread(delay = Config.threadDelay) server.start() } } diff --git a/src/main/scala/lc/core/captcha.scala b/src/main/scala/lc/core/captcha.scala index ff8ac3a..d2fbe29 100644 --- a/src/main/scala/lc/core/captcha.scala +++ b/src/main/scala/lc/core/captcha.scala @@ -53,9 +53,9 @@ class Captcha { token.asInstanceOf[Int] } - val supportedinputType = Config.getSupportedinputType - val supportedLevels = Config.getSupportedLevels - val supportedMedia = Config.getSupportedMedia + val supportedinputType = Config.supportedinputType + val supportedLevels = Config.supportedLevels + val supportedMedia = Config.supportedMedia private def validateParam(param: Parameters): Boolean = { if ( @@ -115,7 +115,7 @@ class Captcha { def checkAnswer(answer: Answer): Result = { val selectPstmt = Statements.tlStmts.get.selectPstmt - selectPstmt.setInt(1, Config.getCaptchaExpiryTimeLimit) + selectPstmt.setInt(1, Config.captchaExpiryTimeLimit) selectPstmt.setString(2, answer.id) val rs: ResultSet = selectPstmt.executeQuery() val psOpt = if (rs.first()) { diff --git a/src/main/scala/lc/core/captchaProviders.scala b/src/main/scala/lc/core/captchaProviders.scala index 1567cd4..f8588f0 100644 --- a/src/main/scala/lc/core/captchaProviders.scala +++ b/src/main/scala/lc/core/captchaProviders.scala @@ -3,8 +3,7 @@ package lc.core import lc.captchas._ import lc.captchas.interfaces.ChallengeProvider import lc.captchas.interfaces.Challenge -import org.json4s.{DefaultFormats, JObject, JField, JArray, JString} -import org.json4s.jackson.Serialization.write +import scala.collection.mutable.Map object CaptchaProviders { private val providers = Map( @@ -23,10 +22,9 @@ object CaptchaProviders { } } - implicit val formats: DefaultFormats.type = DefaultFormats - private val seed = Config.getSeed + private val seed = Config.seed private val random = new scala.util.Random(seed) - private val config = Config.getCaptchaConfig + private val config = Config.captchaConfigMap private def getNextRandomInt(max: Int): Int = random.synchronized { @@ -37,26 +35,21 @@ object CaptchaProviders { return providers(id) } - private def filterProviderByParam(param: Parameters): List[(String, String)] = { + private def filterProviderByParam(param: Parameters): Iterable[(List[String], List[String])] = { for { - JObject(child) <- config - JField("name", JString(name)) <- child - JField("supportedLevels", JArray(supportedLevels)) <- child - JField("supportedMedia", JArray(supportedMedia)) <- child - JField("supportedinputType", JArray(supportedinputType)) <- child - JField("config", config) <- child - if supportedLevels.contains(JString(param.level)) - if supportedMedia.contains(JString(param.media)) - if supportedinputType.contains(JString(param.input_type)) - } yield (name, write(config)) + configValue <- config.values + if configValue("supportedLevels").contains(param.level) + if configValue("supportedMedia").contains(param.media) + if configValue("supportedinputType").contains(param.input_type) + } yield (configValue("name"), configValue("config")) } def getProvider(param: Parameters): ChallengeProvider = { - val providerConfig = filterProviderByParam(param) + val providerConfig = filterProviderByParam(param).toList val randomIndex = getNextRandomInt(providerConfig.length) val providerIndex = providerConfig(randomIndex)._1 - val selectedProvider = providers(providerIndex) - selectedProvider.configure(providerConfig(randomIndex)._2) + val selectedProvider = providers(providerIndex(0)) + selectedProvider.configure(providerConfig(randomIndex)._2(0)) selectedProvider } } diff --git a/src/main/scala/lc/core/config.scala b/src/main/scala/lc/core/config.scala index 0321e96..eabd373 100644 --- a/src/main/scala/lc/core/config.scala +++ b/src/main/scala/lc/core/config.scala @@ -3,6 +3,7 @@ package lc.core import scala.io.Source.fromFile import org.json4s.{DefaultFormats, JValue, JObject, JField} import org.json4s.jackson.JsonMethods.parse +import scala.collection.immutable.HashMap object Config { @@ -14,16 +15,17 @@ object Config { finally configFile.close private val configJson = parse(configString) - private val port = (configJson \ "port").extract[Int] - private val throttle = (configJson \ "throttle").extract[Int] - private val seed = (configJson \ "randomSeed").extract[Int] - private val captchaExpiryTimeLimit = (configJson \ "captchaExpiryTimeLimit").extract[Int] - private val threadDelay = (configJson \ "threadDelay").extract[Int] - private val capthcaConfig = (configJson \ "captchas") + val port: Int = (configJson \ "port").extract[Int] + val throttle: Int = (configJson \ "throttle").extract[Int] + val seed: Int = (configJson \ "randomSeed").extract[Int] + val captchaExpiryTimeLimit: Int = (configJson \ "captchaExpiryTimeLimit").extract[Int] + val threadDelay: Int = (configJson \ "threadDelay").extract[Int] + private val captchaConfig = (configJson \ "captchas") + val captchaConfigMap: Map[String,HashMap[String,List[String]]] = captchaConfig.values.asInstanceOf[Map[String, HashMap[String, List[String]]]] - private val supportedLevels = getAllValues(configJson, "supportedLevels") - private val supportedMedia = getAllValues(configJson, "supportedMedia") - private val supportedinputType = getAllValues(configJson, "supportedinputType") + val supportedLevels: Set[String] = getAllValues(configJson, "supportedLevels") + val supportedMedia: Set[String] = getAllValues(configJson, "supportedMedia") + val supportedinputType: Set[String] = getAllValues(configJson, "supportedinputType") private def getAllValues(config: JValue, param: String): Set[String] = { val configValues = (config \\ param) @@ -41,40 +43,4 @@ object Config { valueSet } - def getPort(): Int = { - port - } - - def getThrottle(): Int = { - throttle - } - - def getSeed(): Int = { - seed - } - - def getCaptchaExpiryTimeLimit(): Int = { - captchaExpiryTimeLimit - } - - def getThreadDelay(): Int = { - threadDelay - } - - def getCaptchaConfig(): JValue = { - capthcaConfig - } - - def getSupportedLevels(): Set[String] = { - supportedLevels - } - - def getSupportedMedia(): Set[String] = { - supportedMedia - } - - def getSupportedinputType(): Set[String] = { - supportedinputType - } - }