В итоге я написал следующий код, который регистрируется как учитель и выдает отчет, показывающий, сколько секунд ваш ученик потратил сегодня. В моем случае я только что создал свою учетную запись как учитель, а сын - как ученик, и я просто проверяю, что он провел 5 минут или больше. Сценарий Groovy, приведенный ниже, выполняется (используя.BAT обертка) на счет моего сына, и выходит из системы, если он не сделал необходимые 5 минут.
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.2')
import groovyx.net.http.*
import static groovyx.net.http.ContentType.URLENC
import javax.xml.ws.handler.Handler
import javax.xml.ws.http.HTTPBinding
def http = new HTTPBuilder("https://www.typingweb.com")
http.post( path: '/portal/index/login', body: [email: 'your@emailhere.com', password: 'yourpasswordhere'],
requestContentType: URLENC ) { resp, reader ->
println "response status: ${resp.statusLine}"
println 'Headers: -----------'
resp.headers.each { h ->
println " ${h.name} : ${h.value}"
}
println 'Response data: -----'
System.out << reader
println '\n--------------------'
}
def today = new Date().format( 'yyyy-MM-dd' )
println today
http.post( path: "/portal/reports/run/export/1/date/${today}/dateRange/today/endDate//startDate//gaGroupID/all/report/exercises/format/csv"
) { resp, reader ->
println "response status: ${resp.statusLine}"
println 'Headers: -----------'
resp.headers.each { h ->
println " ${h.name} : ${h.value}"
}
println 'Response data: -----'
def lastLine
reader.eachLine{ line ->
lastLine = line
}
println lastLine
def seconds = lastLine.split(',')[4].replaceAll('"', '')
println seconds
if ( seconds.isNumber() && (seconds.toInteger() >= 300) ) {
println "Quitting WITHOUT logging off"
System.exit(0);
}
def proc = """msg * "Tienes que hacer 5 minutos de escribir a maquina" """.execute()
proc.waitFor()
println "Logging off..."
"""logoff""".execute()
}