Jan 01


Einen ähnlichen Artikel habe ich vor einiger Zeit auch für meinen Ex – Lesezeichenverwalter del.icio.us geschrieben.

Mein neuer Dienstleister ist zootool. Über die Gründe des Wechsels habe ich ja erst vor kurzem geschrieben.
Wenn man sich in eine neue Abhängigkeit begiebt, sollte alles Gute erhalten bleiben. So bietet auch zootool über eine API den Zugriff auf die Lesezeichen.

Anders als bei del.icio.us werden die Ergebnisse einer Anfrage aber im JSON Format geliefert, womit das HTTPBuilder Modul von Groovy aber auch keine Probleme hat, wie das Beispiel gleich zeigen wird. Ein verschlüsseltes Passwort und ein API-Key sorgen zusätzlich für mehr Sicherheit.

So, lange genug geredet. Hier ist der Code für einen einfachen zootool Lesezeichen Client:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package de.koo.groovy.rest
 
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.1' )
 
import groovyx.net.http.* 
import groovy.util.slurpersupport.GPathResult 
import java.security.MessageDigest
import sun.misc.*
 
public class ZootoolBookmarkClient{
  def username
  def password
  def apikey
 
  public ZootoolBookmarkClient() {
    username="<username>"
    password="<password>"
    apikey="<apikey>"
  }
 
  static void main(args) {
    def dc=new ZootoolBookmarkClient()
    dc.request()
  }
 
  /**
   * Lesezeichen abfragen und Aufbereitung der Ergebnisse 
   * im HTML Format als definition list
   */
  public request () {
    def resp
 
    try {
      // Authentifizierung
      def url="http://zootool.com/api/users/items/?username=$username&apikey=$apikey"
 
      RESTClient rc = new RESTClient( url )
      rc.auth.basic (username.toLowerCase(), getEncodedPassword())
 
      // anfragen und überprüfen der Antwort
      def params=[:]   
      resp=rc.get(params)
 
      assert resp.status == 200
 
      println "<dl>"
      resp.data.each {item ->
        println "   <dt><a href=\"${item?.url}\">${item?.title}</a></dt>"
        println "      <dd>${item?.title}</dd>"
      }
      println "</dl>"
    } catch (e) {
      e.printStackTrace()
    }
  }
 
  /**
   * Passwort Verschlüsselung mit SHA-1 Algorithmus
   */
  public getEncodedPassword () {
    MessageDigest md = MessageDigest.getInstance('SHA-1')
    md.update(password.getBytes('UTF-8'))
 
    return (new BASE64Encoder()).encode(md.digest())
  }
}

Ich wünsche Euch allen (mit und ohne gepflegten Kater) ein frohes und gesundes Jahr 2011.

Zum Schluss noch ein paar hilfreiche Links:

zootool API-Key Generierung
zootool API Doku
Beispiel Code für PHP, Python und Objective-C

geschrieben von gklinkmann \\ tags: , ,

Nov 18

Das passiert, wenn man Objekt Orientierung mit russischen Holzpuppen erklärt:

Quelle und Dank an: Java Grundlagen Kurs 2010

geschrieben von gklinkmann \\ tags:

Aug 12

Fast jede moderne Webanwendung bietet ihre Daten und Funktionalitäten auch über eine REST Schnittstelle (meist im XML und/oder JSON Format) an.

Webframeworks (wie z.B. Rails und Grails), die die Erstellung einer solchen REST Schnittstelle vereinfachen, erfreuen sich unter den Webentwicklern großer Beliebtheit.
Da zumindest Grails im Hintergrund auch auf dem Webframework Spring aufsetzt, können auch Entwickler, die Grails nicht einsetzen dürfen oder wollen, mit Spring diese Funktionalität in ihre Anwendung integrieren.

Ein konkretes Beispiel mit dazu gehörigem Tutorial gibt es von StSMedia. Die grundsätzliche REST Integration wird in Teil 2 näher erläutert. Die Umsetzung der ContentNegotiation, also die Auslieferung unterschiedlicher Formate aufgrund der Anfrage (im Accept Header oder durch Erweiterung der URL um die entsprechende Dateiendung) gibt es dann im Teil 7.

Der komplette Sourcecode der Spring Finance Manager Anwendung wird auf Google Code gehostet und steht dort zum Download bereit. Die Version 0.5 basiert zwar noch auf Spring 3 M4, ich konnte die dort implementierte REST Funktionalität aber auch mit Spring 3.0.2 problemlos nutzen.

Links:
REST Artikel im Springsource Blog

geschrieben von gklinkmann \\ tags: ,

Jul 29

Wie heise.de heute berichtet wurde eine frühe Version der Eclipse SDK 4.0 veröffentlicht.  Sie dient laut Aussage der Entwickler als Spielwiese für Ideen für die kommende Genaration der vor allem im Java Bereich beliebten Entwicklungsumgebung. Einige Vorschläge fanden bereits den Weg in das letzte Release 3.6  ( Codename:  “Helios” ).  Der neue Look und die jetzt schon deutlich angezogene Performance machen auf jeden Fall Lust auf mehr.

Link: http://www.eclipse.org/eclipse4/

geschrieben von johnnypark \\ tags: , , ,

Jul 01

Zu diesem Kurzfilm braucht man eigentlich nichts mehr zu sagen außer, unbedingt angucken und die Botschaft begreifen. :-)

geschrieben von gklinkmann \\ tags: ,