2012年1月31日火曜日

groovyでdrupalのタクソノミーの新しいタームを作成する

groovyでdrupalのタクソノミーの新しいタームを作成するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.2')
import org.apache.http.*
import org.apache.http.client.*
import org.apache.http.client.entity.*
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.message.*
import org.apache.http.protocol.*

// ログイン
httpclient = new DefaultHttpClient()
method = new HttpPost("http://localhost/drupal/rest/user/login")
values = [
  new BasicNameValuePair("username", "drupal"),
  new BasicNameValuePair("password", "drupal")
]
method.setEntity(new UrlEncodedFormEntity(values, HTTP.UTF_8))
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text

// タクソノミーの新しいタームを作成
method = new HttpPost("http://localhost/drupal/rest/taxonomy_term")
values = [
  new BasicNameValuePair('name', 'Drupal'),
  new BasicNameValuePair('description', 'Content Management System'),
  new BasicNameValuePair('vid', '1')
]
method.setEntity(new UrlEncodedFormEntity(values, HTTP.UTF_8))
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text

// ログアウト
method = new HttpGet("http://localhost/drupal/user/logout")
response = httpclient.execute(method)
println response.getStatusLine().getStatusCode()

動作環境
groovy 1.8.4, JDK7 Update1, drupal 7.1.0, services-7.x-3.1, ctools-7.x-1.0-rc1, spyc-0.5

2012年1月30日月曜日

groovyでredmineのチケットを更新する

groovyでredmineのチケットを更新するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.2')
import org.apache.http.*
import org.apache.http.client.*
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.entity.*
import org.apache.http.message.*
import org.apache.http.protocol.*
import groovy.json.*

httpclient = new DefaultHttpClient()
// チケットを更新する
issueId = 8
method = new HttpPut("http://redmine-server/redmine/issues/${issueId}.json")
// アカウントページで作成したAPIアクセスキーを設定する
apiKey = "your-api-key"
method.addHeader(new BasicHeader("X-Redmine-API-Key", apiKey))
// パラメータを設定
builder = new JsonBuilder()
builder.issue {
  project_id "testproject1"
  notes "例外発生"
}
method.setEntity(new StringEntity(builder.toString(), "application/json", "UTF-8"))
response = httpclient.execute(method)
println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text


動作環境
groovy 1.8.4, JDK6 Update29, redmine 1.3.0

2012年1月29日日曜日

groovyでdrupalのタクソノミーのタームの一覧を取得する

groovyでdrupalのタクソノミーのタームの一覧を取得するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.2')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import groovy.json.*

httpclient = new DefaultHttpClient()
// タクソノミーのタームの一覧を取得する
method = new HttpGet("http://localhost/drupal/rest/taxonomy_term.json")
response = httpclient.execute(method)
json = new JsonSlurper().parseText(response.getEntity().getContent().text)
json.each {
  println "名前:${it.name}"
  println "説明:${it.description}"
  println "tid:${it.tid}"
  println "vid:${it.vid}"
}

動作環境
groovy 1.8.4, JDK7 Update1, drupal 7.1.0, services-7.x-3.1, ctools-7.x-1.0-rc1, spyc-0.5

2012年1月28日土曜日

groovyとWordpress + JSON API pluginで指定のユーザの投稿を取得する

groovyとWordpress + JSON API pluginで指定のユーザの投稿を取得するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.2')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import groovy.json.*

httpclient = new DefaultHttpClient()
// 指定のユーザの投稿を取得する
user = "user1"
method = new HttpGet("http://localhost/?json=get_author_posts" +
  "&count=10&slug=${user}"
)
response = httpclient.execute(method)

json = new JsonSlurper().parseText(response.getEntity().getContent().text)
json.posts.each {
  // ID
  println "id:${it.id}"
  // タイトル
  println "title:${it.title}"
  // 日時
  println "date:${it.date}"
}

動作環境
groovy 1.8.4, JDK6 Update29, Wordpress 3.2.1, JSON API plugin 1.0.7

JSON APIのページ
http://wordpress.org/extend/plugins/json-api/

2012年1月27日金曜日

groovyでdrupalのタクソノミーのボキャブラリーを削除する

groovyでdrupalのタクソノミーのボキャブラリーを削除するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.2')
import org.apache.http.*
import org.apache.http.client.*
import org.apache.http.client.entity.*
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.message.*
import org.apache.http.protocol.*

