この記事は, 「OSS紹介 Advent Calendar 2017」の9日目の記事です.
空いていたので, 「よし書くか!」と思って勢い良く登録したものの, 良いネタが思い浮かばなかったので, 今回は拙作OSSの機能追加情報を紹介をしたいと思います.
Primus
ちょうど1年くらい前, Primus*1というツールを公開しました.
Primusは,
- Primus Serverが受けたリクエストを...
- WebSocketを通してPrimus Clientに送り...
- Primsu Clientが, 開発者の手元で動くサービスへ同じリクエストを送る
...というツールです*2. Primusを使えば, 例えばLINEやSlackのBotを開発するとき, これらのサービスから送られてくるWebhookをPrimus Serverで受け, そこからPrimus Clientを経由して開発者の手元のマシンに転送することができます.
久々にコードを眺めていた所, Primus Clientがリクエストを送る先が決め打ちになっていて, 不便すぎるのでは? と思ったので, Primus Clientからリクエストを転送する先を設定ファイルで指定できるようにしました. ついでにREADME.mdも整備したり(id:ichigotake さんありがとうございます).
[server] host = "localhost" port = 14300 ssl = false [[Route]] channel = "sample1" host = "localhost" port = 8080 path = "/sample/endpoint"
こういう感じに書くと, Primus Serverの http://localhost:14300/receive/sample1
にリクエストを送った時, そのリクエストと同じリクエストが, http://localhost:8080/sample/endpoint
に送られます. 便利ですね.
今後の展望
- 今は, 「Webhookを受け取って転送する」ことしか出来なくて, 「Webhookを受け取って転送し, その結果であるレスポンスを返す」ことができないので, 出来るようにしたい
- Goの勉強をしながら, まずは動かそうという気持ちで書いているのでGoの流儀に則った良いコードにしていきたい
- 以前, id:codehex さんに手直ししてもらったけれど, 今回の機能追加でいろいろガッとやってしまっている...
といった展望があります. 現状, 「ぜんぜんわからない, 俺は雰囲気でGolangをやっている」という感じなので, ちょっとGoを勉強して慣れてきたという方は実践がてら遠慮なくPull Requestを送りつけて頂けると, 完全に他力本願で申し訳ないのですが, 喜びます(自分もGoの理解深めるところ頑張っていきます...).
感想
機能追加というか, 雑に作りすぎた部分をようやく真っ当にしただけという気もする...?