hatena-bookmarkの修正

服部さん作のhatena-bookmark-modeを使ってみようと思ったら、一覧の取得からまったくできなくてこまった。
調べてみるとエントリポイントからもらえるservice.postとかservice.feedのURLが相対URLになっているらしく、情報を取りにいけていなかった。サービス提供元見るのが確実だろうと思って、はてなブックマーク AtomAPIの情報を確認した。
http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%D6%A5%C3%A5%AF%A5%DE%A1%BC%A5%AFAtomAPI

ところがどっこい、ここにあるレスポンスには絶対URLが返されるように書いてあるじゃん!どーいうこと?
仕方が無いので相対URLに対応するパッチを作成

@@ -142,7 +142,7 @@

 (in-package "editor")

-(defvar *hatena-bookmark-endpoint* "http://b.hatena.ne.jp/atom")
+(defvar *hatena-bookmark-endpoint* "http://b.hatena.ne.jp/")

 (defvar *hatena-bookmark-basedir* "~/.hatena")
 (defvar *hatena-bookmark-account-file*
@@ -227,7 +227,7 @@
  )

 (defun hatena-bookmark-get-root (username password)
- (atomm::atomm-get-root *hatena-bookmark-endpoint*
+  (atomm::atomm-get-root (format nil "~A~A" *hatena-bookmark-endpoint* "atom")
                       username
                       password))

@@ -274,9 +274,13 @@
           (links (cdr (car root))))
       (setf (hatenab_acc-title hatenab_acc) title)
       (setf (hatenab_acc-service.post hatenab_acc)
-             (cdr (assoc "service.post" links :test #'equal)))
+             (format nil "~A~A"
+                     *hatena-bookmark-endpoint*
+                     (cdr (assoc "service.post" links :test #'equal))))
       (setf (hatenab_acc-service.feed hatenab_acc)
-             (cdr (assoc "service.feed" links :test #'equal)))
+             (format nil "~A~A"
+                     *hatena-bookmark-endpoint*
+                     (cdr (assoc "service.feed" links :test #'equal))))
       hatenab_acc))))

 (defun hatena-bookmark-account-load ()

これで一覧が取得できた。良かった良かった。