/** * ProjectLaogai * * Copyright 2019-2020 * * 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.seil0.projectlaogai.controller import android.content.Context import android.util.Log import org.jetbrains.anko.doAsync import org.json.JSONObject import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.coursesCacheTime import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.mensaCacheTime import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.timetableCacheTime import java.io.BufferedWriter import java.io.File import java.io.FileWriter import java.net.URL import kotlin.Exception class TCoRAPIController { companion object { private const val className = "TCoRAPIController" private const val tcorBaseURL = "https://tcor.mosad.xyz" /** * get the json object from tcor api and write it as file (cache) */ fun getCoursesList(context: Context) = doAsync { try { val url = URL("$tcorBaseURL/courseList") val file = File(context.filesDir, "courses.json") // read data from the API val coursesObject = JSONObject(url.readText()) //JSONObject(inReader.readLine()) // write the json object to a file val writer = BufferedWriter(FileWriter(file)) writer.write(coursesObject.toString()) writer.close() // update cache time coursesCacheTime = System.currentTimeMillis() / 1000 PreferencesController.save(context) } catch (ex: Exception) { Log.e(className, "failed to get /courseList", ex) } } /** * get the json object from tcor api and write it as file (cache) */ fun getMensa(context: Context) = doAsync { try { val url = URL("$tcorBaseURL/mensamenu") val file = File(context.filesDir, "mensa.json") // read data from the API val mensaObject = JSONObject(url.readText()) //JSONObject(inReader.readLine()) // write the json object to a file val writer = BufferedWriter(FileWriter(file)) writer.write(mensaObject.toString()) writer.close() // update cache time mensaCacheTime = System.currentTimeMillis() / 1000 PreferencesController.save(context) } catch (ex: Exception) { Log.e(className, "failed to get /mensamenu", ex) } } /** * get the json object from tcor api and write it as file (cache) */ fun getTimetable(courseName: String, week: Int, context: Context) = doAsync { try { val url = URL("$tcorBaseURL/timetable?courseName=$courseName&week=$week") val file = File(context.filesDir, "timetable-$courseName-$week.json") // read data from the API val mensaObject = JSONObject(url.readText()) //JSONObject(inReader.readLine()) // write the json object to a file val writer = BufferedWriter(FileWriter(file)) writer.write(mensaObject.toString()) writer.close() // update cache time timetableCacheTime = System.currentTimeMillis() / 1000 PreferencesController.save(context) } catch (ex: Exception) { Log.e(className, "failed to get /timetable", ex) } } } }