Я пытаюсь реализовать функцию, которая обрабатывает ошибки сети и API, моя проблема заключается в том, как снова генерировать наблюдаемое после filterSuccessfulStatusCodes ().Основная проблема, с которой я столкнулся, заключается в том, что я не уверен в правильности этого подхода после первой подписки.
Текущая ошибка в этом коде: дополнительный аргумент 'onError' в вызове
func Request<T: Decodable>(_ request: APIManager) ->
Observable<Result<T>> {
provider.rx
.request(request)
.subscribe(onSuccess: { (response) in
try response.filterSuccessfulStatusCodes()
return Observable.just(response)
.subscribe { event in
switch event {
case .success:
.map(RequestResponse<T>.self)
.map { $0.result! }
.asObservable()
.map(Result.success)
.catchError { error in
return .just(.error(withMessage: "Error \(error)"))
}
case .error:
print("error")
}
}
}, onError: { (error) in
print("network request error")
}, onCompleted: {
print("network request on completed")
}).disposed(by: disposeBag)
}
struct RequestResponse<T: Decodable> {
let statusCode: Int
let statusMessage: String
let success: Bool
let result: T?
let errorBag: String?
}
enum Result<T: Decodable> {
case success(T)
case error(withMessage: String)
}