@ -42,7 +42,7 @@ class APIController {
private val logger : Logger = LoggerFactory . getLogger ( APIController :: class . java )
private val cache = CacheController ( )
private val softwareVersion = " 1.1. 2 "
private val softwareVersion = " 1.1. 3 "
private val apiVersion = " 1.1.1 "
private val startTime = System . currentTimeMillis ( ) / 1000
@ -83,9 +83,31 @@ class APIController {
@RequestParam ( value = " courseName " , defaultValue = " AI4 " ) courseName : String ,
@RequestParam ( value = " week " , defaultValue = " 0 " ) week : Int
) : HashSet < String > {
val lessonSubjectList = ArrayList < String > ( )
logger . info ( " lessonSubjectList request at ${LocalDateTime.now()} ! " )
requestCount ++
return getLessonSubjectList ( courseName , week )
}
@RequestMapping ( " /lesson " )
fun lesson (
@RequestParam ( value = " courseName " , defaultValue = " AI4 " ) courseName : String ,
@RequestParam ( value = " lessonSubject " , defaultValue = " Mathematik 4 " ) lessonSubject : String ,
@RequestParam ( value = " week " , defaultValue = " 0 " ) week : Int
) : ArrayList < Lesson > {
logger . info ( " lesson request at ${LocalDateTime.now()} ! " )
requestCount ++
return getLesson ( courseName , lessonSubject , week )
}
@RequestMapping ( " /status " )
fun status ( ) : Status {
return getStatus ( )
}
// non direct api functions
private fun getLessonSubjectList ( courseName : String , week : Int ) : HashSet < String > {
val lessonSubjectList = ArrayList < String > ( )
// get every lesson subject for the given week
val flatMap = cache . getTimetable ( courseName , week ) . timetable . days . flatMap { it . timeslots . asIterable ( ) }
@ -96,12 +118,7 @@ class APIController {
return HashSet ( lessonSubjectList )
}
@RequestMapping ( " /lesson " )
fun lesson (
@RequestParam ( value = " courseName " , defaultValue = " AI4 " ) courseName : String ,
@RequestParam ( value = " lessonSubject " , defaultValue = " Mathematik 4 " ) lessonSubject : String ,
@RequestParam ( value = " week " , defaultValue = " 0 " ) week : Int
) : ArrayList < Lesson > {
private fun getLesson ( courseName : String , lessonSubject : String , week : Int ) : ArrayList < Lesson > {
val lessonList = ArrayList < Lesson > ( )
// get all lessons from the weeks timetable
@ -119,8 +136,7 @@ class APIController {
return lessonList
}
@RequestMapping ( " /status " )
fun status ( ) : Status {
private fun getStatus ( ) : Status {
val currentTime = System . currentTimeMillis ( ) / 1000
val minutes = ( currentTime - startTime ) % 3600 / 60
val hours = ( currentTime - startTime ) % 86400 / 3600