Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

SendGridからTシャツ贈ってもらった話

わーい、アメリカから贈られてきた(*´▽`*)

f:id:kikutaro777:20160719193455j:plain

SendGrid Web API v3

クラウドメール配信サービスのSendGridから先月、Web API v3がリリースされました。
以下のドキュメントページにもあるように、RESTfulな形で操作できるので、curlなどからでもメール送信できます。データもJSONベース。

API v3 Overview - SendGrid Documentation | SendGrid

これに伴って、言語ごとに開発されていたライブラリもバージョンアップしています。
が、残念ながらbreaking changeとのこと。

また、以下ページにもあるように、現在、日本語というかマルチバイト文字が化けてしまったりするバグがあり、当面v2対応のライブラリが推奨のようです。
support.sendgrid.kke.co.jp

v3がリリースされた後、ライブラリを利用せずにWeb APIをFiddlerとかで叩いていたのですが、自分が送ってた範囲では日本語は文字化けしていませんでした。

ので、ライブラリ側に問題があるのかな?と興味本位にJavaコードをみていきました。

sendgrid-java/java-http-client

SendGridのJavaライブラリは主に以下2つ

ベースにはApache HttpComponents(HttpCore,HttpClientの4系)が使われています。

Apache HttpComponents - Apache HttpComponents

余談ですが、JavaのHttpClient調べてるとめっちゃかずひらさんのページでてくるw

JavaでのHttpClientサンプル - CLOVER
JavaでのHttpClientサンプル その2 - CLOVER

で、SendGridのコードを色々追ってると、文字コードはUTF-8にしてるのですが、POSTするデータには適用してるけど、レスポンスでは適用していない形になってたりと中途半端な感じでした(^^;
これレスポンスもちゃんとUTF-8にすれば文字化けなくなるんじゃ、、と試したら、文字化けがなくなりました。で、せっかくなのでissueを切って、プルリクしてみました。

SendGridへのコントリビュート

SendGridにプルリクするにはCLA/CCLA*1なるものにサインする必要があります。GitHubみてると、プルリク先に送って「マージするからCLA送ってー」みたいなやりとりも多々あるっぽいですが、先に書いとくのが無難かと。

難しいものではなく、以下Contributingの説明ページにあるリンクからPDFを落として、英語で名前や住所・メールなど書くだけです。

github.com

こういうの手書きがいいの…?とか思って自分は手書きしたのをPDF化して送りましたが、今考えると普通にPDFを編集しても問題ない気が(^^;

まだプルリクはマージされてないのですが、「ありがとう!Tシャツ送るからサイズ教えて」みたいになって、贈ってくれました。大した修正したわけではないのだけど(^^;;;

なお、マルチバイトの問題はライブラリ側だけではなく、サーバサイド側でも若干問題があるようですので、やはり暫くはv2を使うのが無難そうです。

Javaのライブラリ、コードみてると、結構気になるところがあります(^^;;というかぶっちゃけ雑な気がw
コツコツ触るか、いっそ自分でライブラリ作りたいなーと。

*1:CLA = Contributor License Agreement、CCLA = Company Contributor Licensing Agreement

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村