diff --git a/README.md b/README.md index 38c0b7f..49058ae 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- +

Java eAsistent API

@@ -8,7 +8,7 @@
-[![JitPack][jitpack-shield]][jitpack-url] +[![OTTF][ottf-shield]][ottf-url] [![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] @@ -17,44 +17,55 @@
-## Dokumentacija +## Documentation Vse metode so dokumentirane in opisane v odseku [Wiki][wiki-url]. -## Namestitev +## Installation +Zamenjajte VERSION z zadnjo različico iz [releases][releases-url]. + ### Maven -1. Dodajte repozitorij v pom.xml datoteko +1. [Avtenticiraje se z GitHub Packages](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry#authenticating-to-github-packages) + +2. Dodajte repozitorij ```xml - - - jitpack.io - https://jitpack.io - - + + github + https://maven.pkg.github.com/chocoearly44/jea + + true + + ``` -2. Dodajte knjižnjico +3. Dodajte knjižnjico ```xml - com.github.chocoearly44 - JEA - Tag + tk.thesuperlab + jea + VERSION ``` ### Gradle -1. Dodajte repozitorij v gradle datoteko +1. [Avtenticiraje se z GitHub Packages](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-apache-maven-registry#authenticating-to-github-packages) + +2. Dodajte repozitorij ```groovy -allprojects { - repositories { - maven { url 'https://jitpack.io' } +repositories { + maven { + url = uri("https://maven.pkg.github.com/chocoearly44/jea") + credentials { + username = System.getenv("USERNAME") + password = System.getenv("TOKEN") } + } } ``` -2. Dodajte knjižnjico +3. Dodajte knjižnjico ```groovy dependencies { - implementation 'com.github.chocoearly44:JEA:Tag' + implementation 'tk.thesuperlab:jea:VERSION' } ``` @@ -62,24 +73,24 @@ dependencies { Knjižnjica bazira na projektu eAsistent wrapper za Python, ki ga je naredil [LevecGG](https://github.com/LevecGG). ## Poročanje o napakah -Če med uporabo knjižnice naletite na kakršne koli napake, jih prijavite v odseku [Issues][issues-url]. +Če med uporabo JEA naletite na kakršne koli napake, jih prijavite v odseku [Issues][issues-url]. ## Podpora -Dodatno podporo lahko prejmete v odseku [Discussions][discussions-url] tukaj na GitHubu. +Dodatno podporo lahko prejmete v odseku [Discussions][discussions-url]. +[ottf-shield]: https://img.shields.io/badge/OTTF-v1.0-blueviolet?style=for-the-badge [contributors-shield]: https://img.shields.io/github/contributors/chocoearly44/JEA.svg?style=for-the-badge [forks-shield]: https://img.shields.io/github/forks/chocoearly44/JEA.svg?style=for-the-badge [stars-shield]: https://img.shields.io/github/stars/chocoearly44/JEA.svg?style=for-the-badge [issues-shield]: https://img.shields.io/github/issues/chocoearly44/JEA.svg?style=for-the-badge [license-shield]: https://img.shields.io/github/license/chocoearly44/JEA.svg?style=for-the-badge -[jitpack-shield]: https://img.shields.io/jitpack/v/github/chocoearly44/JEA?style=for-the-badge +[ottf-url]: https://github.com/OpenTimetable/OpenTimetable-v1 [contributors-url]: https://github.com/chocoearly44/JEA/graphs/contributors [forks-url]: https://github.com/chocoearly44/JEA/network/members [stars-url]: https://github.com/chocoearly44/JEA/stargazers [issues-url]: https://github.com/chocoearly44/JEA/issues [license-url]: https://github.com/chocoearly44/JEA/blob/master/LICENSE -[jitpack-url]: https://jitpack.io/#chocoearly44/JEA [wiki-url]: https://github.com/chocoearly44/JEA/wiki [releases-url]: https://github.com/chocoearly44/JEA/releases -[discussions-url]: https://github.com/chocoearly44/JEA/discussions +[discussions-url]: https://github.com/chocoearly44/JEA/discussions \ No newline at end of file diff --git a/assets/icon.png b/assets/icon.png deleted file mode 100644 index a4f3ce6..0000000 Binary files a/assets/icon.png and /dev/null differ diff --git a/assets/icon.svg b/assets/icon.svg new file mode 100644 index 0000000..5ab6331 --- /dev/null +++ b/assets/icon.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jitpack.yml b/jitpack.yml deleted file mode 100644 index 4c8fca1..0000000 --- a/jitpack.yml +++ /dev/null @@ -1,2 +0,0 @@ -jdk: - - openjdk8 diff --git a/pom.xml b/pom.xml index 6234ed9..b1be571 100644 --- a/pom.xml +++ b/pom.xml @@ -1,48 +1,77 @@ - 4.0.0 tk.thesuperlab jea - 2.1 + 2.2 + JEA 8 8 + + + github + GitHub chocoearly44 Apache Maven Packages + https://maven.pkg.github.com/chocoearly44/jea + + + - jitpack.io - https://jitpack.io + github + https://maven.pkg.github.com/opentimetable/ottf4j + + true + + - com.github.OpenTimeTable - JavaOTTF + org.opentimetable + ottf4j 1.0 + + com.squareup.okhttp3 + okhttp + 4.10.0 + + + com.fasterxml.jackson.core jackson-databind - 2.13.1 + 2.13.3 - com.squareup.okhttp3 - okhttp - 4.9.3 + org.projectlombok + lombok + 1.18.24 + + + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test - org.jsoup - jsoup - 1.14.3 + io.hosuaby + inject-resources-junit-jupiter + 0.3.2 + test \ No newline at end of file diff --git a/src/main/java/tk/thesuperlab/jea/JEA.java b/src/main/java/tk/thesuperlab/jea/JEA.java index 02a1d5f..8b47310 100644 --- a/src/main/java/tk/thesuperlab/jea/JEA.java +++ b/src/main/java/tk/thesuperlab/jea/JEA.java @@ -3,22 +3,22 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import okhttp3.*; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Document; -import org.jsoup.select.Elements; -import org.opentimetable.javaottf.entities.Timetable; +import org.opentimetable.ottf4j.entities.Timetable; import tk.thesuperlab.jea.entities.Evaluation; import tk.thesuperlab.jea.entities.Subject; -import tk.thesuperlab.jea.entities.filters.WeekFilter; import tk.thesuperlab.jea.exceptions.IncorrectCredentialsException; -import tk.thesuperlab.jea.parseentities.AjaxPrijava; +import tk.thesuperlab.jea.filters.WeekFilter; +import tk.thesuperlab.jea.parseentities.login.Auth; +import tk.thesuperlab.jea.parseentities.login.Credentials; import tk.thesuperlab.jea.utils.RestUtils; +import java.io.IOException; import java.text.Format; import java.text.SimpleDateFormat; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.ZoneId; +import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; @@ -30,12 +30,6 @@ * @since 2.0 */ public class JEA { - private final String uporabniskoIme; - private final String geslo; - - private String bearerToken; - private String childId; - private static final ObjectMapper om; private static final Format formatter = new SimpleDateFormat("yyyy-MM-dd"); @@ -44,29 +38,29 @@ public class JEA { om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } + private final String uporabniskoIme; + private final String geslo; + private String bearerToken; + private String childId; + /** * @param uporabniskoIme Vaše uporabniško ime za prijavo v eAsistent * @param geslo Vaše geslo za prijavo v eAsistent. - * @throws IncorrectCredentialsException - * @author chocoearly44 + * @throws IncorrectCredentialsException Podatki za prijavo so napačni + * @throws IOException Napaka pri povezavi * @since 2.0 */ - public JEA(String uporabniskoIme, String geslo) throws IncorrectCredentialsException { + public JEA(String uporabniskoIme, String geslo) throws IncorrectCredentialsException, IOException { this.uporabniskoIme = uporabniskoIme; this.geslo = geslo; - try { - getAccessToken(); - } catch(IncorrectCredentialsException e) { - throw new IncorrectCredentialsException(); - } + getAccessToken(); } /** * Metoda vam vrne seznam prihodnjih ocenjevanj * * @return Seznam ocenjevanj - * @author chocoearly44 * @since 2.0 */ public List getFutureEvaluations() { @@ -77,7 +71,6 @@ public List getFutureEvaluations() { * Metoda vam vrne seznam preteklih ocenjevanj * * @return Seznam ocenjevanj - * @author chocoearly44 * @since 2.0 */ public List getPastEvaluations() { @@ -90,19 +83,29 @@ public List getPastEvaluations() { * @param ponedeljek Datum ponedeljka v tednu * @param nedelja Datum nedelje v tednu * @return OTTF objekt urnika - * @author chocoearly44 * @since 2.0 */ public Timetable getTimetable(Date ponedeljek, Date nedelja) { return RestUtils.getTimetable(bearerToken, childId, formatter.format(ponedeljek), formatter.format(nedelja)); } + /** + * Metoda vam vrne OTTF objekt tedenskega urnika + * + * @param ponedeljek Niz ponedeljka v tednu (yyyy-MM-dd) + * @param nedelja Niz nedelje v tednu (yyyy-MM-dd) + * @return OTTF objekt urnika + * @since 2.0 + */ + public Timetable getTimetable(String ponedeljek, String nedelja) { + return RestUtils.getTimetable(bearerToken, childId, ponedeljek, nedelja); + } + /** * Metoda vam vrne OTTF objekt tedenskega urnika glede na tedenski filter * * @param tedenskiFilter Tedenski filter * @return OTTF objekt urnika - * @author chocoearly44 * @since 2.1 */ public Timetable getTimetable(WeekFilter tedenskiFilter) { @@ -148,7 +151,6 @@ public Timetable getTimetable(WeekFilter tedenskiFilter) { * Metoda vam vrne seznam vseh predmetov * * @return seznam vseh predmetov - * @author chocoearly44 * @since 2.1 */ public List getAllGrades() { @@ -161,43 +163,33 @@ private Date getDate(LocalDate localDate) { ); } - private void getAccessToken() throws IncorrectCredentialsException { + private void getAccessToken() throws IncorrectCredentialsException, IOException { OkHttpClient client = new OkHttpClient(); - RequestBody body = new FormBody.Builder() - .add("uporabnik", uporabniskoIme) - .add("geslo", geslo) - .build(); + List types = new ArrayList<>(); + types.add("child"); + + RequestBody body = RequestBody.create( + om.writeValueAsString(new Credentials(uporabniskoIme, geslo, types)), + MediaType.parse("application/json") + ); Request request = new Request.Builder() - .url("https://www.easistent.com/p/ajax_prijava") + .url("https://www.easistent.com/m/login") .post(body) + .addHeader("x-app-name", "family") + .addHeader("x-client-version", "13") + .addHeader("x-client-platform", "web") .build(); - try(Response response = client.newCall(request).execute()) { - AjaxPrijava ajaxPrijava = om.readValue(response.body().string(), AjaxPrijava.class); - - if(ajaxPrijava.getStatus().equals("ok")) { - Request getWebsite = new Request.Builder().url("https://www.easistent.com").addHeader("Cookie", response.headers().get("Set-Cookie")).build(); - - try(Response easistentWebsite = client.newCall(getWebsite).execute()) { - String eaWebsite = easistentWebsite.body().string(); - Document website = Jsoup.parse(eaWebsite, "utf-8"); - - Elements metaElements = website.select("meta"); - for(int i = 0; i < metaElements.size(); i++) { - if(metaElements.get(i).attr("name").equals("access-token")) { - bearerToken = metaElements.get(i).attr("content"); - } else if(metaElements.get(i).attr("name").equals("x-child-id")) { - childId = metaElements.get(i).attr("content"); - } - } - } - } else { - throw new IncorrectCredentialsException(); - } - } catch(Exception e) { - e.printStackTrace(); + Response response = client.newCall(request).execute(); + + if(response.code() == 401) { + throw new IncorrectCredentialsException(); } + + Auth auth = om.readValue(response.body().string(), Auth.class); + bearerToken = auth.getAccessToken().getBearerToken(); + childId = String.valueOf(auth.getUser().getId()); } } diff --git a/src/main/java/tk/thesuperlab/jea/entities/Evaluation.java b/src/main/java/tk/thesuperlab/jea/entities/Evaluation.java index 44201c1..33faaa9 100644 --- a/src/main/java/tk/thesuperlab/jea/entities/Evaluation.java +++ b/src/main/java/tk/thesuperlab/jea/entities/Evaluation.java @@ -1,10 +1,14 @@ package tk.thesuperlab.jea.entities; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class Evaluation { @JsonProperty("id") - private int id; + private Long id; @JsonProperty("course") private String course; @JsonProperty("subject") @@ -20,60 +24,4 @@ public class Evaluation { public Evaluation() { } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getCourse() { - return course; - } - - public void setCourse(String course) { - this.course = course; - } - - public String getSubject() { - return subject; - } - - public void setSubject(String subject) { - this.subject = subject; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getDate() { - return date; - } - - public void setDate(String date) { - this.date = date; - } - - public String getPeriod() { - return period; - } - - public void setPeriod(String period) { - this.period = period; - } - - public String getGrade() { - return grade; - } - - public void setGrade(String grade) { - this.grade = grade; - } } diff --git a/src/main/java/tk/thesuperlab/jea/entities/FinalGrade.java b/src/main/java/tk/thesuperlab/jea/entities/FinalGrade.java new file mode 100644 index 0000000..dbcba62 --- /dev/null +++ b/src/main/java/tk/thesuperlab/jea/entities/FinalGrade.java @@ -0,0 +1,15 @@ +package tk.thesuperlab.jea.entities; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class FinalGrade { + @JsonProperty("value") + private String value; + + public FinalGrade() { + } +} diff --git a/src/main/java/tk/thesuperlab/jea/entities/Grade.java b/src/main/java/tk/thesuperlab/jea/entities/Grade.java index 282ee6c..8c318e4 100644 --- a/src/main/java/tk/thesuperlab/jea/entities/Grade.java +++ b/src/main/java/tk/thesuperlab/jea/entities/Grade.java @@ -1,10 +1,14 @@ package tk.thesuperlab.jea.entities; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class Grade { @JsonProperty("id") - private int id; + private Long id; @JsonProperty("type_name") private String typeName; @JsonProperty("comment") @@ -14,36 +18,4 @@ public class Grade { public Grade() { } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getTypeName() { - return typeName; - } - - public void setTypeName(String typeName) { - this.typeName = typeName; - } - - public String getComment() { - return comment; - } - - public void setComment(String comment) { - this.comment = comment; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } } diff --git a/src/main/java/tk/thesuperlab/jea/entities/GradeRank.java b/src/main/java/tk/thesuperlab/jea/entities/GradeRank.java index df6f16e..dd03f0b 100644 --- a/src/main/java/tk/thesuperlab/jea/entities/GradeRank.java +++ b/src/main/java/tk/thesuperlab/jea/entities/GradeRank.java @@ -1,7 +1,12 @@ package tk.thesuperlab.jea.entities; +import com.fasterxml.jackson.annotation.JsonProperty; + public enum GradeRank { - poor, - average, - good + @JsonProperty("poor") + POOR, + @JsonProperty("average") + AVERAGE, + @JsonProperty("good") + GOOD } diff --git a/src/main/java/tk/thesuperlab/jea/entities/Semester.java b/src/main/java/tk/thesuperlab/jea/entities/Semester.java index 317304e..2c6098a 100644 --- a/src/main/java/tk/thesuperlab/jea/entities/Semester.java +++ b/src/main/java/tk/thesuperlab/jea/entities/Semester.java @@ -1,12 +1,16 @@ package tk.thesuperlab.jea.entities; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; import java.util.ArrayList; +@Getter +@Setter public class Semester { @JsonProperty("id") - private int id; + private Long id; @JsonProperty("final_grade") private String finalGrade; @JsonProperty("grades") @@ -14,28 +18,4 @@ public class Semester { public Semester() { } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getFinalGrade() { - return finalGrade; - } - - public void setFinalGrade(String finalGrade) { - this.finalGrade = finalGrade; - } - - public ArrayList getGrades() { - return grades; - } - - public void setGrades(ArrayList grades) { - this.grades = grades; - } } diff --git a/src/main/java/tk/thesuperlab/jea/entities/Subject.java b/src/main/java/tk/thesuperlab/jea/entities/Subject.java index eb18c8d..203896f 100644 --- a/src/main/java/tk/thesuperlab/jea/entities/Subject.java +++ b/src/main/java/tk/thesuperlab/jea/entities/Subject.java @@ -1,9 +1,13 @@ package tk.thesuperlab.jea.entities; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; import java.util.ArrayList; +@Getter +@Setter public class Subject { @JsonProperty("name") private String name; @@ -12,9 +16,9 @@ public class Subject { @JsonProperty("id") private String id; @JsonProperty("is_excused") - private boolean isExcused; + private Boolean isExcused; @JsonProperty("final_grade") - private String finalGrade; + private FinalGrade finalGrade; @JsonProperty("average_grade") private String averageGrade; @JsonProperty("grade_rank") @@ -24,68 +28,4 @@ public class Subject { public Subject() { } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getAbbreviation() { - return abbreviation; - } - - public void setAbbreviation(String abbreviation) { - this.abbreviation = abbreviation; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public boolean isExcused() { - return isExcused; - } - - public void setExcused(boolean excused) { - isExcused = excused; - } - - public String getFinalGrade() { - return finalGrade; - } - - public void setFinalGrade(String finalGrade) { - this.finalGrade = finalGrade; - } - - public String getAverageGrade() { - return averageGrade; - } - - public void setAverageGrade(String averageGrade) { - this.averageGrade = averageGrade; - } - - public GradeRank getGradeRank() { - return gradeRank; - } - - public void setGradeRank(GradeRank gradeRank) { - this.gradeRank = gradeRank; - } - - public ArrayList getSemesters() { - return semesters; - } - - public void setSemesters(ArrayList semesters) { - this.semesters = semesters; - } } diff --git a/src/main/java/tk/thesuperlab/jea/entities/filters/WeekFilter.java b/src/main/java/tk/thesuperlab/jea/filters/WeekFilter.java similarity index 73% rename from src/main/java/tk/thesuperlab/jea/entities/filters/WeekFilter.java rename to src/main/java/tk/thesuperlab/jea/filters/WeekFilter.java index a87b549..4abac7a 100644 --- a/src/main/java/tk/thesuperlab/jea/entities/filters/WeekFilter.java +++ b/src/main/java/tk/thesuperlab/jea/filters/WeekFilter.java @@ -1,4 +1,4 @@ -package tk.thesuperlab.jea.entities.filters; +package tk.thesuperlab.jea.filters; /** * Tedenski filter za urnik @@ -13,7 +13,7 @@ public enum WeekFilter { LAST_WEEK, /** - * Pridobi urnik za trenutni (tekoči) teden + * Pridobi urnik za tekoči teden */ CURRENT_WEEK, diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/AjaxPrijava.java b/src/main/java/tk/thesuperlab/jea/parseentities/AjaxPrijava.java deleted file mode 100644 index 6c4fb4d..0000000 --- a/src/main/java/tk/thesuperlab/jea/parseentities/AjaxPrijava.java +++ /dev/null @@ -1,19 +0,0 @@ -package tk.thesuperlab.jea.parseentities; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class AjaxPrijava { - @JsonProperty("status") - private String status; - - public AjaxPrijava() { - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } -} diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/EvaluationList.java b/src/main/java/tk/thesuperlab/jea/parseentities/EvaluationList.java index 54107d3..52525c0 100644 --- a/src/main/java/tk/thesuperlab/jea/parseentities/EvaluationList.java +++ b/src/main/java/tk/thesuperlab/jea/parseentities/EvaluationList.java @@ -1,22 +1,18 @@ package tk.thesuperlab.jea.parseentities; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; import tk.thesuperlab.jea.entities.Evaluation; import java.util.ArrayList; +@Getter +@Setter public class EvaluationList { @JsonProperty("items") ArrayList evaluations; public EvaluationList() { } - - public ArrayList getEvaluations() { - return evaluations; - } - - public void setEvaluations(ArrayList evaluations) { - this.evaluations = evaluations; - } } diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/SubjectList.java b/src/main/java/tk/thesuperlab/jea/parseentities/SubjectList.java index bbcd99e..80e5817 100644 --- a/src/main/java/tk/thesuperlab/jea/parseentities/SubjectList.java +++ b/src/main/java/tk/thesuperlab/jea/parseentities/SubjectList.java @@ -1,22 +1,18 @@ package tk.thesuperlab.jea.parseentities; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; import tk.thesuperlab.jea.entities.Subject; import java.util.ArrayList; +@Getter +@Setter public class SubjectList { @JsonProperty("items") private ArrayList subjects; public SubjectList() { } - - public ArrayList getSubjects() { - return subjects; - } - - public void setSubjects(ArrayList subjects) { - this.subjects = subjects; - } } diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/login/AccessToken.java b/src/main/java/tk/thesuperlab/jea/parseentities/login/AccessToken.java new file mode 100644 index 0000000..8a0e76a --- /dev/null +++ b/src/main/java/tk/thesuperlab/jea/parseentities/login/AccessToken.java @@ -0,0 +1,15 @@ +package tk.thesuperlab.jea.parseentities.login; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class AccessToken { + @JsonProperty("token") + private String bearerToken; + + public AccessToken() { + } +} diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/login/Auth.java b/src/main/java/tk/thesuperlab/jea/parseentities/login/Auth.java new file mode 100644 index 0000000..aa9016b --- /dev/null +++ b/src/main/java/tk/thesuperlab/jea/parseentities/login/Auth.java @@ -0,0 +1,17 @@ +package tk.thesuperlab.jea.parseentities.login; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Auth { + @JsonProperty("access_token") + private AccessToken accessToken; + @JsonProperty("user") + private User user; + + public Auth() { + } +} diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/login/Credentials.java b/src/main/java/tk/thesuperlab/jea/parseentities/login/Credentials.java new file mode 100644 index 0000000..1217334 --- /dev/null +++ b/src/main/java/tk/thesuperlab/jea/parseentities/login/Credentials.java @@ -0,0 +1,27 @@ +package tk.thesuperlab.jea.parseentities.login; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class Credentials { + @JsonProperty("username") + private String username; + @JsonProperty("password") + private String password; + @JsonProperty("supported_user_types") + private List supportedUserTypes; + + public Credentials(String username, String password, List supportedUserTypes) { + this.username = username; + this.password = password; + this.supportedUserTypes = supportedUserTypes; + } + + public Credentials() { + } +} diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/login/User.java b/src/main/java/tk/thesuperlab/jea/parseentities/login/User.java new file mode 100644 index 0000000..a104e5c --- /dev/null +++ b/src/main/java/tk/thesuperlab/jea/parseentities/login/User.java @@ -0,0 +1,15 @@ +package tk.thesuperlab.jea.parseentities.login; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class User { + @JsonProperty("id") + private Long id; + + public User() { + } +} diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaDay.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaDay.java index e596607..15813e4 100644 --- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaDay.java +++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaDay.java @@ -1,7 +1,11 @@ package tk.thesuperlab.jea.parseentities.timetable; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class EaDay { @JsonProperty("name") private String name; @@ -10,20 +14,4 @@ public class EaDay { public EaDay() { } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDate() { - return date; - } - - public void setDate(String date) { - this.date = date; - } } \ No newline at end of file diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaDayEvent.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaDayEvent.java index dbc7968..3c45da3 100644 --- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaDayEvent.java +++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaDayEvent.java @@ -1,41 +1,21 @@ package tk.thesuperlab.jea.parseentities.timetable; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; import java.util.List; +@Getter +@Setter public class EaDayEvent { @JsonProperty("date") private String date; @JsonProperty("name") private String name; @JsonProperty("teachers") - private List teachers; + private List teachers; public EaDayEvent() { } - - public String getDate() { - return date; - } - - public void setDate(String date) { - this.date = date; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public List getTeachers() { - return teachers; - } - - public void setTeachers(List teachers) { - this.teachers = teachers; - } } diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaEvent.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaEvent.java index bb91092..691bce8 100644 --- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaEvent.java +++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaEvent.java @@ -1,9 +1,13 @@ package tk.thesuperlab.jea.parseentities.timetable; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; import java.util.List; +@Getter +@Setter public class EaEvent { @JsonProperty("date") private String date; @@ -11,41 +15,11 @@ public class EaEvent { private String name; @JsonProperty("time") private EaTime time; + @JsonProperty("location") + private EaNameElement location; @JsonProperty("teachers") - private List teachers; + private List teachers; public EaEvent() { } - - public String getDate() { - return date; - } - - public void setDate(String date) { - this.date = date; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public EaTime getTime() { - return time; - } - - public void setTime(EaTime time) { - this.time = time; - } - - public List getTeachers() { - return teachers; - } - - public void setTeachers(List teachers) { - this.teachers = teachers; - } } diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTeacher.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaNameElement.java similarity index 50% rename from src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTeacher.java rename to src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaNameElement.java index f6990ea..27ab148 100644 --- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTeacher.java +++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaNameElement.java @@ -1,19 +1,15 @@ package tk.thesuperlab.jea.parseentities.timetable; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; -public class EaTeacher { +@Getter +@Setter +public class EaNameElement { @JsonProperty("name") private String name; - public EaTeacher() { - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; + public EaNameElement() { } } diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaPeriod.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaPeriod.java index c3ffd72..d61db44 100644 --- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaPeriod.java +++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaPeriod.java @@ -1,10 +1,14 @@ package tk.thesuperlab.jea.parseentities.timetable; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class EaPeriod { @JsonProperty("id") - private int id; + private Long id; @JsonProperty("name") private String name; @JsonProperty("time") @@ -14,36 +18,4 @@ public class EaPeriod { public EaPeriod() { } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public EaTime getTime() { - return time; - } - - public void setTime(EaTime time) { - this.time = time; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } } diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEvent.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEvent.java index fd7cc29..688d7a6 100644 --- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEvent.java +++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEvent.java @@ -1,61 +1,25 @@ package tk.thesuperlab.jea.parseentities.timetable; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; import java.util.List; +@Getter +@Setter public class EaSchoolEvent { @JsonProperty("time") private EaSchoolEventTime time; @JsonProperty("subject") - private EaSchoolEventSubject subject; + private EaNameElement subject; @JsonProperty("hour_special_type") private String specialType; @JsonProperty("classroom") - private EaSchoolEventClassroom classroom; + private EaNameElement classroom; @JsonProperty("teachers") - private List teachers; + private List teachers; public EaSchoolEvent() { } - - public EaSchoolEventTime getTime() { - return time; - } - - public void setTime(EaSchoolEventTime time) { - this.time = time; - } - - public EaSchoolEventSubject getSubject() { - return subject; - } - - public void setSubject(EaSchoolEventSubject subject) { - this.subject = subject; - } - - public String getSpecialType() { - return specialType; - } - - public void setSpecialType(String specialType) { - this.specialType = specialType; - } - - public EaSchoolEventClassroom getClassroom() { - return classroom; - } - - public void setClassroom(EaSchoolEventClassroom classroom) { - this.classroom = classroom; - } - - public List getTeachers() { - return teachers; - } - - public void setTeachers(List teachers) { - this.teachers = teachers; - } } diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventClassroom.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventClassroom.java deleted file mode 100644 index 12633b0..0000000 --- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventClassroom.java +++ /dev/null @@ -1,19 +0,0 @@ -package tk.thesuperlab.jea.parseentities.timetable; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class EaSchoolEventClassroom { - @JsonProperty("name") - private String name; - - public EaSchoolEventClassroom() { - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } -} diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventSubject.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventSubject.java deleted file mode 100644 index edd5fed..0000000 --- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventSubject.java +++ /dev/null @@ -1,19 +0,0 @@ -package tk.thesuperlab.jea.parseentities.timetable; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class EaSchoolEventSubject { - @JsonProperty("name") - private String name; - - public EaSchoolEventSubject() { - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } -} diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventTime.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventTime.java index c51b038..542ed05 100644 --- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventTime.java +++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaSchoolEventTime.java @@ -1,29 +1,17 @@ package tk.thesuperlab.jea.parseentities.timetable; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class EaSchoolEventTime { @JsonProperty("from_id") - private int periodId; + private Long periodId; @JsonProperty("date") private String date; public EaSchoolEventTime() { } - - public int getPeriodId() { - return periodId; - } - - public void setPeriodId(int periodId) { - this.periodId = periodId; - } - - public String getDate() { - return date; - } - - public void setDate(String date) { - this.date = date; - } } diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTime.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTime.java index abdb6b7..adcc764 100644 --- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTime.java +++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTime.java @@ -1,7 +1,11 @@ package tk.thesuperlab.jea.parseentities.timetable; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; +@Getter +@Setter public class EaTime { @JsonProperty("from") private String from; @@ -10,20 +14,4 @@ public class EaTime { public EaTime() { } - - public String getFrom() { - return from; - } - - public void setFrom(String from) { - this.from = from; - } - - public String getTo() { - return to; - } - - public void setTo(String to) { - this.to = to; - } } diff --git a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTimetable.java b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTimetable.java index c48d777..43e97c1 100644 --- a/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTimetable.java +++ b/src/main/java/tk/thesuperlab/jea/parseentities/timetable/EaTimetable.java @@ -1,9 +1,13 @@ package tk.thesuperlab.jea.parseentities.timetable; import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; import java.util.List; +@Getter +@Setter public class EaTimetable { @JsonProperty("time_table") private List periods; @@ -18,44 +22,4 @@ public class EaTimetable { public EaTimetable() { } - - public List getPeriods() { - return periods; - } - - public void setPeriods(List periods) { - this.periods = periods; - } - - public List getDays() { - return days; - } - - public void setDays(List days) { - this.days = days; - } - - public List getSchoolEvents() { - return schoolEvents; - } - - public void setSchoolEvents(List schoolEvents) { - this.schoolEvents = schoolEvents; - } - - public List getEvents() { - return events; - } - - public void setEvents(List events) { - this.events = events; - } - - public List getDayEvents() { - return dayEvents; - } - - public void setDayEvents(List dayEvents) { - this.dayEvents = dayEvents; - } } diff --git a/src/main/java/tk/thesuperlab/jea/utils/OttfUtils.java b/src/main/java/tk/thesuperlab/jea/utils/OttfUtils.java index 94da96a..1dca870 100644 --- a/src/main/java/tk/thesuperlab/jea/utils/OttfUtils.java +++ b/src/main/java/tk/thesuperlab/jea/utils/OttfUtils.java @@ -3,14 +3,15 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; -import org.opentimetable.javaottf.entities.*; -import org.opentimetable.javaottf.enums.WeekDay; -import tk.thesuperlab.jea.parseentities.timetable.*; +import org.opentimetable.ottf4j.entities.*; +import tk.thesuperlab.jea.parseentities.timetable.EaNameElement; +import tk.thesuperlab.jea.parseentities.timetable.EaTimetable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.TreeMap; +import java.util.stream.Collectors; public class OttfUtils { private static final ObjectMapper om; @@ -24,155 +25,126 @@ public static Timetable convertTimetable(String rawSchedule) throws JsonProcessi Timetable toReturn = new Timetable(); EaTimetable eaTimetable = om.readValue(rawSchedule, EaTimetable.class); + // Set metadata + toReturn.setMetadata( + new Metadata( + "1.0", + "CEST", + "Java eAsistent API", + System.currentTimeMillis() / 1000 + ) + ); + // Set cues Cues cues = new Cues(); - TreeMap periods = new TreeMap(); - HashMap periodIds = new HashMap(); - ArrayList recesses = new ArrayList(); - - for(EaPeriod eaPeriod : eaTimetable.getPeriods()) { - Span span = new Span(); - span.setFrom(eaPeriod.getTime().getFrom()); - span.setTo(eaPeriod.getTime().getTo()); - - if(eaPeriod.getType().equals("default")) { - periods.put(eaPeriod.getName(), span); - periodIds.put(eaPeriod.getId(), span); - } else if(eaPeriod.getType().equals("break")) { - recesses.add(span); - } - } - - cues.setPeriods(periods); - cues.setRecesses(recesses); - - // Set days - HashMap days = new HashMap(); - - for(EaDay eaDay : eaTimetable.getDays()) { - Day day = new Day(); - WeekDay weekDay = null; - - day.setDate(eaDay.getDate()); - day.setPreclasses(new TreeMap>()); - day.setClasses(new TreeMap>()); - day.setEvents(new ArrayList()); - day.setDayevents(new ArrayList()); - - switch(eaDay.getName()) { - case "Ponedeljek": - weekDay = WeekDay.MON; - break; - case "Torek": - weekDay = WeekDay.TUE; - break; - case "Sreda": - weekDay = WeekDay.WED; - break; - case "Četrtek": - weekDay = WeekDay.THU; - break; - case "Petek": - weekDay = WeekDay.FRI; - break; - } - - days.put(weekDay, day); - } - - // Set Classes - HashMap tempDays = new HashMap(); - - for(Day dayScan : days.values()) { - tempDays.put(dayScan.getDate(), dayScan); - } - - for(EaSchoolEvent periodEvent : eaTimetable.getSchoolEvents()) { - Day dayToModify = tempDays.get(periodEvent.getTime().getDate()); - - ClassEvent classToAdd = new ClassEvent(); - - if(periodEvent.getSpecialType() != null && !periodEvent.getSpecialType().isEmpty()) { - classToAdd.setSubstitution(periodEvent.getSpecialType().equals("substitution")); - classToAdd.setExamination(periodEvent.getSpecialType().equals("exam")); - classToAdd.setCanceled(periodEvent.getSpecialType().equals("cancelled")); - } - - classToAdd.setName(periodEvent.getSubject().getName()); - classToAdd.setAbbreviation(periodEvent.getSubject().getName()); - classToAdd.setLocation(periodEvent.getClassroom().getName()); - classToAdd.setHosts(new ArrayList()); - - for(EaTeacher eaTeacher : periodEvent.getTeachers()) { - classToAdd.getHosts().add(eaTeacher.getName()); - } - - Span classSpan = periodIds.get(periodEvent.getTime().getPeriodId()); - String spanName = ""; - - for(String name : periods.keySet()) { - if(periods.get(name) == classSpan) { - spanName = name; - break; - } - } - - dayToModify.getClasses().computeIfAbsent(spanName, k -> new ArrayList()); - - ArrayList classesToModify = (ArrayList) dayToModify.getClasses().get(spanName); - classesToModify.add(classToAdd); - - dayToModify.getClasses().put(spanName, classesToModify); - } - - // Set events - ArrayList events = new ArrayList(); - - for(EaEvent eaEvent : eaTimetable.getEvents()) { - Event eventToAdd = new Event(); - eventToAdd.setFrom(eaEvent.getTime().getFrom()); - eventToAdd.setTo(eaEvent.getTime().getTo()); - eventToAdd.setTitle(eaEvent.getName()); - - ArrayList eventTeachers = new ArrayList(); - for(EaTeacher teacher : eaEvent.getTeachers()) { - eventTeachers.add(teacher.getName()); - } - - eventToAdd.setHosts(eventTeachers); - - Day dayToModify = tempDays.get(eaEvent.getDate()); - if(dayToModify.getEvents() != null) { - dayToModify.setEvents(new ArrayList()); - } - - dayToModify.getEvents().add(eventToAdd); - } - - // Set day events - ArrayList dayEvents = new ArrayList(); - - for(EaDayEvent eaDayEvent : eaTimetable.getDayEvents()) { - DayEvent dayEventToAdd = new DayEvent(); - dayEventToAdd.setTitle(eaDayEvent.getName()); - - ArrayList eventTeachers = new ArrayList(); - for(EaTeacher teacher : eaDayEvent.getTeachers()) { - eventTeachers.add(teacher.getName()); - } - - dayEventToAdd.setHosts(eventTeachers); - - Day dayToModify = tempDays.get(eaDayEvent.getDate()); - if(dayToModify.getDayevents() != null) { - dayToModify.setDayevents(new ArrayList()); - } - dayToModify.getDayevents().add(dayEventToAdd); - } + // Set recesses + List recesses = eaTimetable.getPeriods().stream() + .filter(eaPeriod -> eaPeriod.getType().equals("break")) + .map(eaPeriod -> new Span( + eaPeriod.getTime().getFrom(), + eaPeriod.getTime().getTo() + )) + .collect(Collectors.toList()); + cues.setRecesses(recesses); - toReturn.setVersion("1.0"); + // Set periods + TreeMap orderedPeriods = new TreeMap<>(); + HashMap periodMap = new HashMap<>(); + + eaTimetable.getPeriods().stream() + .filter(eaPeriod -> eaPeriod.getType().equals("default")) + .forEachOrdered(eaPeriod -> { + periodMap.put(eaPeriod.getId(), eaPeriod.getName()); + orderedPeriods.put( + eaPeriod.getName(), + new Span( + eaPeriod.getTime().getFrom(), + eaPeriod.getTime().getTo() + ) + ); + }); + cues.setPeriods(orderedPeriods); toReturn.setCues(cues); + + // Set days + TreeMap days = new TreeMap<>(); + + // School hour + eaTimetable.getSchoolEvents() + .forEach(eaSchoolEvent -> { + Long eaPeriodId = eaSchoolEvent.getTime().getPeriodId(); + String periodSequence = periodMap.get(eaPeriodId); + + String date = eaSchoolEvent.getTime().getDate(); + String specialType = eaSchoolEvent.getSpecialType(); + + // Days + Day day = days.getOrDefault(date, new Day(new TreeMap<>(), new ArrayList<>(), new ArrayList<>())); + + // Classes + List currentPeriod = day.getClasses().getOrDefault(periodSequence, new ArrayList<>()); + + currentPeriod.add( + new ClassEvent( + specialType != null && specialType.equals("substitution"), + specialType != null && specialType.equals("exam"), + specialType != null && specialType.equals("cancelled"), + eaSchoolEvent.getSubject().getName(), + eaSchoolEvent.getSubject().getName(), + eaSchoolEvent.getClassroom().getName(), + eaSchoolEvent.getTeachers().stream() + .map(EaNameElement::getName) + .collect(Collectors.toList()) + ) + ); + day.getClasses().put(periodSequence, currentPeriod); + days.put(date, day); + }); + + // Events + eaTimetable.getEvents() + .forEach(eaEvent -> { + Day eventDay = days.get(eaEvent.getDate()); + + if(eventDay == null) { + eventDay = new Day(new TreeMap<>(), new ArrayList<>(), new ArrayList<>()); + days.put(eaEvent.getDate(), eventDay); + } + + eventDay.getEvents().add( + new Event( + eaEvent.getTime().getFrom(), + eaEvent.getTime().getTo(), + eaEvent.getName(), + eaEvent.getLocation().getName(), + eaEvent.getTeachers().stream() + .map(EaNameElement::getName) + .collect(Collectors.toList()) + ) + ); + }); + + // Day events + eaTimetable.getDayEvents() + .forEach(eaDayEvent -> { + Day eventDay = days.get(eaDayEvent.getDate()); + + if(eventDay == null) { + eventDay = new Day(new TreeMap<>(), new ArrayList<>(), new ArrayList<>()); + days.put(eaDayEvent.getDate(), eventDay); + } + + eventDay.getDayevents().add( + new DayEvent( + eaDayEvent.getName(), + "", + eaDayEvent.getTeachers().stream() + .map(EaNameElement::getName) + .collect(Collectors.toList()) + ) + ); + }); toReturn.setDays(days); return toReturn; diff --git a/src/main/java/tk/thesuperlab/jea/utils/RestUtils.java b/src/main/java/tk/thesuperlab/jea/utils/RestUtils.java index f212730..0d71f28 100644 --- a/src/main/java/tk/thesuperlab/jea/utils/RestUtils.java +++ b/src/main/java/tk/thesuperlab/jea/utils/RestUtils.java @@ -5,7 +5,7 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; -import org.opentimetable.javaottf.entities.Timetable; +import org.opentimetable.ottf4j.entities.Timetable; import tk.thesuperlab.jea.entities.Evaluation; import tk.thesuperlab.jea.entities.Subject; import tk.thesuperlab.jea.parseentities.EvaluationList; diff --git a/src/test/java/tk/thesuperlab/jea/JEATest.java b/src/test/java/tk/thesuperlab/jea/JEATest.java new file mode 100644 index 0000000..396f593 --- /dev/null +++ b/src/test/java/tk/thesuperlab/jea/JEATest.java @@ -0,0 +1,39 @@ +package tk.thesuperlab.jea; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import tk.thesuperlab.jea.exceptions.IncorrectCredentialsException; +import tk.thesuperlab.jea.filters.WeekFilter; + +import java.io.IOException; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +class JEATest { + static JEA jea; + + @BeforeAll + static void setup() throws IncorrectCredentialsException, IOException { + jea = new JEA(System.getenv("USERNAME"), System.getenv("PASSWORD")); + } + + @Test + void getFutureEvaluations() { + assertNotNull(jea.getFutureEvaluations()); + } + + @Test + void getPastEvaluations() { + assertNotNull(jea.getPastEvaluations()); + } + + @Test + void getTimetable() { + assertNotNull(jea.getTimetable(WeekFilter.CURRENT_WEEK)); + } + + @Test + void getAllGrades() { + assertNotNull(jea.getAllGrades()); + } +} \ No newline at end of file