2019-10-21 18:46:21 +02:00
/ * *
* TheCitadelofRicks
*
2020-01-15 13:42:40 +01:00
* Copyright 2019 - 2020 < seil0 @mosad . xyz >
2019-10-21 18:46:21 +02:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston ,
* MA 02110 - 1301 , USA .
*
* /
package org.mosad.thecitadelofricks.controller
import org.mosad.thecitadelofricks.APIController.Companion.apiVersion
import org.mosad.thecitadelofricks.APIController.Companion.softwareVersion
import org.mosad.thecitadelofricks.APIController.Companion.startTime
import org.mosad.thecitadelofricks.Status
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import java.net.HttpURLConnection
import java.net.URL
import java.time.LocalDateTime
import java.util.*
2020-06-05 18:23:15 +02:00
import kotlin.collections.HashMap
2019-10-21 18:46:21 +02:00
class StatusController {
companion object {
private val logger : Logger = LoggerFactory . getLogger ( StatusController :: class . java )
2021-10-13 16:07:37 +02:00
var totalRequests = 0
private set
var mensaMenuRequests = 0
private set
var courseListRequests = 0
private set
var timetableRequests = HashMap < String , Int > ( )
private set
2023-09-25 15:33:42 +02:00
var roomListRequests = 0
private set
var roomScheduleRequests = HashMap < String , Int > ( )
private set
2019-10-21 18:46:21 +02:00
2020-02-27 17:42:19 +01:00
/ * *
* if a mensamenu / courseList / timetable is requested update the specific and total request count
* /
fun updateMensaMenuRequests ( ) {
mensaMenuRequests ++
2019-10-21 18:46:21 +02:00
totalRequests ++
}
2020-02-27 17:42:19 +01:00
fun updateCourseListRequests ( ) {
courseListRequests ++
totalRequests ++
2019-10-21 18:46:21 +02:00
}
fun updateTimetableRequests ( courseName : String ) {
2021-10-13 16:39:01 +02:00
timetableRequests [ courseName ] = ( timetableRequests [ courseName ] ?: 0 ) + 1
2020-02-27 17:42:19 +01:00
totalRequests ++
2019-10-21 18:46:21 +02:00
}
2023-09-25 15:33:42 +02:00
fun updateRoomListRequests ( ) {
roomListRequests ++
totalRequests ++
}
fun updateRoomScheduleRequests ( roomName : String ) {
roomScheduleRequests [ roomName ] = ( roomScheduleRequests [ roomName ] ?: 0 ) + 1
totalRequests ++
}
2019-10-21 18:46:21 +02:00
fun getStatus ( ) : Status {
val currentTime = System . currentTimeMillis ( ) / 1000
val minutes = ( currentTime - startTime ) % 3600 / 60
val hours = ( currentTime - startTime ) % 86400 / 3600
val days = ( currentTime - startTime ) / 86400
var hsoCode = 999
var swfrCode = 999
try {
val hsoURL = URL ( " https://www.hs-offenburg.de/ " )
val swfrURL = URL ( " https://www.swfr.de/ " )
var connection = hsoURL . openConnection ( ) as HttpURLConnection
connection . requestMethod = " HEAD "
connection . connectTimeout = 15000
hsoCode = connection . responseCode
connection = swfrURL . openConnection ( ) as HttpURLConnection
connection . connectTimeout = 15000
swfrCode = connection . responseCode
} catch ( e : Exception ) {
logger . error ( " Error while fetching url response codes! " , e )
}
return Status (
LocalDateTime . now ( ) ,
" $days days, $hours : $minutes " ,
apiVersion ,
softwareVersion ,
2021-10-13 16:07:37 +02:00
totalRequests ,
mensaMenuRequests ,
courseListRequests ,
timetableRequests ,
2019-10-21 18:46:21 +02:00
CacheController . timetableList . size ,
Date ( CacheController . courseList . meta . updateTime * 1000 ) ,
2023-09-25 15:33:42 +02:00
roomListRequests ,
roomScheduleRequests ,
CacheController . roomScheduleList . size ,
Date ( CacheController . roomList . meta . updateTime * 1000 ) ,
2019-10-21 18:46:21 +02:00
Date ( CacheController . mensaMenu . meta . updateTime * 1000 ) ,
hsoCode ,
swfrCode
)
}
}
}