Firebase HTTPS callable function を試してみる に使い方は書いたが、素のまま SDK を使うのは厳しいので APIKit っぽく Endpoint を定義できていい感じに Function を叩けるようなライブラリを作った。
endpoint の path
と Decodable な Response
を定義して、必要なら parameter
をセットすると動く。
(APIKit の Request っぽい感じ)
import Callable struct SampleResponse: Decodable { let name: String } struct Sample: Callable { typealias Response = SampleResponse let name: String init(name: String) { self.name = name } var path: String { return "httpcallable" } var parameter: [String: Any]? { return ["name": name] } }
使う側はこうなる、返り値は Result。
let sample = Sample(name: "Jobs") sample.call { result in switch result { case .success(let resonse): print(resonse) case .failure(let error): print(error) } }
エラー
エラーは 3 パターン定義していて
- function(Error)
- Cloud Functions から返ってくる素のエラー
- decode(Error)
- Decodable で失敗した
- illegalCombination(Any?, Error?)
というのを用意している。まだ作ってみただけで実運用していないので、増やすかもしれない。
終わり
という感じで、 Endpoint を定義して、 Response は Decodable でいい感じに書けるようになった。
尚、テストはない...。