lc-core/src/main/scala/lc/core/captchaProviders.scala

42 lines
1.1 KiB
Scala

package lc.core
import lc.captchas._
import lc.captchas.interfaces.ChallengeProvider
import lc.captchas.interfaces.Challenge
object CaptchaProviders {
private val providers = Map(
"FilterChallenge" -> new FilterChallenge,
//"FontFunCaptcha" -> new FontFunCaptcha,
"GifCaptcha" -> new GifCaptcha,
"ShadowTextCaptcha" -> new ShadowTextCaptcha,
"RainDropsCaptcha" -> new RainDropsCP
//"LabelCaptcha" -> new LabelCaptcha
)
def generateChallengeSamples(): Map[String, Challenge] = {
providers.map {
case (key, provider) =>
(key, provider.returnChallenge())
}
}
private val seed = System.currentTimeMillis.toString.substring(2, 6).toInt
private val random = new scala.util.Random(seed)
private def getNextRandomInt(max: Int) =
random.synchronized {
random.nextInt(max)
}
def getProviderById(id: String): ChallengeProvider = {
return providers(id)
}
def getProvider(): ChallengeProvider = {
val keys = providers.keys
val providerIndex = keys.toVector(getNextRandomInt(keys.size))
providers(providerIndex)
}
}