#1 added support for html flag

This commit is contained in:
Sven Kubiak 2015-12-08 22:03:44 +01:00
parent e6dc23e0ae
commit c2432fc017
5 changed files with 139 additions and 119 deletions

View File

@ -1,6 +1,5 @@
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/de.svenkubiak/jpushover/badge.svg)](https://maven-badges.herokuapp.com/maven-central/de.svenkubiak/jpushover) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/de.svenkubiak/jpushover/badge.svg)](https://maven-badges.herokuapp.com/maven-central/de.svenkubiak/jpushover)
[![Build Status](https://secure.travis-ci.org/svenkubiak/JPushover.png?branch=master)](http://travis-ci.org/svenkubiak/JPushover) [![Build Status](https://secure.travis-ci.org/svenkubiak/JPushover.png?branch=master)](http://travis-ci.org/svenkubiak/JPushover)
[![Dependency Status](https://www.versioneye.com/user/projects/54dcba12c1bbbd9bd700051a/badge.svg?style=flat)](https://www.versioneye.com/user/projects/54dcba12c1bbbd9bd700051a)
If this software is useful to you, you can support further development by using Flattr. Thank you! If this software is useful to you, you can support further development by using Flattr. Thank you!
@ -25,7 +24,7 @@ Usage
2) Use the JPushover object with the required informations were you want 2) Use the JPushover object with the required informations were you want
new JPushover() JPushover.build()
.token("MyToken") .token("MyToken")
.user("MyUser") .user("MyUser")
.message("MyMessage") .message("MyMessage")
@ -42,7 +41,7 @@ You can also validate a user and token using the following method
If you want more information and/or the response from the Pushover API, use the JPushoverResponse object. If you want more information and/or the response from the Pushover API, use the JPushoverResponse object.
JPushoverResponse jPushoverResponse = new JPushover() JPushoverResponse jPushoverResponse = JPushover()
.token("MyToken") .token("MyToken")
.user("MyUser") .user("MyUser")
.message("MyMessage") .message("MyMessage")

View File

@ -2,6 +2,7 @@ package de.svenkubiak.jpushover;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Objects;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -13,8 +14,6 @@ import org.apache.http.client.fluent.Request;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import com.google.common.base.Preconditions;
import de.svenkubiak.jpushover.enums.Constants; import de.svenkubiak.jpushover.enums.Constants;
import de.svenkubiak.jpushover.enums.Priority; import de.svenkubiak.jpushover.enums.Priority;
import de.svenkubiak.jpushover.enums.Sound; import de.svenkubiak.jpushover.enums.Sound;
@ -27,7 +26,6 @@ import de.svenkubiak.jpushover.enums.Sound;
public class JPushover { public class JPushover {
private static final Logger LOG = LogManager.getLogger(JPushover.class); private static final Logger LOG = LogManager.getLogger(JPushover.class);
private static final int HTTP_OK = 200; private static final int HTTP_OK = 200;
private String pushoverToken; private String pushoverToken;
private String pushoverUser; private String pushoverUser;
private String pushoverMessage; private String pushoverMessage;
@ -39,12 +37,17 @@ public class JPushover {
private String pushoverRetry; private String pushoverRetry;
private String pushoverExpire; private String pushoverExpire;
private String pushoverCallback; private String pushoverCallback;
private boolean pushoverHtml;
private Priority pushoverPriority; private Priority pushoverPriority;
private Sound pushoverSound; private Sound pushoverSound;
public JPushover() { public JPushover() {
this.pushoverSound = Sound.PUSHOVER; this.sound(Sound.PUSHOVER);
this.pushoverPriority = Priority.NORMAL; this.priority(Priority.NORMAL);
}
public static JPushover build() {
return new JPushover();
} }
/** /**
@ -145,6 +148,17 @@ public class JPushover {
return this; return this;
} }
/**
* Enables HTML in the pushover message
* (optional)
*
* @return JPushover instance
*/
public JPushover html() {
this.pushoverHtml = true;
return this;
}
/** /**
* A title for your supplementary URL, otherwise just the URL is shown * A title for your supplementary URL, otherwise just the URL is shown
* *
@ -207,95 +221,6 @@ public class JPushover {
return this; return this;
} }
/**
* Sends a validation request to pushover ensuring that the token and user
* is correct, that there is at least one active device on the account.
*
* Requires token parameter
* Requires user parameter
* Optional device parameter to check specific device
*
* @return true if token and user are valid and at least on device is on the account, false otherwise
*/
public boolean validate() {
Preconditions.checkNotNull(this.pushoverToken, "Token is required for validation");
Preconditions.checkNotNull(this.pushoverUser, "User is required for validation");
final List<NameValuePair> params = Form.form()
.add(Constants.TOKEN.get(), this.pushoverToken)
.add(Constants.USER.get(), this.pushoverUser)
.add(Constants.DEVICE.get(), this.pushoverDevice)
.build();
HttpResponse httpResponse = null;
boolean valid = false;
try {
httpResponse = Request.Post(Constants.VALIDATION_URL.get()).bodyForm(params, Consts.UTF_8).execute().returnResponse();
if (httpResponse != null && httpResponse.getStatusLine().getStatusCode() == HTTP_OK) {
final String response = IOUtils.toString(httpResponse.getEntity().getContent());
if (StringUtils.isNotBlank(response) && response.contains("\"status\":1")) {
valid = true;
}
}
} catch (final IOException e) {
LOG.error("Failed to send validation requeste to pushover", e);
}
return valid;
}
/**
* Sends a message to pushover
*
* @return JPushoverResponse instance
*/
public JPushoverResponse push() {
Preconditions.checkNotNull(this.pushoverToken, "Token is required for a message");
Preconditions.checkNotNull(this.pushoverUser, "User is required for a message");
Preconditions.checkNotNull(this.pushoverMessage, "Message is required for a message");
if (Priority.EMERGENCY.equals(this.pushoverPriority)) {
Preconditions.checkNotNull(this.pushoverRetry, "Retry is required on priority emergency");
Preconditions.checkNotNull(this.pushoverExpire, "Expire is required on priority emergency");
}
final List<NameValuePair> params = Form.form()
.add(Constants.TOKEN.get(), this.pushoverToken)
.add(Constants.USER.get(), this.pushoverUser)
.add(Constants.MESSAGE.get(), this.pushoverMessage)
.add(Constants.DEVICE.get(), this.pushoverDevice)
.add(Constants.TITLE.get(), this.pushoverTitle)
.add(Constants.URL.get(), this.pushoverUrl)
.add(Constants.RETRY.get(), this.pushoverRetry)
.add(Constants.EXPIRE.get(), this.pushoverExpire)
.add(Constants.CALLBACK.get(), this.pushoverCallback)
.add(Constants.URLTITLE.get(), this.pushoverUrlTitle)
.add(Constants.PRIORITY.get(), this.pushoverPriority.get())
.add(Constants.TIMESTAMP.get(), this.pushoverTimestamp)
.add(Constants.SOUND.get(), this.pushoverSound.get())
.build();
HttpResponse httpResponse = null;
JPushoverResponse jPushoverResponse = null;
try {
httpResponse = Request.Post(Constants.MESSAGES_URL.get()).bodyForm(params, Consts.UTF_8).execute().returnResponse();
if (httpResponse != null) {
final int status = httpResponse.getStatusLine().getStatusCode();
jPushoverResponse = new JPushoverResponse()
.httpStatus(status)
.response(IOUtils.toString(httpResponse.getEntity().getContent(), Consts.UTF_8))
.isSuccessful((status == HTTP_OK) ? true : false);
}
} catch (final IOException e) {
LOG.error("Failed to send message to pushover", e);
}
return (jPushoverResponse == null) ? new JPushoverResponse().isSuccessful(false) : jPushoverResponse;
}
public String getToken() { public String getToken() {
return pushoverToken; return pushoverToken;
} }
@ -347,4 +272,96 @@ public class JPushover {
public Sound getSound() { public Sound getSound() {
return pushoverSound; return pushoverSound;
} }
public boolean getHtml() {
return pushoverHtml;
}
/**
* Sends a validation request to pushover ensuring that the token and user
* is correct, that there is at least one active device on the account.
*
* Requires token parameter
* Requires user parameter
* Optional device parameter to check specific device
*
* @return true if token and user are valid and at least on device is on the account, false otherwise
*/
public boolean validate() {
Objects.requireNonNull(this.pushoverToken, "Token is required for validation");
Objects.requireNonNull(this.pushoverUser, "User is required for validation");
final List<NameValuePair> params = Form.form()
.add(Constants.TOKEN.toString(), this.pushoverToken)
.add(Constants.USER.toString(), this.pushoverUser)
.add(Constants.DEVICE.toString(), this.pushoverDevice)
.build();
boolean valid = false;
try {
final HttpResponse httpResponse = Request.Post(Constants.VALIDATION_URL.toString()).bodyForm(params, Consts.UTF_8).execute().returnResponse();
if (httpResponse != null && httpResponse.getStatusLine().getStatusCode() == HTTP_OK) {
final String response = IOUtils.toString(httpResponse.getEntity().getContent());
if (StringUtils.isNotBlank(response) && response.contains("\"status\":1")) {
valid = true;
}
}
} catch (final IOException e) {
LOG.error("Failed to send validation requeste to pushover", e);
}
return valid;
}
/**
* Sends a message to pushover
*
* @return JPushoverResponse instance
*/
public JPushoverResponse push() {
Objects.requireNonNull(this.pushoverToken, "Token is required for a message");
Objects.requireNonNull(this.pushoverUser, "User is required for a message");
Objects.requireNonNull(this.pushoverMessage, "Message is required for a message");
if (Priority.EMERGENCY.equals(this.pushoverPriority)) {
Objects.requireNonNull(this.pushoverRetry, "Retry is required on priority emergency");
Objects.requireNonNull(this.pushoverExpire, "Expire is required on priority emergency");
}
final List<NameValuePair> params = Form.form()
.add(Constants.TOKEN.toString(), this.pushoverToken)
.add(Constants.USER.toString(), this.pushoverUser)
.add(Constants.MESSAGE.toString(), this.pushoverMessage)
.add(Constants.DEVICE.toString(), this.pushoverDevice)
.add(Constants.TITLE.toString(), this.pushoverTitle)
.add(Constants.URL.toString(), this.pushoverUrl)
.add(Constants.RETRY.toString(), this.pushoverRetry)
.add(Constants.EXPIRE.toString(), this.pushoverExpire)
.add(Constants.CALLBACK.toString(), this.pushoverCallback)
.add(Constants.URLTITLE.toString(), this.pushoverUrlTitle)
.add(Constants.PRIORITY.toString(), this.pushoverPriority.get())
.add(Constants.TIMESTAMP.toString(), this.pushoverTimestamp)
.add(Constants.SOUND.toString(), this.pushoverSound.get())
.add(Constants.HTML.toString(), this.pushoverHtml ? "1" : "0")
.build();
JPushoverResponse jPushoverResponse = null;
try {
final HttpResponse httpResponse = Request.Post(Constants.MESSAGES_URL.toString()).bodyForm(params, Consts.UTF_8).execute().returnResponse();
if (httpResponse != null) {
final int status = httpResponse.getStatusLine().getStatusCode();
jPushoverResponse = new JPushoverResponse()
.httpStatus(status)
.response(IOUtils.toString(httpResponse.getEntity().getContent(), Consts.UTF_8))
.isSuccessful((status == HTTP_OK) ? true : false);
}
} catch (final IOException e) {
LOG.error("Failed to send message to pushover", e);
}
return (jPushoverResponse == null) ? new JPushoverResponse().isSuccessful(false) : jPushoverResponse;
}
} }

View File

@ -20,7 +20,8 @@ public enum Constants {
URLTITLE("urltitle"), URLTITLE("urltitle"),
CALLBACK("callback"), CALLBACK("callback"),
EXPIRE("expire"), EXPIRE("expire"),
RETRY("retry"); RETRY("retry"),
HTML("html");
private final String value; private final String value;
@ -28,7 +29,7 @@ public enum Constants {
this.value = value; this.value = value;
} }
public String get() { public String toString() {
return this.value; return this.value;
} }
} }

View File

@ -22,7 +22,7 @@ public class TestJPushover {
@Test @Test
public void TestValues(){ public void TestValues(){
JPushover push = new JPushover(); final JPushover push = new JPushover();
push.callback(CALLBACK); push.callback(CALLBACK);
assertEquals(push.getCallback(), CALLBACK); assertEquals(push.getCallback(), CALLBACK);
@ -62,5 +62,8 @@ public class TestJPushover {
push.user(USER); push.user(USER);
assertEquals(push.getUser(), USER); assertEquals(push.getUser(), USER);
push.html();
assertEquals(push.getHtml(), true);
} }
} }