2010年5月30日日曜日

groovyとgdata-java-clientでGoogle Calendarのカレンダーを登録する

groovyとgdata-java-clientでGoogle Calendarのカレンダーを登録するには、以下のコードを実行します。

import com.google.api.client.googleapis.*
import com.google.api.client.googleapis.auth.clientlogin.*
import com.google.api.data.calendar.v2.*
import com.google.api.data.calendar.v2.atom.*
import com.google.api.client.xml.atom.*
import com.google.api.client.util.*

// タイムゾーン
public class Timezone
{
@Key("@value")
String value
}

// 色
public class GCalColor
{
@Key("@value")
String value
}

// エントリ
public class Entry
{
@Key
String title
@Key
String summary
@Key("gCal:timezone")
Timezone timezone
@Key("gCal:color")
GCalColor color

public Entry()
{
}
public Entry(String title, String sumary,
String tz, String color)
{
this.title = title
this.summary = summary
def tzi = new Timezone()
tzi.value = tz
this.timezone = tzi
def colori = new GCalColor()
colori.value = color
this.color = colori
}
}

// Parser設定
GoogleTransport transport = new GoogleTransport()
transport.applicationName = "yourcorp-yourapp-1.0"
transport.setVersionHeader(GoogleCalendar.VERSION)
ap = new AtomParser()
ap.namespaceDictionary = GoogleCalendarAtom.NAMESPACE_DICTIONARY
transport.addParser(ap)

username = "youraccount@gmail.com"
password = 'yourpassword'

// 認証
cl = new ClientLogin()
cl.authTokenType = GoogleCalendar.AUTH_TOKEN_TYPE
cl.username = username
cl.password = password
cl.authenticate().setAuthorizationHeader(transport)

entry = new Entry("GDataで作成したカレンダ",
"テスト用です。", "Asia/Tokyo", "#705770")

// カレンダーを登録
request = transport.buildPostRequest()
request.url = "http://www.google.com/calendar/feeds/default/owncalendars/full"
content = new AtomContent()
content.entry = entry
content.namespaceDictionary = GoogleCalendarAtom.NAMESPACE_DICTIONARY
request.content = content;
request.execute().parseAs(Entry.class)


動作環境
groovy 1.7.2, JDK6 Update20, gdata-java-2.2.1-alpha

関連情報
gdata-java-client
http://code.google.com/p/gdata-java-client/

0 件のコメント:

コメントを投稿