2019-03-11 20:12:49 +01:00
/ * *
* TheCitadelofRicks
*
2020-01-15 13:42:40 +01:00
* Copyright 2019 - 2020 < seil0 @mosad . xyz >
2019-03-11 20:12:49 +01: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.hsoparser
import org.jsoup.Jsoup
import org.mosad.thecitadelofricks.Course
2019-05-25 19:37:04 +02:00
import org.slf4j.LoggerFactory
import java.net.SocketTimeoutException
2019-03-11 20:12:49 +01:00
class CourseListParser {
2019-05-25 19:37:04 +02:00
var logger : org . slf4j . Logger = LoggerFactory . getLogger ( MensaParser :: class . java )
/ * *
2019-05-28 12:49:25 +02:00
* return a list of all courses at courseListURL
* @param courseListURL the url to the course list page
* @return a ArrayList < Course > with all courses or null if the request was not successful
2019-05-25 19:37:04 +02:00
* /
2019-05-28 12:49:25 +02:00
fun getCourseLinks ( courseListURL : String ) : ArrayList < Course > ? {
2019-03-12 22:06:04 +01:00
val courseLinkList = ArrayList < Course > ( )
2019-05-25 19:37:04 +02:00
try {
2019-05-28 12:49:25 +02:00
val courseHTML = Jsoup . connect ( courseListURL ) . get ( )
2019-03-11 20:12:49 +01:00
2019-05-25 19:37:04 +02:00
courseHTML . select ( " ul.index-group " ) . select ( " li.Class " ) . select ( " a[href] " ) . forEachIndexed { _ , element ->
courseLinkList . add (
Course (
element . text ( ) ,
element . attr ( " href " ) . replace ( " http " , " https " )
)
2019-03-11 20:12:49 +01:00
)
2019-05-25 19:37:04 +02:00
}
} catch ( ex : SocketTimeoutException ) {
logger . warn ( " timeout from hs-offenburg.de, updating on next attempt! " )
2019-05-28 12:49:25 +02:00
return null
2019-05-25 20:23:31 +02:00
} catch ( gex : Exception ) {
logger . error ( " general CourseListParser error " , gex )
2019-05-28 12:49:25 +02:00
return null
2019-03-11 20:12:49 +01:00
}
2019-05-25 19:37:04 +02:00
2019-03-12 22:06:04 +01:00
return courseLinkList
2019-03-11 20:12:49 +01:00
}
}