com.jakewharton.pingdom.services.CheckService Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pingdom-java Show documentation
Show all versions of pingdom-java Show documentation
A Java wrapper around the Pingdom RESTful API and a simple DSL for easy interaction.
The newest version!
package com.jakewharton.pingdom.services;
import java.util.List;
import com.google.gson.JsonElement;
import com.google.gson.reflect.TypeToken;
import com.jakewharton.pingdom.PingdomApiBuilder;
import com.jakewharton.pingdom.PingdomApiService;
import com.jakewharton.pingdom.entities.Check;
import com.jakewharton.pingdom.entities.Message;
import com.jakewharton.pingdom.enumerations.CheckType;
/**
* Represents Pingdom's remote check service.
*/
public class CheckService extends PingdomApiService {
/**
* Returns a list overview of all checks.
*
* @return Builder instance.
* @since 2.0
*/
public ListBuilder list() {
return new ListBuilder(this);
}
/**
* Request builder for {@link CheckService#list()}.
*/
public static final class ListBuilder extends PingdomApiBuilder> {
private static final String PARAM_LIMIT = "limit";
private static final String PARAM_OFFSET = "offset";
private static final String URI = "/checks";
private static final int MAX_LIMIT = 250000;
private ListBuilder(CheckService service) {
super(service, new TypeToken>() {}, URI);
}
@Override
protected JsonElement execute() {
return super.execute().getAsJsonObject().get("checks").getAsJsonArray();
}
/**
* Limits the number of returned results to the specified quantity. Maximum value is 250,000. (Optional)
*
* @param limit Result limit.
* @return Builder instance.
*/
public ListBuilder limit(int limit) {
if (limit > MAX_LIMIT) {
throw new IllegalArgumentException("Value must be less than or equal to " + MAX_LIMIT);
}
this.parameter(PARAM_LIMIT, limit);
return this;
}
/**
* Offset for listing. (Optional)
*
* @param offset Offset amount.
* @return Builder instance.
*/
public ListBuilder offset(int offset) {
if (!this.hasParameter(PARAM_LIMIT)) {
throw new IllegalArgumentException("Requires that a limit be set.");
}
this.parameter(PARAM_OFFSET, offset);
return this;
}
}
/**
* Returns a detailed description of a specified check.
*
* @param checkId Check ID.
* @return Builder instance.
* @since 2.0
*/
public GetBuilder get(int checkId) {
return new GetBuilder(this, checkId);
}
/**
* Request builder for {@link CheckService#get(int)}.
*/
public static final class GetBuilder extends PingdomApiBuilder {
private static final String FIELD_CHECK_ID = "checkid";
private static final String URI = "/checks/{" + FIELD_CHECK_ID + "}";
private GetBuilder(CheckService service, int checkId) {
super(service, new TypeToken() {}, URI);
this.field(FIELD_CHECK_ID, checkId);
}
@Override
protected JsonElement execute() {
return super.execute().getAsJsonObject().get("check");
}
}
/**
* Creates a new check with settings specified by provided parameters.
*
* @param name Check name.
* @param host Target host.
* @param type Type of check.
* @return Builder instance.
* @since 2.0
*/
public CreateBuilder create(String name, String host, CheckType type) {
return new CreateBuilder(this, name, host, type);
}
/**
* Request builder for
* {@link CheckService#create(String, String, CheckType)}.
*/
public static final class CreateBuilder extends PingdomApiBuilder {
private static final String POST_NAME = "name";
private static final String POST_HOST = "host";
private static final String POST_TYPE = "type";
private static final String POST_PAUSED = "paused";
private static final String POST_RESOLUTION = "resolution";
private static final String POST_CONTACT_IDS = "contactids";
private static final String POST_SEND_TO_EMAIL = "sendtoemail";
private static final String POST_SEND_TO_SMS = "sendtosms";
private static final String POST_SEND_TO_TWITTER = "sendtotwitter";
private static final String POST_SEND_TO_IPHONE = "sendtoiphone";
private static final String POST_SEND_NOTIFICATION_WHEN_DOWN = "sendnotificationwhendown";
private static final String POST_NOTIFY_AGAIN_EVERY = "notifyagainevery";
private static final String POST_NOTIFY_WHEN_BACK_UP = "notifywhenbackup";
private static final String URI = "/checks";
private CreateBuilder(CheckService service, String name, String host, CheckType type) {
super(service, new TypeToken() {}, URI, HttpMethod.Post);
this.postParameter(POST_NAME, name);
this.postParameter(POST_HOST, host);
this.postParameter(POST_TYPE, type);
}
@Override
protected JsonElement execute() {
return super.execute().getAsJsonObject().get("check");
}
/**
* Paused.
*
* @param value Value.
* @return Builder instance.
*/
public CreateBuilder paused(boolean value) {
this.postParameter(POST_PAUSED, value);
return this;
}
/**
* Check resolution.
*
* @param minutes Value (in minutes).
* @return Builder instance.
*/
public CreateBuilder resolution(int minutes) {
//TODO: check if 1, 5, 15, 30, or 60
this.postParameter(POST_RESOLUTION, minutes);
return this;
}
/**
* Contact identifiers.
*
* @param list List of integers.
* @return Builder instance.
*/
public CreateBuilder contactIds(List list) {
this.postParameter(POST_CONTACT_IDS, list);
return this;
}
/**
* Send alerts as email.
*
* @param value Value.
* @return Builder instance.
*/
public CreateBuilder sendToEmail(boolean value) {
this.postParameter(POST_SEND_TO_EMAIL, value);
return this;
}
/**
* Send alerts as SMS.
*
* @param value Value.
* @return Builder instance.
*/
public CreateBuilder sendToSms(boolean value) {
this.postParameter(POST_SEND_TO_SMS, value);
return this;
}
/**
* Send alerts through Twitter.
*
* @param value Value.
* @return Builder instance.
*/
public CreateBuilder sendToTwitter(boolean value) {
this.postParameter(POST_SEND_TO_TWITTER, value);
return this;
}
/**
* Send alerts to iPhone.
*
* @param value Value.
* @return Builder instance.
*/
public CreateBuilder sendToIPhone(boolean value) {
this.postParameter(POST_SEND_TO_IPHONE, value);
return this;
}
/**
* Send notification when down n times.
*
* @param count Count.
* @return Builder instance.
*/
public CreateBuilder sendNotificationWhenDown(int count) {
this.postParameter(POST_SEND_NOTIFICATION_WHEN_DOWN, count);
return this;
}
/**
* Notify again every n result. 0 means that no extra notifications will be sent.
*
* @param count Count.
* @return Builder instance.
*/
public CreateBuilder notifyAgainEvery(int count) {
this.postParameter(POST_NOTIFY_AGAIN_EVERY, count);
return this;
}
/**
* Notify when back up again.
*
* @param value Value.
* @return Builder instance.
*/
public CreateBuilder notifyWhenBackUp(boolean value) {
this.postParameter(POST_NOTIFY_WHEN_BACK_UP, value);
return this;
}
}
/**
* Deletes a check. THIS METHOD IS IRREVERSIBLE! You will lose all collected
* data. Be careful!
*
* @param checkId Check ID.
* @return Builder instance.
* @since 2.0
*/
public DeleteBuilder delete(int checkId) {
return new DeleteBuilder(this, checkId);
}
/**
* Request builder for {@link CheckService#delete(int)}.
*/
public static final class DeleteBuilder extends PingdomApiBuilder {
private static final String FIELD_CHECK_ID = "checkid";
private static final String URI = "/checks/{" + FIELD_CHECK_ID + "}";
private DeleteBuilder(CheckService service, int checkId) {
super(service, new TypeToken() {}, URI, HttpMethod.Delete);
this.field(FIELD_CHECK_ID, checkId);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy