Firebase HTTPS Callable Functions を type-safe に叩けるライブラリ

Firebase HTTPS callable function を試してみる に使い方は書いたが、素のまま SDK を使うのは厳しいので APIKit っぽく Endpoint を定義できていい感じに Function を叩けるようなライブラリを作った。

github.com

endpoint の pathDecodable な 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?)
    • result も error もどちらも返ってきた or どちらも nil
    • 注意 に書いたが、無が返ってくることがある

というのを用意している。まだ作ってみただけで実運用していないので、増やすかもしれない。

終わり

という感じで、 Endpoint を定義して、 Response は Decodable でいい感じに書けるようになった。

尚、テストはない...。