mirror of
https://github.com/wulkanowy/wulkanowy.git
synced 2025-01-31 17:52:45 +01:00
[API] Add error messages to exceptions (#71)
This commit is contained in:
parent
63b4ed42ca
commit
3dabb11473
@ -108,7 +108,11 @@ public class Client {
|
||||
|
||||
this.cookies.addItems(response.cookies());
|
||||
|
||||
return checkForErrors(response.parse());
|
||||
Document doc = checkForErrors(response.parse());
|
||||
|
||||
lastSuccessRequest = new Date();
|
||||
|
||||
return doc;
|
||||
}
|
||||
|
||||
public Document postPageByUrl(String url, String[][] params) throws IOException, VulcanException {
|
||||
@ -165,16 +169,16 @@ public class Client {
|
||||
}
|
||||
|
||||
Document checkForErrors(Document doc) throws VulcanException {
|
||||
if ("Przerwa techniczna".equals(doc.select("title").text())) {
|
||||
throw new VulcanOfflineException();
|
||||
String title = doc.select("title").text();
|
||||
if ("Przerwa techniczna".equals(title)) {
|
||||
throw new VulcanOfflineException(title);
|
||||
}
|
||||
|
||||
if ("Zaloguj się".equals(doc.select(".loginButton").text())) {
|
||||
throw new NotLoggedInErrorException();
|
||||
String singIn = doc.select(".loginButton").text();
|
||||
if ("Zaloguj się".equals(singIn)) {
|
||||
throw new NotLoggedInErrorException(singIn);
|
||||
}
|
||||
|
||||
lastSuccessRequest = new Date();
|
||||
|
||||
return doc;
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,8 @@
|
||||
package io.github.wulkanowy.api;
|
||||
|
||||
public class NotLoggedInErrorException extends VulcanException {
|
||||
|
||||
public NotLoggedInErrorException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ public class StudentAndParent implements SnP {
|
||||
Element studentTileLink = startPage.select(".panel.linkownia.pracownik.klient > a").first();
|
||||
|
||||
if (null == studentTileLink) {
|
||||
throw new NotLoggedInErrorException();
|
||||
throw new NotLoggedInErrorException("You are probably not logged in. Force login");
|
||||
}
|
||||
|
||||
String snpPageUrl = studentTileLink.attr("href");
|
||||
@ -62,7 +62,7 @@ public class StudentAndParent implements SnP {
|
||||
String[] path = snpPageUrl.split(client.getHost())[1].split("/");
|
||||
|
||||
if (5 != path.length) {
|
||||
throw new NotLoggedInErrorException();
|
||||
throw new NotLoggedInErrorException("You are probably not logged in");
|
||||
}
|
||||
|
||||
return path[2];
|
||||
|
@ -32,7 +32,7 @@ public class Vulcan {
|
||||
|
||||
public Client getClient() throws NotLoggedInErrorException {
|
||||
if (null == client) {
|
||||
throw new NotLoggedInErrorException();
|
||||
throw new NotLoggedInErrorException("Use setCredentials() method first");
|
||||
}
|
||||
|
||||
return client;
|
||||
|
@ -1,4 +1,8 @@
|
||||
package io.github.wulkanowy.api;
|
||||
|
||||
public abstract class VulcanException extends Exception {
|
||||
|
||||
protected VulcanException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,8 @@
|
||||
package io.github.wulkanowy.api;
|
||||
|
||||
public class VulcanOfflineException extends VulcanException {
|
||||
|
||||
VulcanOfflineException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
@ -3,4 +3,8 @@ package io.github.wulkanowy.api.login;
|
||||
import io.github.wulkanowy.api.VulcanException;
|
||||
|
||||
public class AccountPermissionException extends VulcanException {
|
||||
|
||||
AccountPermissionException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
@ -3,4 +3,8 @@ package io.github.wulkanowy.api.login;
|
||||
import io.github.wulkanowy.api.VulcanException;
|
||||
|
||||
public class BadCredentialsException extends VulcanException {
|
||||
|
||||
BadCredentialsException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package io.github.wulkanowy.api.login;
|
||||
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
import org.jsoup.nodes.Element;
|
||||
import org.jsoup.parser.Parser;
|
||||
import org.jsoup.select.Elements;
|
||||
|
||||
@ -42,8 +43,9 @@ public class Login {
|
||||
{"Password", password}
|
||||
});
|
||||
|
||||
if (null != html.select(".ErrorMessage").first()) {
|
||||
throw new BadCredentialsException();
|
||||
Element errorMessage = html.select(".ErrorMessage").first();
|
||||
if (null != errorMessage) {
|
||||
throw new BadCredentialsException(errorMessage.text());
|
||||
}
|
||||
|
||||
return html.select("input[name=wresult]").attr("value");
|
||||
@ -59,11 +61,11 @@ public class Login {
|
||||
}).select("title").text();
|
||||
|
||||
if ("Logowanie".equals(title)) {
|
||||
throw new AccountPermissionException();
|
||||
throw new AccountPermissionException("No account access. Try another symbol");
|
||||
}
|
||||
|
||||
if (!"Uonet+".equals(title)) {
|
||||
throw new LoginErrorException();
|
||||
throw new LoginErrorException("Could not log in, unknown error");
|
||||
}
|
||||
|
||||
return this.symbol;
|
||||
|
@ -2,5 +2,9 @@ package io.github.wulkanowy.api.login;
|
||||
|
||||
import io.github.wulkanowy.api.NotLoggedInErrorException;
|
||||
|
||||
public class LoginErrorException extends NotLoggedInErrorException {
|
||||
class LoginErrorException extends NotLoggedInErrorException {
|
||||
|
||||
LoginErrorException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
@ -3,4 +3,8 @@ package io.github.wulkanowy.api.messages;
|
||||
import io.github.wulkanowy.api.VulcanException;
|
||||
|
||||
class BadRequestException extends VulcanException {
|
||||
|
||||
BadRequestException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
@ -59,10 +59,10 @@ public class Messages {
|
||||
messages = new Gson().fromJson(res, MessagesContainer.class).data;
|
||||
} catch (JsonParseException e) {
|
||||
if (res.contains(ERROR_TITLE)) {
|
||||
throw new BadRequestException();
|
||||
throw new BadRequestException(ERROR_TITLE);
|
||||
}
|
||||
|
||||
throw new NotLoggedInErrorException();
|
||||
throw new NotLoggedInErrorException("You are probably not logged in");
|
||||
}
|
||||
|
||||
return messages;
|
||||
@ -80,10 +80,10 @@ public class Messages {
|
||||
message = new Gson().fromJson(res, MessageContainer.class).data;
|
||||
} catch (JsonParseException e) {
|
||||
if (res.contains(ERROR_TITLE)) {
|
||||
throw new BadRequestException();
|
||||
throw new BadRequestException(ERROR_TITLE);
|
||||
}
|
||||
|
||||
throw new NotLoggedInErrorException();
|
||||
throw new NotLoggedInErrorException("You are probably not logged in. Force login");
|
||||
}
|
||||
|
||||
return message;
|
||||
|
@ -12,7 +12,6 @@ import javax.inject.Singleton;
|
||||
|
||||
import io.github.wulkanowy.R;
|
||||
import io.github.wulkanowy.api.NotLoggedInErrorException;
|
||||
import io.github.wulkanowy.api.VulcanOfflineException;
|
||||
import io.github.wulkanowy.data.db.dao.entities.AttendanceLesson;
|
||||
import io.github.wulkanowy.di.annotations.ApplicationContext;
|
||||
import io.github.wulkanowy.utils.AppConstant;
|
||||
@ -51,8 +50,6 @@ public class AppResources implements ResourcesContract {
|
||||
return resources.getString(R.string.generic_timeout_error);
|
||||
} else if (exception instanceof NotLoggedInErrorException || exception instanceof IOException) {
|
||||
return resources.getString(R.string.login_denied_text);
|
||||
} else if (exception instanceof VulcanOfflineException) {
|
||||
return resources.getString(R.string.error_host_offline);
|
||||
} else {
|
||||
return exception.getMessage();
|
||||
}
|
||||
|
@ -39,7 +39,6 @@
|
||||
<string name="fragment_no_grades">Brak ocen</string>
|
||||
|
||||
<string name="noInternet_text">Brak połączenia z internetem</string>
|
||||
<string name="error_host_offline">Przerwa techniczna. Spróbuj ponownie później</string>
|
||||
<string name="encrypt_failed_text">Szyfrowanie nie powiodło się. Automatyczne logowanie zostało wyłączone</string>
|
||||
<string name="version_text">Wersja %1$s</string>
|
||||
<string name="refresh_error_text">"Podczas odświeżania zawartości wystąpił błąd. "</string>
|
||||
|
@ -73,7 +73,6 @@
|
||||
<string name="info_average_grades">Average: %1$.2f</string>
|
||||
<string name="info_no_average">No average</string>
|
||||
<string name="info_free_week">No lesson in this week</string>
|
||||
<string name="error_host_offline">Technical break</string>
|
||||
|
||||
<string name="timetable_subitem_room">Room %s</string>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user