Refactoring
This commit is contained in:
parent
5088c20e82
commit
b30447e877
|
|
@ -8,6 +8,7 @@
|
|||
- **Add**: `handleMappingError` method to `ObservableType`, `Single`, `Completable` extensions, that handles a mapping error and serialize response to a model.
|
||||
- **Add**: `validate` method to `DataRequest` observable extension, that validates status codes and catch network errors.
|
||||
- **Add**: `dataApiResponse` method to `DataRequest` reactive extension, that serializes response into data.
|
||||
- **Update**: `validStatusCodes` parameter in network methods renamed to `additionalValidStatusCodes`.
|
||||
|
||||
### 0.9.11
|
||||
- **[Breaking change]**: Renamed `NumberFormat`'s `allOptions` to `allCases`
|
||||
|
|
|
|||
|
|
@ -57,16 +57,16 @@ open class NetworkService {
|
|||
///
|
||||
/// - Parameters:
|
||||
/// - parameters: api parameters to pass to Alamofire
|
||||
/// - validStatusCodes: set of additional valid status codes
|
||||
/// - additionalValidStatusCodes: set of additional valid status codes
|
||||
/// - decoder: json decoder to decode response data
|
||||
/// - Returns: Observable of tuple containing (HTTPURLResponse, ObservableMappable)
|
||||
public func rxObservableRequest<T: ObservableMappable>(with parameters: ApiRequestParameters,
|
||||
validStatusCodes: Set<Int> = [],
|
||||
additionalValidStatusCodes: Set<Int> = [],
|
||||
decoder: JSONDecoder = JSONDecoder())
|
||||
-> Observable<SessionManager.ModelResponse<T>> {
|
||||
|
||||
return sessionManager.rx.responseObservableModel(requestParameters: parameters,
|
||||
validStatusCodes: validStatusCodes,
|
||||
additionalValidStatusCodes: additionalValidStatusCodes,
|
||||
decoder: decoder)
|
||||
.counterTracking(for: self)
|
||||
}
|
||||
|
|
@ -75,16 +75,16 @@ open class NetworkService {
|
|||
///
|
||||
/// - Parameters:
|
||||
/// - parameters: api parameters to pass to Alamofire
|
||||
/// - validStatusCodes: set of additional valid status codes
|
||||
/// - additionalValidStatusCodes: set of additional valid status codes
|
||||
/// - decoder: json decoder to decode response data
|
||||
/// - Returns: Observable of tuple containing (HTTPURLResponse, ImmutableMappable)
|
||||
public func rxRequest<T: Decodable>(with parameters: ApiRequestParameters,
|
||||
validStatusCodes: Set<Int> = [],
|
||||
additionalValidStatusCodes: Set<Int> = [],
|
||||
decoder: JSONDecoder = JSONDecoder())
|
||||
-> Observable<SessionManager.ModelResponse<T>> {
|
||||
|
||||
return sessionManager.rx.responseModel(requestParameters: parameters,
|
||||
validStatusCodes: validStatusCodes,
|
||||
additionalValidStatusCodes: additionalValidStatusCodes,
|
||||
decoder: decoder)
|
||||
.counterTracking(for: self)
|
||||
}
|
||||
|
|
@ -93,12 +93,13 @@ open class NetworkService {
|
|||
///
|
||||
/// - Parameters:
|
||||
/// - parameters: api parameters to pass to Alamofire
|
||||
/// - validStatusCodes: set of additional valid status codes
|
||||
/// - additionalValidStatusCodes: set of additional valid status codes
|
||||
/// - Returns: Observable of tuple containing (HTTPURLResponse, Data)
|
||||
public func rxDataRequest(with parameters: ApiRequestParameters, validStatusCodes: Set<Int> = [])
|
||||
public func rxDataRequest(with parameters: ApiRequestParameters, additionalValidStatusCodes: Set<Int> = [])
|
||||
-> Observable<SessionManager.DataResponse> {
|
||||
|
||||
return sessionManager.rx.responseData(requestParameters: parameters, validStatusCodes: validStatusCodes)
|
||||
return sessionManager.rx.responseData(requestParameters: parameters,
|
||||
additionalValidStatusCodes: additionalValidStatusCodes)
|
||||
.counterTracking(for: self)
|
||||
}
|
||||
|
||||
|
|
@ -106,16 +107,16 @@ open class NetworkService {
|
|||
///
|
||||
/// - Parameters:
|
||||
/// - parameters: api upload parameters to pass Alamofire
|
||||
/// - validStatusCodes: et of additional valid status codes
|
||||
/// - additionalValidStatusCodes: set of additional valid status codes
|
||||
/// - decoder: json decoder to decode response data
|
||||
/// - Returns: Observable of model response
|
||||
public func rxUploadRequest<T: Decodable>(with parameters: ApiUploadRequestParameters,
|
||||
validStatusCodes: Set<Int> = [],
|
||||
additionalValidStatusCodes: Set<Int> = [],
|
||||
decoder: JSONDecoder = JSONDecoder())
|
||||
-> Observable<SessionManager.ModelResponse<T>> {
|
||||
|
||||
return sessionManager.rx.uploadResponseModel(requestParameters: parameters,
|
||||
validStatusCodes: validStatusCodes,
|
||||
additionalValidStatusCodes: additionalValidStatusCodes,
|
||||
decoder: decoder)
|
||||
.counterTracking(for: self)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,9 +70,9 @@ public extension Reactive where Base: SessionManager {
|
|||
///
|
||||
/// - Parameters:
|
||||
/// - requestParameters: api parameters to pass Alamofire
|
||||
/// - validStatusCodes: set of additional valid status codes
|
||||
/// - additionalValidStatusCodes: set of additional valid status codes
|
||||
/// - Returns: Observable with request
|
||||
func apiRequest(requestParameters: ApiRequestParameters, validStatusCodes: Set<Int>)
|
||||
func apiRequest(requestParameters: ApiRequestParameters, additionalValidStatusCodes: Set<Int>)
|
||||
-> Observable<DataRequest> {
|
||||
|
||||
let requestObservable: Observable<DataRequest>
|
||||
|
|
@ -106,22 +106,22 @@ public extension Reactive where Base: SessionManager {
|
|||
}
|
||||
|
||||
return requestObservable
|
||||
.validate(statusCodes: self.base.acceptableStatusCodes.union(validStatusCodes))
|
||||
.validate(statusCodes: self.base.acceptableStatusCodes.union(additionalValidStatusCodes))
|
||||
}
|
||||
|
||||
/// Method that executes request and serializes response into target object
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - requestParameters: api parameters to pass Alamofire
|
||||
/// - validStatusCodes: set of additional valid status codes
|
||||
/// - additionalValidStatusCodes: set of additional valid status codes
|
||||
/// - decoder: json decoder to decode response data
|
||||
/// - Returns: Observable with HTTP URL Response and target object
|
||||
func responseModel<T: Decodable>(requestParameters: ApiRequestParameters,
|
||||
validStatusCodes: Set<Int>,
|
||||
additionalValidStatusCodes: Set<Int>,
|
||||
decoder: JSONDecoder)
|
||||
-> Observable<SessionManager.ModelResponse<T>> {
|
||||
|
||||
return apiRequest(requestParameters: requestParameters, validStatusCodes: validStatusCodes)
|
||||
return apiRequest(requestParameters: requestParameters, additionalValidStatusCodes: additionalValidStatusCodes)
|
||||
.flatMap {
|
||||
$0.rx.apiResponse(mappingQueue: self.base.mappingQueue, decoder: decoder)
|
||||
}
|
||||
|
|
@ -131,15 +131,15 @@ public extension Reactive where Base: SessionManager {
|
|||
///
|
||||
/// - Parameters:
|
||||
/// - requestParameters: api parameters to pass Alamofire
|
||||
/// - validStatusCodes: set of additional valid status codes
|
||||
/// - additionalValidStatusCodes: set of additional valid status codes
|
||||
/// - decoder: json decoder to decode response data
|
||||
/// - Returns: Observable with HTTP URL Response and target object
|
||||
func responseObservableModel<T: ObservableMappable>(requestParameters: ApiRequestParameters,
|
||||
validStatusCodes: Set<Int>,
|
||||
additionalValidStatusCodes: Set<Int>,
|
||||
decoder: JSONDecoder)
|
||||
-> Observable<SessionManager.ModelResponse<T>> {
|
||||
|
||||
return apiRequest(requestParameters: requestParameters, validStatusCodes: validStatusCodes)
|
||||
return apiRequest(requestParameters: requestParameters, additionalValidStatusCodes: additionalValidStatusCodes)
|
||||
.flatMap {
|
||||
$0.rx.observableApiResponse(mappingQueue: self.base.mappingQueue, decoder: decoder)
|
||||
}
|
||||
|
|
@ -149,12 +149,12 @@ public extension Reactive where Base: SessionManager {
|
|||
///
|
||||
/// - Parameters:
|
||||
/// - requestParameters: api parameters to pass Alamofire
|
||||
/// - validStatusCodes: set of additional valid status codes
|
||||
/// - additionalValidStatusCodes: set of additional valid status codes
|
||||
/// - Returns: Observable with HTTP URL Response and Data
|
||||
func responseData(requestParameters: ApiRequestParameters, validStatusCodes: Set<Int>)
|
||||
func responseData(requestParameters: ApiRequestParameters, additionalValidStatusCodes: Set<Int>)
|
||||
-> Observable<SessionManager.DataResponse> {
|
||||
|
||||
return apiRequest(requestParameters: requestParameters, validStatusCodes: validStatusCodes)
|
||||
return apiRequest(requestParameters: requestParameters, additionalValidStatusCodes: additionalValidStatusCodes)
|
||||
.flatMap {
|
||||
$0.rx.dataApiResponse(mappingQueue: self.base.mappingQueue)
|
||||
}
|
||||
|
|
@ -164,11 +164,11 @@ public extension Reactive where Base: SessionManager {
|
|||
///
|
||||
/// - Parameters:
|
||||
/// - requestParameters: api upload parameters to pass Alamofire
|
||||
/// - validStatusCodes: set of additional valid status codes
|
||||
/// - additionalValidStatusCodes: set of additional valid status codes
|
||||
/// - decoder: json decoder to decode response data
|
||||
/// - Returns: Observable with HTTP URL Response and target object
|
||||
func uploadResponseModel<T: Decodable>(requestParameters: ApiUploadRequestParameters,
|
||||
validStatusCodes: Set<Int>,
|
||||
additionalValidStatusCodes: Set<Int>,
|
||||
decoder: JSONDecoder)
|
||||
-> Observable<SessionManager.ModelResponse<T>> {
|
||||
|
||||
|
|
@ -179,7 +179,7 @@ public extension Reactive where Base: SessionManager {
|
|||
|
||||
return self.upload(data, urlRequest: urlRequest)
|
||||
.map { $0 as DataRequest }
|
||||
.validate(statusCodes: self.base.acceptableStatusCodes.union(validStatusCodes))
|
||||
.validate(statusCodes: self.base.acceptableStatusCodes.union(additionalValidStatusCodes))
|
||||
.flatMap {
|
||||
$0.rx.apiResponse(mappingQueue: self.base.mappingQueue, decoder: decoder)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue