Nachdem ich ja mittlerweile schon längere Zeit ein iPhone besitze, habe ich vergangene Woche eine kleines Java-Bibliothek für eine Growl-Anbindung geschrieben. Mit der iPhone-App Prowl kann man Nachrichten über einen kostenlosen Internetservice versenden, die dann wie eine SMS auf dem Telefon angezeigt werden.

Mit einer solchen Anbindung kann man sich z.B. (kostenlos!) benachrichtigen lassen, wenn beim Monitoring im Rechenzentrum ein Server ausgefallen ist, man könnte an Termine erinnert werden oder anderen Personen die Möglichkeit bieten, günstig eine Nachricht auf das Telefon schicken zu lassen.

Ich habe nun in Java eine kleine Bibliothek geschrieben, mit der man solche Anwendungen leicht entwickeln kann. Vielleicht hat ja jemand Interesse es einzusetzen. Ich habe die Bibliothek als ZIP angehängt. Es handelt sich um Version 0.1, da es die erste Veröffentlichung ist. Ich hoffe auf viel Feedback (bitte unten in den Kommentaren hinterlassen).

Hier ein kurzes Beispielprogramm, wie die Bibliothek bedient wird. Momentan habe ich leider noch keine ausführliche Dokumentation zu der Lib, aber vielleicht kommt das ja noch, wenn ich entsprechendes Feedback bekomme.

public static void main(String[] args) throws JgrliException {
  String apiKey = "<API-Key>";
  String applicationName = "Application name";
  String eventName = "Event name";
  String description = "Description";

  System.out.println("Creating client with API key "" + apiKey + """);
  JgrliClient JgrliClient = new JgrliClient(apiKey);

  System.out.println("Calling Prowl with application name "" + applicationName + "", event "" + eventName + "", description "" + description + """);
  JgrliResult result = JgrliClient.add(applicationName, eventName, description);
  if (result instanceof JgrliSuccessResult) {
    JgrliSuccessResult successResult = (JgrliSuccessResult) result;
    System.out.println("Successfully sent message!");
    System.out.println("Status code is " + successResult.getErrorCode().getCode());
    System.out.println(successResult.getRemaining() + " calls left");
    System.out.println("Reset date is " + new SimpleDateFormat().format(successResult.getResetDate()));
  } else if (result instanceof JgrliErrorResult) {
    JgrliErrorResult errorResult = (JgrliErrorResult) result;
    System.out.println("An error occured during call!");
    System.out.println("Error code is " + errorResult.getErrorCode().getCode());
    System.out.println("Error message is " + errorResult.getErrorMessage());
  } else {
    System.out.println("Unknown result type!");
  }
}

Download

Ich habe die Quelltexte in zwei Versionen abgelegt: mit benötigten Libraries und ohne.