// ログイン
httpclient = new DefaultHttpClient()
method = new HttpPost("http://localhost/drupal/rest/user/login")
values = [
  new BasicNameValuePair("username", "drupal"),
  new BasicNameValuePair("password", "drupal")
]
method.setEntity(new UrlEncodedFormEntity(values, HTTP.UTF_8))
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text

// タクソノミーのボキャブラリーの削除
vid="3"
method = new HttpDelete(
  "http://localhost/drupal/rest/taxonomy_vocabulary/${vid}"
)
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text

// ログアウト
method = new HttpGet("http://localhost/drupal/user/logout")
response = httpclient.execute(method)
println response.getStatusLine().getStatusCode()

動作環境
groovy 1.8.4, JDK7 Update1, drupal 7.1.0, services-7.x-3.1, ctools-7.x-1.0-rc1, spyc-0.5

2012年1月26日木曜日

groovyでredmineのチケットを作成する

groovyでredmineのチケットを作成するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.2')
import org.apache.http.*
import org.apache.http.client.*
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.entity.*
import org.apache.http.message.*
import org.apache.http.protocol.*
import groovy.json.*

httpclient = new DefaultHttpClient()
// チケットを作成する
method = new HttpPost("http://redmine-server/redmine/issues.json")
// アカウントページで作成したAPIアクセスキーを設定する
apiKey = "your-api-key"
method.addHeader(new BasicHeader("X-Redmine-API-Key", apiKey))
// パラメータを設定
builder = new JsonBuilder()
builder.issue {
  project_id "testproject1"
  subject "UIバグ"
  description "Windowがクローズできない。"
  tracker_id "1"  // 1=Bug
  priority_id "5"  // 5=High
  status_id "1" // 1=New
  start_date "2012-01-05"
  due_date "2012-02-02"
  done_ratio "0"
  estimated_hours "10"
}
method.setEntity(new StringEntity(builder.toString(), "application/json", "UTF-8"))
response = httpclient.execute(method)
println response.getStatusLine().getStatusCode()
json = new JsonSlurper().parseText(response.getEntity().getContent().text)
// 作成したチケットのID
println "id:${json.issue.id}"

動作環境
groovy 1.8.4, JDK6 Update29, redmine 1.3.0

2012年1月25日水曜日

groovyでdrupalの指定のタクソノミーのボキャブラリー情報を取得する

groovyでdrupalの指定のタクソノミーのボキャブラリー情報を取得するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.2')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import groovy.json.*

httpclient = new DefaultHttpClient()
// 指定のタクソノミーのボキャブラリー情報を取得
vid="3"
method = new HttpGet("http://localhost/drupal/rest/taxonomy_vocabulary/${vid}")
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
json = new JsonSlurper().parseText(response.getEntity().getContent().text)
println "名前:${json.name}"
println "説明:${json.description}"
println "machine_name:${json.machine_name}"

動作環境
groovy 1.8.4, JDK7 Update1, drupal 7.1.0, services-7.x-3.1, ctools-7.x-1.0-rc1, spyc-0.5

2012年1月24日火曜日

groovyとWordpress + JSON API pluginで検索結果を取得する

groovyとWordpress + JSON API pluginで検索結果を取得するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.2')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import groovy.json.*

httpclient = new DefaultHttpClient()
// 検索結果を取得する
search = "groovy"
method = new HttpGet("http://localhost/?json=get_search_results" +
  "&count=10&search=${search}"
)
response = httpclient.execute(method)

json = new JsonSlurper().parseText(response.getEntity().getContent().text)
json.posts.each {
  // ID
  println "id:${it.id}"
  // タイトル
  println "title:${it.title}"
  // 日時
  println "date:${it.date}"
}

動作環境
groovy 1.8.4, JDK6 Update29, Wordpress 3.2.1, JSON API plugin 1.0.7

JSON APIのページ
http://wordpress.org/extend/plugins/json-api/

2012年1月23日月曜日

groovyでredmineから優先順位がUrgentのチケットの一覧を取得する

groovyでredmineから優先順位がUrgentのチケットの一覧を取得するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.2')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.message.*
import groovy.json.*

httpclient = new DefaultHttpClient()
// 優先順位がUrgent(priority_id=6)のチケットの一覧を取得する
project_id = "testproject1"
method = new HttpGet("http://redmine-server/redmine/issues.json" +
  "?limit=100&offset=0&priority_id=6"
)
// アカウントページで作成したAPIアクセスキーを設定する
apiKey = "your-api-key"
method.addHeader(new BasicHeader("X-Redmine-API-Key", apiKey))
response = httpclient.execute(method)

