#:g1: cl-gravatarの紹介

Posted 2014-04-05 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の96日目です。

cl-gravatarとはなにか

 cl-gravatarは、GravatarをCommon Lispから利用するライブラリです。

パッケージ情報

パッケージ名cl-gravatar
Quicklisp
Quickdocshttp://quickdocs.org/cl-gravatar

インストール方法

(ql:quickload :gravatar)

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

 開発は2011年頃でストップしているようで、今では上手く動かない所が散見されますが下記の修正で動くようになります。

 alist-to-url-encoded-stringは

(defun alist-to-url-encoded-string (alist xfmt)
  (drakma::alist-to-url-encoded-string alist xfmt #'drakma:url-encode))

とでもしておきます。

 公開されていない関数を外部から利用する場合について、Common Lispでは特に作法的なものはありませんが、公開されていないからには変更されても致し方ないところはあります。
今回のように引数の数や順番が変更になる可能性もあるので、公開されていない関数を利用する場合は、そのまま使うより何らかの形でラップした方が良さそうです。

 次に、gravatar::hashは、md5:md5sum-sequenceを利用するのではなく、md5:md5sum-stringを利用するように変更します

(defun hash (email)
  (string-downcase (format nil "~{~2,'0X~}"
                           (coerce (md5:md5sum-string
                                    (string-downcase (string-trim '(#space)
                                                                  email)))
                                   'list))))

 以上で使えるようになるので試してみます。

(gravatar:image-url "lomilwa@example.com")
;=>  #<PURI:URI https://secure.gravatar.com/avatar/771bc9db2d03de6dd1d0a37c272a0d74
(gravatar:qr-code-url "lomilwa@example.com")
;=>  #<PURI:URI https://secure.gravatar.com/771bc9db2d03de6dd1d0a37c272a0d74.qr>
(gravatar:profile-url "lomilwa@example.com" nil)
;=>  #<PURI:URI https://secure.gravatar.com/771bc9db2d03de6dd1d0a37c272a0d74.json>

まとめ

 今回は、cl-gravatarを紹介してみました。
どうもウェブサービスのAPIは更新が激しいので、動かないライブラリに遭遇しがちです。

comments powered by Disqus