Skip to content

Commit

Permalink
Add some task implementations
Browse files Browse the repository at this point in the history
  • Loading branch information
Zomis committed Dec 15, 2019
1 parent 66fd835 commit 9a6add6
Show file tree
Hide file tree
Showing 8 changed files with 93 additions and 3 deletions.
@@ -0,0 +1,7 @@
package net.zomis.duga.tasks

class CommentScanTask {

// Requires learning

}
@@ -0,0 +1,5 @@
package net.zomis.duga.tasks

interface DugaTask {
fun perform(): Unit
}
12 changes: 12 additions & 0 deletions Duga/duga-aws/src/main/kotlin/net/zomis/duga/tasks/MessageTask.kt
@@ -0,0 +1,12 @@
package net.zomis.duga.tasks

import net.zomis.duga.aws.Duga
import net.zomis.duga.aws.DugaMessage

class MessageTask(private val room: String, private val message: String) : DugaTask {

override fun perform() {
Duga().send(DugaMessage(room, message))
}

}
@@ -0,0 +1,9 @@
package net.zomis.duga.tasks

class RatingDiffTask(private val room: String, private val site: String, private val users: List<String>) : DugaTask {

override fun perform() {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}

}
23 changes: 21 additions & 2 deletions Duga/duga-aws/src/main/kotlin/net/zomis/duga/tasks/TaskLambda.kt
Expand Up @@ -2,14 +2,33 @@ package net.zomis.duga.tasks

import com.amazonaws.services.lambda.runtime.Context
import com.amazonaws.services.lambda.runtime.RequestHandler
import com.fasterxml.jackson.databind.ObjectMapper

class TaskLambda : RequestHandler<Map<String, Any>, Map<String, Any>> {
val githubAPI = System.getenv("GITHUB_API")

private val mapper = ObjectMapper()

override fun handleRequest(input: Map<String, Any>?, context: Context?): Map<String, Any> {
val json = mapper.readTree(mapper.writeValueAsString(input))

// comments
val task: DugaTask? = when (json["type"].asText()) {
"mess" -> MessageTask(json["room"]!!.asText(), json["message"]!!.asText())
"questionScan" -> null
"ratingdiff" -> RatingDiffTask(json["room"]!!.asText(),
json["site"]!!.asText(),
json["users"]!!.map { it.asText() }
)
"unanswered" -> UnansweredTask(json["room"]!!.asText(),
json["site"]!!.asText(),
json["message"]!!.asText()
)
else -> null
}

task?.perform()

TODO("Not implemented")
return mapOf()
}

}
@@ -0,0 +1,31 @@
package net.zomis.duga.tasks

import net.zomis.duga.aws.Duga
import net.zomis.duga.aws.DugaMessage
import net.zomis.duga.utils.StackExchangeAPI
import org.slf4j.LoggerFactory
import java.io.IOException

class UnansweredTask(private val room: String, private val site: String, private val message: String) : DugaTask {

private val logger = LoggerFactory.getLogger(javaClass)

private val api = StackExchangeAPI()

override fun perform() {
try {
val result = api.apiCall("info", site, "default")
val unanswered = result["items"][0]["total_unanswered"].asInt()
val total = result["items"][0]["total_questions"].asInt()
val percentageAnswered = (total.toDouble() - unanswered.toDouble()) / total.toDouble()
val percentageStr = String.format("%.4f", percentageAnswered * 100)
var send = message
send = send.replace("%unanswered%", unanswered.toString())
send = send.replace("%percentage%", percentageStr)
Duga().send(DugaMessage(room, send))
} catch (e: IOException) {
logger.error("Error with StackExchange API Call", e)
}
}

}
@@ -0,0 +1,7 @@
package net.zomis.duga.utils

class GitHubAPI {

val githubAPI = System.getenv("GITHUB_API")

}
@@ -1,4 +1,4 @@
package net.zomis.duga.net.zomis.utils
package net.zomis.duga.utils

import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.ObjectMapper
Expand Down

0 comments on commit 9a6add6

Please sign in to comment.