Merge pull request #188 from TouchInstinct/feature/validStatusCodes
Add validStatusCodes pararmeter to request methods
This commit is contained in:
commit
09da4ce234
|
|
@ -1,5 +1,9 @@
|
|||
# Changelog
|
||||
|
||||
### 0.9.9
|
||||
- **Add**: `validStatusCodes` parameter to request methods in `NetworkService` class, that expands valid status codes for request.
|
||||
- **Add**: `validStatusCodes` parameter to response methods in `SessionManager` extension, that expands valid status codes for request.
|
||||
|
||||
### 0.9.8
|
||||
- **Add**: `rxDataRequest` method to `NetworkService` class, that performs reactive request to get data and http response.
|
||||
- **Add**: `responseData` method to `SessionManager` extension, that executes request and returns data.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Pod::Spec.new do |s|
|
||||
s.name = "LeadKit"
|
||||
s.version = "0.9.8"
|
||||
s.version = "0.9.9"
|
||||
s.summary = "iOS framework with a bunch of tools for rapid development"
|
||||
s.homepage = "https://github.com/TouchInstinct/LeadKit"
|
||||
s.license = "Apache License, Version 2.0"
|
||||
|
|
|
|||
|
|
@ -55,39 +55,50 @@ open class NetworkService {
|
|||
|
||||
/// Perform reactive request to get mapped ObservableMappable model and http response
|
||||
///
|
||||
/// - Parameter parameters: api parameters to pass Alamofire
|
||||
/// - Parameter decoder: json decoder to decode response data
|
||||
/// - Parameters:
|
||||
/// - parameters: api parameters to pass to Alamofire
|
||||
/// - validStatusCodes: 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> = [],
|
||||
decoder: JSONDecoder = JSONDecoder())
|
||||
-> Observable<SessionManager.ModelResponse<T>> {
|
||||
|
||||
return sessionManager.rx.responseObservableModel(requestParameters: parameters,
|
||||
validStatusCodes: validStatusCodes,
|
||||
decoder: decoder)
|
||||
.counterTracking(for: self)
|
||||
}
|
||||
|
||||
/// Perform reactive request to get mapped ImmutableMappable model and http response
|
||||
///
|
||||
/// - Parameter parameters: api parameters to pass Alamofire
|
||||
/// - Parameter decoder: json decoder to decode response data
|
||||
/// - Parameters:
|
||||
/// - parameters: api parameters to pass to Alamofire
|
||||
/// - validStatusCodes: 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, decoder: JSONDecoder = JSONDecoder())
|
||||
public func rxRequest<T: Decodable>(with parameters: ApiRequestParameters,
|
||||
validStatusCodes: Set<Int> = [],
|
||||
decoder: JSONDecoder = JSONDecoder())
|
||||
-> Observable<SessionManager.ModelResponse<T>> {
|
||||
|
||||
return sessionManager.rx.responseModel(requestParameters: parameters,
|
||||
validStatusCodes: validStatusCodes,
|
||||
decoder: decoder)
|
||||
.counterTracking(for: self)
|
||||
}
|
||||
|
||||
/// Perform reactive request to get data and http response
|
||||
///
|
||||
/// - Parameter parameters: api parameters to pass Alamofire
|
||||
/// - Parameters:
|
||||
/// - parameters: api parameters to pass to Alamofire
|
||||
/// - validStatusCodes: set of additional valid status codes
|
||||
/// - Returns: Observable of tuple containing (HTTPURLResponse, Data)
|
||||
public func rxDataRequest(with parameters: ApiRequestParameters)
|
||||
public func rxDataRequest(with parameters: ApiRequestParameters, validStatusCodes: Set<Int> = [])
|
||||
-> Observable<SessionManager.DataResponse> {
|
||||
|
||||
return sessionManager.rx.responseData(requestParameters: parameters)
|
||||
return sessionManager.rx.responseData(requestParameters: parameters, validStatusCodes: validStatusCodes)
|
||||
.counterTracking(for: self)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,9 +68,11 @@ public extension Reactive where Base: SessionManager {
|
|||
|
||||
/// Method which executes request with given api parameters
|
||||
///
|
||||
/// - Parameter requestParameters: api parameters to pass Alamofire
|
||||
/// - Parameters:
|
||||
/// - requestParameters: api parameters to pass Alamofire
|
||||
/// - validStatusCodes: set of additional valid status codes
|
||||
/// - Returns: Observable with request
|
||||
func apiRequest(requestParameters: ApiRequestParameters)
|
||||
func apiRequest(requestParameters: ApiRequestParameters, validStatusCodes: Set<Int>)
|
||||
-> Observable<DataRequest> {
|
||||
|
||||
let requestObservable: Observable<DataRequest>
|
||||
|
|
@ -104,20 +106,23 @@ public extension Reactive where Base: SessionManager {
|
|||
}
|
||||
|
||||
return requestObservable
|
||||
.map { $0.validate(statusCode: self.base.acceptableStatusCodes) }
|
||||
.map { $0.validate(statusCode: self.base.acceptableStatusCodes.union(validStatusCodes)) }
|
||||
.catchAsRequestError()
|
||||
}
|
||||
|
||||
/// Method that executes request and serializes response into target object
|
||||
///
|
||||
/// - Parameter requestParameters: api parameters to pass Alamofire
|
||||
/// - Parameter decoder: json decoder to decode response data
|
||||
/// - Parameters:
|
||||
/// - requestParameters: api parameters to pass Alamofire
|
||||
/// - validStatusCodes: 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>,
|
||||
decoder: JSONDecoder)
|
||||
-> Observable<SessionManager.ModelResponse<T>> {
|
||||
|
||||
return apiRequest(requestParameters: requestParameters)
|
||||
return apiRequest(requestParameters: requestParameters, validStatusCodes: validStatusCodes)
|
||||
.flatMap {
|
||||
$0.rx.apiResponse(mappingQueue: self.base.mappingQueue, decoder: decoder)
|
||||
.catchAsRequestError(with: $0)
|
||||
|
|
@ -126,14 +131,17 @@ public extension Reactive where Base: SessionManager {
|
|||
|
||||
/// Method that executes request and serializes response into target object
|
||||
///
|
||||
/// - Parameter requestParameters: api parameters to pass Alamofire
|
||||
/// - Parameter decoder: json decoder to decode response data
|
||||
/// - Parameters:
|
||||
/// - requestParameters: api parameters to pass Alamofire
|
||||
/// - validStatusCodes: 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>,
|
||||
decoder: JSONDecoder)
|
||||
-> Observable<SessionManager.ModelResponse<T>> {
|
||||
|
||||
return apiRequest(requestParameters: requestParameters)
|
||||
return apiRequest(requestParameters: requestParameters, validStatusCodes: validStatusCodes)
|
||||
.flatMap {
|
||||
$0.rx.observableApiResponse(mappingQueue: self.base.mappingQueue, decoder: decoder)
|
||||
.catchAsRequestError(with: $0)
|
||||
|
|
@ -142,12 +150,14 @@ public extension Reactive where Base: SessionManager {
|
|||
|
||||
/// Method that executes request and returns data
|
||||
///
|
||||
/// - Parameter requestParameters: api parameters to pass Alamofire
|
||||
/// - Parameters:
|
||||
/// - requestParameters: api parameters to pass Alamofire
|
||||
/// - validStatusCodes: set of additional valid status codes
|
||||
/// - Returns: Observable with HTTP URL Response and Data
|
||||
func responseData(requestParameters: ApiRequestParameters)
|
||||
func responseData(requestParameters: ApiRequestParameters, validStatusCodes: Set<Int>)
|
||||
-> Observable<SessionManager.DataResponse> {
|
||||
|
||||
return apiRequest(requestParameters: requestParameters)
|
||||
return apiRequest(requestParameters: requestParameters, validStatusCodes: validStatusCodes)
|
||||
.flatMap {
|
||||
$0.rx.responseResult(queue: self.base.mappingQueue,
|
||||
responseSerializer: DataRequest.dataResponseSerializer())
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.9.7</string>
|
||||
<string>0.9.9</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.9.7</string>
|
||||
<string>0.9.9</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.9.7</string>
|
||||
<string>0.9.9</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
|
|
|
|||
Loading…
Reference in New Issue