Refactoring

This commit is contained in:
Sven Kubiak 2021-06-21 13:06:47 +02:00
parent 7fbaabbcb5
commit d2e388b33e

View File

@ -6,7 +6,6 @@ import java.net.http.HttpClient;
import java.net.http.HttpRequest; import java.net.http.HttpRequest;
import java.net.http.HttpResponse; import java.net.http.HttpResponse;
import java.net.http.WebSocket; import java.net.http.WebSocket;
import java.net.http.WebSocket.Builder;
import java.time.Duration; import java.time.Duration;
import java.util.Objects; import java.util.Objects;
@ -26,18 +25,19 @@ public class OpenClient {
private static final Duration TIMEOUT = Duration.ofSeconds(5); private static final Duration TIMEOUT = Duration.ofSeconds(5);
private static final String APPLICATION_JSON = "application/json"; private static final String APPLICATION_JSON = "application/json";
private static final String CONTENT_TYPE = "Content-Type"; private static final String CONTENT_TYPE = "Content-Type";
private WebSocket webSocket;
/** /**
* Performs a Pushover login; required once for working with the Open Client API * Performs a Pushover login; required once for working with the Open Client API
* *
* @param email Your Pushover email address * @param email Your Pushover email address
* @param password Your Pushover password * @param password Your Pushover password
* @param twofa Your current Pushover two-factor code (if enabled) * @param twoFactor Your current Pushover two-factor code (if enabled)
* *
* @return A PushoverResponse * @return A PushoverResponse
* @throws JPushoverException if something went wrong with the HTTP request * @throws JPushoverException if something went wrong with the HTTP request
*/ */
public PushoverResponse login(String email, String password, String twofa) throws JPushoverException { public PushoverResponse login(String email, String password, String twoFactor) throws JPushoverException {
Objects.requireNonNull(email, "email can not be null"); Objects.requireNonNull(email, "email can not be null");
Objects.requireNonNull(password, "password can not be null"); Objects.requireNonNull(password, "password can not be null");
@ -50,12 +50,12 @@ public class OpenClient {
.append("=") .append("=")
.append(password); .append(password);
if (twofa != null) { if (twoFactor != null) {
params params
.append("&") .append("&")
.append("twofa") .append("twofa")
.append("=") .append("=")
.append(twofa); .append(twoFactor);
} }
HttpRequest request = HttpRequest.newBuilder() HttpRequest request = HttpRequest.newBuilder()
@ -185,13 +185,14 @@ public class OpenClient {
* *
* @return True if the connection was established successfully * @return True if the connection was established successfully
*/ */
public boolean listen(String secret, String deviceId, MessageListener messageListener) { public boolean open(String secret, String deviceId, MessageListener messageListener) {
Objects.requireNonNull(secret, "secret can not be null"); Objects.requireNonNull(secret, "secret can not be null");
Objects.requireNonNull(deviceId, "deviceId name can not be null"); Objects.requireNonNull(deviceId, "deviceId name can not be null");
Objects.requireNonNull(messageListener, "messageListener can not be null"); Objects.requireNonNull(messageListener, "messageListener can not be null");
Builder webSocketBuilder = client.newWebSocketBuilder(); webSocket = client.newWebSocketBuilder()
WebSocket webSocket = webSocketBuilder.buildAsync(URI.create(Url.WEBSOCKET.toString()), new WebSocketListener(messageListener)).join(); .buildAsync(URI.create(Url.WEBSOCKET.toString()), new WebSocketListener(messageListener))
.join();
StringBuilder params = new StringBuilder() StringBuilder params = new StringBuilder()
.append("login") .append("login")
@ -207,7 +208,7 @@ public class OpenClient {
} }
/** /**
* Registers a new device * Registers a new device at Pushover
* *
* @param secret Your Pushover secret retrieved after login * @param secret Your Pushover secret retrieved after login
* @param deviceName The name of the device to register * @param deviceName The name of the device to register
@ -247,4 +248,19 @@ public class OpenClient {
return pushoverResponse; return pushoverResponse;
} }
/**
* Closes the existing WebSocket to the Pushover API
*
* @return true if close was successful, false otherwise
*/
public boolean close() {
boolean closed = false;
if (webSocket != null) {
webSocket.sendClose(WebSocket.NORMAL_CLOSURE, "ok");
closed = webSocket.isInputClosed() && webSocket.isOutputClosed();
}
return closed;
}
} }