diff --git a/src/main/java/ley/untis/UntisClient.java b/src/main/java/ley/untis/UntisClient.java new file mode 100644 index 0000000..4fc073c --- /dev/null +++ b/src/main/java/ley/untis/UntisClient.java @@ -0,0 +1,45 @@ +package ley.untis; + +import com.googlecode.jsonrpc4j.JsonRpcHttpClient; +import ley.untis.data.AuthParams; +import ley.untis.data.AuthResponse; +import ley.untis.exception.APIRequestException; + +import java.net.URL; +import java.util.HashMap; +import java.util.Map; + +public class UntisClient { + + JsonRpcHttpClient client; + public AuthResponse auth; + Map header; + + public UntisClient(String username, String password, String url, String school, String appname) throws APIRequestException{ + try { + client = new JsonRpcHttpClient(new URL(url + "?school=" + school)); + + auth = client.invoke("authenticate", new AuthParams(username, password, appname), AuthResponse.class); + header = new HashMap<>(); + header.put("cookie", "JSESSIONID=" + auth.sessionId); + client.setHeaders(header); + } catch (Throwable e) { + throw new APIRequestException(e); + } + + } + + public UntisClient(String username, String password, String url, String school) throws APIRequestException{ + this(username, password, url, school, "JavaUntis"); + } + + public void logout() throws APIRequestException { + try { + client.invoke("logout", new Object[0], Object.class); + } catch (Throwable e) { + throw new APIRequestException(e); + } + } + + +} diff --git a/src/main/java/ley/untis/data/AuthParams.java b/src/main/java/ley/untis/data/AuthParams.java new file mode 100644 index 0000000..2401082 --- /dev/null +++ b/src/main/java/ley/untis/data/AuthParams.java @@ -0,0 +1,15 @@ +package ley.untis.data; + +public class AuthParams { + + public String user; + public String password; + public String client; + + public AuthParams(String user, String password, String client) { + this.user = user; + this.password = password; + this.client = client; + } + +} diff --git a/src/main/java/ley/untis/data/AuthResponse.java b/src/main/java/ley/untis/data/AuthResponse.java new file mode 100644 index 0000000..50f474a --- /dev/null +++ b/src/main/java/ley/untis/data/AuthResponse.java @@ -0,0 +1,10 @@ +package ley.untis.data; + +public class AuthResponse { + + public String sessionId; + public int personType; + public int personId; + public int klasseId; + +} diff --git a/src/main/java/ley/untis/exception/APIRequestException.java b/src/main/java/ley/untis/exception/APIRequestException.java new file mode 100644 index 0000000..8f98b92 --- /dev/null +++ b/src/main/java/ley/untis/exception/APIRequestException.java @@ -0,0 +1,20 @@ +package ley.untis.exception; + +public class APIRequestException extends Exception { + + Throwable source; + + public APIRequestException(Throwable error) { + source = error; + } + + @Override + public String getMessage() { + return source.getMessage(); + } + + @Override + public String getLocalizedMessage() { + return source.getLocalizedMessage(); + } +}