14

次のように、認証されたリクエストを非同期的に作成する 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)

上記のように、問題はパブリッシャーの結果を新しいパブリッシャーに変換することにあります。どうすればこれを行うことができますか?

4

1 に答える 1