UnfilteredでCookieを使う

リクエストのパターンマッチにおいてCookiesという抽出子を使用してクッキーを取得することができます。また、ResponseCookiesというResponderを使用してクッキーを書き出すことができます。
以下はクッキーを使用したカウンタの例です。ブラウザでアクセスするたびにカウントアップされ、有効期限を指定していないのでブラウザを閉じると削除されます。

import unfiltered.Cookie

case GET(Path("/cookie") & Cookies(cookies)) => {
  // counterという名前のクッキーを取得
  val counter = (cookies("counter") match {
    case Some(cookie) => cookie.value.toInt
    case _ => 0
  }) + 1

  Ok ~> 
  ResponseCookies(Cookie("counter", counter.toString)) ~> // クッキーを出力
  Html(<p>{counter}</p>) // クッキーの値を表示
}

ResponseCookiesで出力するクッキーは以下のようにしてクッキーにパスや有効期限などを指定することができます。nameとvalue以外はオプションなのでOption型で指定する必要があります。

// クッキーを作成
val cookie = Cookie(
  name   = "cookie-name",       // クッキーの名前
  value  = "cookie-value",      // クッキーの値
  domain = Option("localhost"), // ドメイン
  maxAge = Some(300),           // 有効期限(秒)
  path   = Some("/cookie"),     // パス
  secure = Some(true))          // SSL時のみ送信

// 作成したクッキーを出力
ResponseCookies(cookie)

BitBucketでコミットログをIssueに反映する

ずっとできないものだとばかり思っていたのですが、BitBucketのドキュメントにやり方が書いてありました。

まずはコミットログをIssueに転送するための設定を行います。リポジトリの「Admin」タブの「Service」メニューから連携するサービスにIssueを追加します。Issue以外にもいろんなサービスに連携できるようです。

あとは普通にコミットするのですが、コミットログには書き方にコツがあり、コミットログ中に以下のフォーマットでコマンドとIssueのIDを記述します。

<command> <issue id>

IssueのIDは以下のようにいろんな書き方ができるようです。まあでも「#番号」って書いておけばいい気がする。

#4711
issue 4711
bug 4711
ticket 4711

コマンドには以下のようなものがあります。

close/closed/closes/closing/fix/fixed/fixes # Issueをクローズ
reopen/reopens/reopening                    # クローズされているIssueを再開
addresses/re/references/ref/refs/see        # Issueにコメントを追加するだけ

IssueのIDは以下のような感じで複数書いたりすることもできるみたいです。

"... refs bug #4711 and #4712..."

英語の文章に混ぜて書きやすいよう工夫されているようですが、なんだか逆にわかりにくいような気がします…。複数のIssueのIDを書くときにカンマ区切りでもいいのかとか。あと、冒頭でリンクしているBitBucketのドキュメントのコメントにも要望が上がっていますが、コミットログとIssueの連携はデフォルトで有効になってて欲しいですね。

T-Point Viewerを更新しました

T-Point Viewerが以前からT-SITEのスクレイピングに失敗するようになっていたので修正しました。まあ、こんなの使ってる人いないと思いますが、自分用に作ったものなので動かないのも困るので…。

ダウンロードは以下のページから。日付の一番新しいapkパッケージを使用してください。

ADTをバージョンアップしようと思い、Androidアプリの開発環境をIndigoに移行したのですが、どうやらBitBucketに未コミットのソースがあったらしく、2ページ目以降の履歴の表示や、有効期限の表示を実装したソースをうっかり削除してしまったようです…。とりあえず2ページ目以降の履歴を表示する機能は再度実装しましたが、有効期限の表示などはそのうちやります。
しかしADTもバージョンアップして随分進化していますね。画面のレイアウトのプレビュー表示も以前は全然ダメダメで全く参考にならなかったのですがだいぶまともになっていますし、XMLファイルなどに対するエラーチェック(Lint)もかなり細かい部分までチェックしてくれます。