json = new JsonSlurper().parseText(response.getEntity().getContent().text)
println json
println "number of closed issue:${json.total_count}"
json.issues.each {
  println "----"
  // 題名
  println "name:${it.subject}"
  // ステータス
  println "status:${it.status.name}"
  // 説明
  println "description:${it.description}"
  // プライオリティ
  println "priority:${it.priority.name}"
  // 登録日時
  println "created_on:${it.created_on}"
}

動作環境
groovy 1.8.4, JDK6 Update29, redmine 1.3.0

2012年1月22日日曜日

groovyでdrupalのタクソノミーのボキャブラリを更新する

groovyでdrupalのタクソノミーのボキャブラリを更新するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.2')
import org.apache.http.*
import org.apache.http.client.*
import org.apache.http.client.entity.*
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.message.*
import org.apache.http.protocol.*

// ログイン
httpclient = new DefaultHttpClient()
method = new HttpPost("http://localhost/drupal/rest/user/login")
values = [
  new BasicNameValuePair("username", "drupal"),
  new BasicNameValuePair("password", "drupal")
]
method.setEntity(new UrlEncodedFormEntity(values, HTTP.UTF_8))
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text

// タクソノミーのボキャブラリーの更新
vid="3"
method = new HttpPut("http://localhost/drupal/rest/taxonomy_vocabulary/${vid}")
values = [
  new BasicNameValuePair('name', 'お知らせ'),
  new BasicNameValuePair('description', '会社からのお知らせです。'),
  new BasicNameValuePair('machine_name', 'announcement')
]
method.setEntity(new UrlEncodedFormEntity(values, HTTP.UTF_8))
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text

// ログアウト
method = new HttpGet("http://localhost/drupal/user/logout")
response = httpclient.execute(method)
println response.getStatusLine().getStatusCode()

動作環境
groovy 1.8.4, JDK7 Update1, drupal 7.1.0, services-7.x-3.1, ctools-7.x-1.0-rc1, spyc-0.5

2012年1月21日土曜日

groovyでredmineのプロジェクトを作成する

groovyでredmineのプロジェクトを作成するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.2')
import org.apache.http.*
import org.apache.http.client.*
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.entity.*
import org.apache.http.message.*
import org.apache.http.protocol.*
import groovy.json.*

httpclient = new DefaultHttpClient()
// プロジェクトを作成する
method = new HttpPost("http://redmine-server/redmine/projects.json")
// アカウントページで作成したAPIアクセスキーを設定する
apiKey = "your-api-key"
method.addHeader(new BasicHeader("X-Redmine-API-Key", apiKey))
//
builder = new JsonBuilder()
builder.project {
  name "プロジェクト名称"
  identifier "project1"
  description "groovyで作成したプロジェクト"
}
method.setEntity(new StringEntity(builder.toString(), "application/json", "UTF-8"))
response = httpclient.execute(method)
println response.getStatusLine().getStatusCode()
json = new JsonSlurper().parseText(response.getEntity().getContent().text)
// 作成したプロジェクトのID
println "id:${json.project.id}"


動作環境
groovy 1.8.4, JDK6 Update29, redmine 1.3.0

2012年1月20日金曜日

groovyとWordpress + JSON API pluginでコメントを投稿する

groovyとWordpress + JSON API pluginでコメントを投稿するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.2')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import groovy.json.*

httpclient = new DefaultHttpClient()
// コメントの作成
post_id = 33
name = "通りすがり"
email = "sample@sample.com"
content = "コメントしました。"

method = new HttpGet("http://localhost/?json=submit_comment&" +
  "post_id=${post_id}&name=${name}&email=${email}&" +
  "content=${content}"
)
response = httpclient.execute(method)
println response.getStatusLine().getStatusCode()
json = new JsonSlurper().parseText(response.getEntity().getContent().text)
println json

動作環境
groovy 1.8.4, JDK6 Update29, Wordpress 3.2.1, JSON API plugin 1.0.7

JSON APIのページ
http://wordpress.org/extend/plugins/json-api/

2012年1月19日木曜日

groovyとApache CamelでJDBC Componentを使用してデータベースの結果を出力する

