📦
【Elixir】connpassのAPI wrapperを作った
先日、connpassに掲載されているElixirの関連イベントを見れるサイトを作りました。
そこで作ったconnpass APIのwrapperを切り出して、ライブラリ化してみたので簡単に紹介します。
使い方
READMEに書いてある通りで、depsに追加して ExConnpass.run/1
に %{query: [keyword: "検索キーワード"]}
のように渡せば検索が可能です。
※ 過度な検索の利用は注意してください。robots.txtを参照するに、5秒以上間隔を空けるのが望ましいです。
iex> ExConnpass.run(%{query: [keyword: "elixir"]})
keyword listに対してconnpass APIで指定可能な検索パラメータを設定して実行できます。
iex> ExConnpass.run(%{query: [series_id: 5294, order: 1, count: 2]})
テストの実装
このようなライブラリを実装するときには「外部APIのテストってどうするのさ?」という課題に当たると思います。
今回はこちらの記事を参考にして、実際のconnpass APIを模したMock Serverを立ててテストを書いてみました。
- test環境のみCowboyサーバーを立てる
- configでAPIのエンドポイントを制御
- test環境では
http://localhost:8081
にリクエストを投げる
という流れで、testの時に本家サイトの方にリクエストが飛ばないようにしています。
MockServerの実装が必要なものの、テストコードがすっきりするため、このやり方はアリだなと思った次第です。
まとめ
細かくライブラリを作ってdeps.getして使って、、というのがサクサクやれるのもElixirのありがたいところです。
test環境だけCowboyサーバーを立てる部分で、mix.exs & application.exの書き方がちょいと怪しいので、読み込んでみたいと思います。
Discussion