clojure で httpで通信したり、RSSを扱う術

こんにちは。最近、1日0円で過ごせることに気づきました、きたけーです。

今日は、clojureネタでふたつばかし。

httpで通信する

dakrone/clj-http

軽くぐぐってみたかんじ dakrone/clj-http · GitHub がよさそうだった。 READMEみたかぎりだと、必要そうなことはオプションで指定できるし、インターフェイスもきれいだった。

パッケージの追加とか実行の仕方は clojure で ツイートする術 - きたけーTechブログ で書いたので省略します。

POSTメソッドでリクエスト

例えば、ikachanに通知投げる場合はこんなんじ

(ns http-client.core)
(ns http-client.core
  (:require [clj-http.client :as client]))

(defn -main [& args]
  (client/post "http://irc.example.jp:4979/notice" {:form-params {:channel "#test" :message "test"}}))

RSSを扱う

scsibug/feedparser-clj

scsibug/feedparser-clj · GitHub がよさそうだった。 ROMEというJavaRSSライブラリを中で使っているらしい。実装のぞいたけど、ファイル一枚でシンプルだった。

件数とエントリの先頭5件のタイトルを表示
(ns feed_sample.core
  (:require [feedparser-clj.core :as feedparser]))

(defn -main [& args]
  (def feed (feedparser/parse-feed "http://qiita.com/tags/clojure/feed"))
  (println (count (:entries feed)))
  (println (clojure.string/join "\n" (map :title (take 5 (:entries feed)))))
)

所感

clojure、同じ立ち位置のライブラリが乱立していないかんじがするし、ライブラリの質も(ここではインターフェイスという意ですが)よいかんじがする。どの言語にもありそうなライブラリは、大体 ○○-cljclj-○○でみつかる。

進捗: プログラミングclojure、マクロの章まで読み終えた。今週中には読み終えそう。