Skip to content

A Kotlin/Java API to access SPŠE Ječná web's data.

License

Notifications You must be signed in to change notification settings

Tomasan7/JecnaAPI

Repository files navigation

JecnaAPI

JecnaAPI je Kotlin knihovna, díky které lze přistupovat k datům webu spsejecna.cz.

Funkce

  • čtení:

    • Novinky
    • Známky
    • Rozvrh
    • Příchody a odchody
    • Učitelský sbor
    • Obědy
  • obědnávání obědů

  • dávání obědů do/z burzy

Instalace

<version> referuje na .

Gradle

build.gradle (Groovy)
repositories {
    maven { url 'https://jitpack.io' }
}
dependencies {
    implementation 'com.github.Tomasan7.JecnaAPI:jecnaapi:<version>'
    /* Pokud chcete používat z Javy, přidejte i následující. */
    implementation 'com.github.Tomasan7.JecnaAPI:jecnaapi-java:<version>'
}
build.gradle.kts (Kotlin)
repositories {
    maven("https://jitpack.io")
}
dependencies {
    implementation("com.github.Tomasan7.JecnaAPI:jecnaapi:<version>")
    /* Pokud chcete používat z Javy, přidejte i následující. */
    implementation("com.github.Tomasan7.JecnaAPI:jecnaapi-java:<version>")
}

Maven

pom.xml
<repositories>
    ...
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>
<dependencies>
    ...
    <dependency>
        <groupId>com.github.Tomasan7.JecnaAPI</groupId>
        <artifactId>jecnaapi</artifactId>
        <version>VERSION</version>
    </dependency>
    <!-- Pokud chcete používat z Javy, přidejte i následující. -->
    <dependency>
      <groupId>com.github.Tomasan7.JecnaAPI</groupId>
      <artifactId>jecnaapi-java</artifactId>
      <version>VERSION</version>
    </dependency>
</dependencies>

Použití

Knihovna je primárně naprogramovaná v Kotlinu, ale je možné ji používat i z Javy. Chcete-li jí používat z Javy, musíte přidat dependency na jecnaapi-java (viz Instalace). Java místo Kotlin coroutines používá CompletableFuture API.

Vytvoření JecnaClient objektu

Kotlin
val jecnaClient = JecnaClient()

Java

JecnaClientJavaWrapper jecnaClient = new JecnaClientJavaWrapper();

Přihlášení

Přihlášení je nezbytné k čtení dat studenta.

Kotlin
/* runBlocking, nebo jiný coroutine scope. */
runBlocking {
    jecnaClient.login("username", "password")
}
Java
jecnaClient.login("username", "password");

Čtení dat

Kotlin
/* runBlocking, nebo jiný coroutine scope. */
runBlocking {
  val newsPage = jecnaClient.getNewsPage()
  val gradesPage = jecnaClient.getGradesPage()
  val timetablePage = jecnaClient.getTimetablePage()
  val attendancePage = jecnaClient.getAttendancePage()
  val teachersPage = jecnaClient.getTeachersPage()
}
Java
NewsPage newsPage = jecnaClient.getNewsPage().join();
GradesPage gradesPage = jecnaClient.getGradesPage().join();
TimetablePage timetablePage = jecnaClient.getTimetablePage().join();
AttendancePage attendancePage = jecnaClient.getAttendancePage().join();
TeachersPage teachersPage = jecnaClient.getTeachersPage().join();

Některé metody berou období (např. rok) jako parametr.

Kotlin
/* runBlocking, nebo jiný coroutine scope. */
runBlocking {
/* Získání známek z roku 2021/2022 z druhého pololetí.  */
  val gradesPage = jecnaClient.getGradesPage(SchoolYear(2021), SchoolYearHalf.SECOND)
}
Java
/* Získání známek z roku 2021/2022 z druhého pololetí.  */
GradesPage gradesPage = jecnaClient.getGradesPage(new SchoolYear(2021), SchoolYearHalf.SECOND).join();

Více příkladů najdete ve složkách kotlin-examples a java-examples.