Merge pull request #186 from TouchInstinct/feature/data_request

Add request method that returns data
This commit is contained in:
Ivan Babkin 2019-02-21 17:46:58 +03:00 committed by GitHub
commit 7cb1ea350b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 33 additions and 3 deletions

View File

@ -1,5 +1,9 @@
# Changelog
### 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.
### 0.9.7
- **Add**: Carthage support.

View File

@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "LeadKit"
s.version = "0.9.7"
s.version = "0.9.8"
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"

View File

@ -79,6 +79,17 @@ open class NetworkService {
decoder: decoder)
.counterTracking(for: self)
}
/// Perform reactive request to get data and http response
///
/// - Parameter parameters: api parameters to pass Alamofire
/// - Returns: Observable of tuple containing (HTTPURLResponse, Data)
public func rxDataRequest(with parameters: ApiRequestParameters)
-> Observable<(response: HTTPURLResponse, data: Data)> {
return sessionManager.rx.responseData(requestParameters: parameters)
.counterTracking(for: self)
}
}
private extension NetworkService {

View File

@ -105,6 +105,7 @@ public extension Reactive where Base: SessionManager {
return requestObservable
.map { $0.validate(statusCode: self.base.acceptableStatusCodes) }
.catchAsRequestError()
}
/// Method that executes request and serializes response into target object
@ -121,7 +122,6 @@ public extension Reactive where Base: SessionManager {
$0.rx.apiResponse(mappingQueue: self.base.mappingQueue, decoder: decoder)
.catchAsRequestError(with: $0)
}
.catchAsRequestError()
}
/// Method that executes request and serializes response into target object
@ -138,7 +138,22 @@ public extension Reactive where Base: SessionManager {
$0.rx.observableApiResponse(mappingQueue: self.base.mappingQueue, decoder: decoder)
.catchAsRequestError(with: $0)
}
.catchAsRequestError()
}
/// Method that executes request and returns data
///
/// - Parameter requestParameters: api parameters to pass Alamofire
/// - Returns: Observable with HTTP URL Response and Data
func responseData(requestParameters: ApiRequestParameters)
-> Observable<(response: HTTPURLResponse, data: Data)> {
return apiRequest(requestParameters: requestParameters)
.flatMap {
$0.rx.responseResult(queue: self.base.mappingQueue,
responseSerializer: DataRequest.dataResponseSerializer())
.map { ($0, $1 as Data) }
.catchAsRequestError(with: $0)
}
}
}