groovyとApache CamelでJDBC Componentを使用してデータベースの結果を出力するには、以下のコードを実行します。
@Grab(group='postgresql', module='postgresql', version='9.1-901.jdbc4')
@Grab(group="org.apache.camel", module="camel-core", version="2.9.0")
@Grab(group="org.apache.camel", module="camel-jdbc", version="2.9.0")
@Grab(group="org.slf4j", module="slf4j-simple", version="1.6.4")
//@Grab(group="org.slf4j", module="slf4j-nop", version="1.6.4")
import org.apache.camel.*
import org.apache.camel.builder.*
import org.apache.camel.impl.*

// 接続先DataSource
ds = new org.postgresql.ds.PGPoolingDataSource()
ds.setDataSourceName("userdb_ds")
ds.setServerName("localhost")
ds.setDatabaseName("userdb")
ds.setUser("postgres")
ds.setPassword("postgres")

// DataSourceをレジストリに設定
registry = new SimpleRegistry()
registry.put("userdb_ds", ds)
ctx = new DefaultCamelContext(registry)
ctx.addRoutes(new RouteBuilder(){
  void configure()
  {
    from("direct:customer")
      .to("jdbc:userdb_ds?readSize=100")
      .process(
        { exc ->
          for( row in exc.getIn().getBody() ){
            // 各列を出力
            println row.get("customer_id")
            println row.get("customer_name")
          }
        } as Processor
      )
  }
})
ctx.start()
// exchangeを作成して、endpointに送信
endpoint = ctx.getEndpoint("direct:customer")
exc = endpoint.createExchange()
exc.getIn().setBody("select * from customer")
template = ctx.createProducerTemplate()
template.send(endpoint, exc)
ctx.stop()


動作環境
groovy 1.8.5, JDK7 Update1, Apache Camel 2.9.0

groovyでdrupalのタクソノミーの新しいボキャブラリを作成する

groovyでdrupalのタクソノミーの新しいボキャブラリを作成するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.2')
import org.apache.http.*
import org.apache.http.client.*
import org.apache.http.client.entity.*
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.message.*
import org.apache.http.protocol.*

// ログイン
httpclient = new DefaultHttpClient()
method = new HttpPost("http://localhost/drupal/rest/user/login")
values = [
  new BasicNameValuePair("username", "drupal"),
  new BasicNameValuePair("password", "drupal")
]
method.setEntity(new UrlEncodedFormEntity(values, HTTP.UTF_8))
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text

// 新しいタクソノミーのボキャブラリを作成
method = new HttpPost("http://localhost/drupal/rest/taxonomy_vocabulary")
values = [
  new BasicNameValuePair('name', 'お知らせ'),
  new BasicNameValuePair('description', 'お知らせです。'),
  new BasicNameValuePair('machine_name', 'announcement')
]
method.setEntity(new UrlEncodedFormEntity(values, HTTP.UTF_8))
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text

// ログアウト
method = new HttpGet("http://localhost/drupal/user/logout")
response = httpclient.execute(method)
println response.getStatusLine().getStatusCode()

動作環境
groovy 1.8.4, JDK7 Update1, drupal 7.1.0, services-7.x-3.1, ctools-7.x-1.0-rc1, spyc-0.5

2012年1月18日水曜日

groovyでredmineからクローズしたチケットの一覧を取得する

groovyでredmineからクローズしたチケットの一覧を取得するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.2')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.message.*
import groovy.json.*

httpclient = new DefaultHttpClient()
// クローズしたチケットの一覧を取得する
project_id = "testproject1"
method = new HttpGet("http://redmine-server/redmine/issues.json" +
  "?limit=100&offset=0&status_id=closed"
)
// アカウントページで作成したAPIアクセスキーを設定する
apiKey = "your-api-key"
method.addHeader(new BasicHeader("X-Redmine-API-Key", apiKey))
response = httpclient.execute(method)

json = new JsonSlurper().parseText(response.getEntity().getContent().text)
println "number of closed issue:${json.total_count}"
json.issues.each {
  println "----"
  // 題名
  println "name:${it.subject}"
  // ステータス
  println "status:${it.status.name}"
  // 説明
  println "description:${it.description}"
  // プライオリティ
  println "priority:${it.priority.name}"
  // 登録日時
  println "created_on:${it.created_on}"
}

動作環境
groovy 1.8.4, JDK6 Update29, redmine 1.3.0