Я пишу сетевой уровень с Мойей и RxSwift
, ответ сервера JSON, например, так:
{ "code": 200, "msg": "", data: {}}
Я хочу возвращать данные только в случае успеха с кодом, равным 200, возвращать ошибку, если код не равен 200, чтоя должен делать?
Я пытаюсь написать код, подобный этому
extension PrimitiveSequence where TraitType == SingleTrait, ElementType == BaseBean<T: Codable>
Это код объекта ответа:
struct BaseBean<T: Codable> : Codable {
let code: Int
let msg: String
let data: T?
func map() throws -> T {
if code != 200 {
throw ApiError(reason: msg)
}
if data == nil {
throw ApiError(reason: "Empty Data")
}
return data!
}
}
Я ожидаю, что метод вызова будет таким
static func userInfo(params: UserInfoParams) -> Single<UserInfo> {
return provider.rx.request(.userInfo(params: params)).map(BaseBean<UserInfo>).map()
}