次のように、認証されたリクエストを非同期的に作成する OAuth フレームワークを使用します。
OAuthSession.current.makeAuthenticatedRequest(request: myURLRequest) { (result: Result<URLRequest, OAuthError>) in
switch result {
case .success(let request):
URLSession.shared.dataTask(with: request) { (data, response, error) in
// ...
}
// ...
}
}
OAuth フレームワークで Combine を使用するようにしようとしているので、Publisher バージョンのmakeAuthenticatedRequest
メソッドがあることがわかっています。
public func makeAuthenticatedRequest(request: URLRequest) -> AnyPublisher<URLRequest, OAuthError>
これを使用して、上記の呼び出しサイトを次のように置き換えようとしています:
OAuthSession.current.makeAuthenticatedRequestPublisher(request)
.tryMap(URLSession.shared.dataTaskPublisher(for:))
.tryMap { (data, _) in data } // Problem is here
.decode(type: A.self, decoder: decoder)
上記のように、問題はパブリッシャーの結果を新しいパブリッシャーに変換することにあります。どうすればこれを行うことができますか?