朝6時に目が覚めたら意識が高かったので、ISHTTPOperationに欲しかった機能をつけてリリースしました。
ISHTTPOperation

 

ISHTTPOperationは特徴のあるライブラリではなくて、単純に非同期のNSURLConnectionをラップするNSOperationです。 こういったライブラリはたくさんあって、いわゆる車輪の再発明なのですが、わざわざ自分で作っているのには理由があります。 理由の1つは多くの通信ライブラリは機能が多すぎるため、大量の不要なコードをプロジェクトに導入することになってしまうからです。 もう1つはNSURLConnectionをNSOperationで正しくラップするときにはミスしやすい箇所が多いので、 シンプルなライブラリであってもキャンセルなどの目立ちにくい動作に不具合を出しやすいからです。

かわったところ

  • テストにスタブサーバーを利用する
  • Travis CIとCoverallsを利用して品質(?)を表示
  • NSPredicateを利用してキャンセル

元々、3つ目のキャンセル機構をつけたかったのですが、 最近はiOSのライブラリだってTravis CIとかCoverallsとか使うべきという話だったので、 その辺りにも手を入れてみたらテストがださかったのでテストも直したという感じです。 それと、せっかくここまでやったんだからと思ってCocoaPodsにもpull requestを送っておきました。

NSPredicateでキャンセルというのは以下のような感じです。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"request.HTTPMethod MATCHES %@", @"GET"];
[[ISHTTPOperationQueue defaultQueue] cancelOperationsUsingPredicate:predicate];

よく使いそうなやつには以下のようなショートカットも用意しました。

[[ISHTTPOperationQueue defaultQueue] cancelOperationsWithHTTPMethod:@"GET"];