Releases: MLSDev/TRON
Releases · MLSDev/TRON
5.0.0-rc.1
Added
- Better debug prints for
NetworkLoggerPlugin
when decoding usingCodable
protocol. configure(_:)
method forBaseRequest
DSL to allow configuring request with several changes at once.
Breaking
- Plugin API that previously was called with
Alamofire.Data/DownloadResponse<Model, Error>
is now called withAlamofire.Data/DownloadResponse<Model, AFError>
due to Alamofire changes to error handling. performCollectingTimeline(withCompletion:)
method is now called also withAFError
instead ofError
.
5.0.0-beta.5
Added
- Support for per-request Interceptors.
- Three different behaviors for building URLs:
.appendingPathComponent
,.relativeToBaseURL
and.custom
. Those can be set in TRON initializer:
let tron = TRON(baseURL: "https://www.example.com/", buildingURL: .relativeToBaseURL)
Or you can change URLBuilder.Behavior
on per-request basis, using the new DSL:
let request: APIRequest<Int,APIError> = tron.swiftyJSON
.request("status/200")
.buildURL(.relativeToBaseURL)
Default behavior for TRON is .appendingPathComponent
.
Removed
URLBuildable
protocol. Please use different behaviors forURLBuilder
instead.
5.0.0-beta.4
Added
- Support for Swift Package Manager in Xcode 11
- New convenient DSL, that allows to convert this code:
func deleteSession() -> APIRequest<Empty, UnknownError> {
let request : APIRequest<Empty, UnknownError> = tron.codable.request("session")
request.method = .delete
return request
}
into:
func deleteSession() -> APIRequest<Empty, UnknownError> {
return tron.codable.request("session").delete()
}
Read more about other DSL improvements in 5.0 Migration Guide
Changed
URLBuilder
now resolves URL's usingURL(string:relativeTo:)
method, thus allowing more flexible url creation.
5.0.0-beta.3
Added
- Ability to traverse json to any level when using SwiftyJSONDecodable.
Changed
- Improved response serializer behavior for cases where requests were stubbed using URLProtocol.
- TRON 5 requires RxSwift 5 and SwiftyJSON 5
Core
is now a default subspec for CocoaPods installation method. To use SwiftyJSON, add following to Podfile:
pod 'TRON/SwiftyJSON'
4.2.2
- Swift 4.2 version is now specified in podspec for users of CocoaPods 1.6.x.
This is the last release that supports Xcode 9 and Swift 3.
5.0.0-beta.2
Changed
ErrorSerializable
protocol changed to have non-optional initializer and to not acceptserializedObject
. It no longer can be used for additional object validation, but behavior should be more predictable and straightforward -ErrorSerializable
should only be created if somebody (URL loading system, Alamofire or Model serialization) actually reported error.codable
is now a lazy stored property instead of computed property.CodableSerializer
API has been made open to allow easy customization in subclasses.NetworkLoggerPlugin
now has a constructor that allows to easily configure it's behavior.
Breaking
- Properties that worked with
Alamofire.SessionManager
have been renamed tosession
to be in line withAlamofire
renaming ofSessionManager
toSession
.
Removed
TRON.defaultAlamofireManager()
method. TRON initializer now usesAlamofire.Session.default
as a replacement.TRON.processingQueue
property
5.0.0-beta.1
TRON now requires:
- Xcode 10
- Swift 4 and higher
- iOS/tvOS 10 and higher
- watchOS 3 and higher
- macOS 10.12 and higher
Added
- Complete documentation
TRONDataResponseSerializer
andTRONDownloadResponseSerializer
structs to encapsulate serialization of responses using closure.- All test suite now uses
StubbingURLProtocol
to stop tests from sending network requests. Closes #21. - Additional
JSONDecodable
conformances have been added for arithmetic types such asInt8...Int64
,UInt8...64
.
Removed
EmptyResponse
type was replaced withAlamofire.Empty
struct to not interfere withAlamofire.EmptyResponse
protocol.TRON.stubbingShouldBeSuccessful
property since now each stub directly defines it's behavior instead of global setting- Conditional conformance of
Array
toJSONDecodable
- Convenience download methods on
CodableSerializer
andJSONDecodableSerializer
AuthorizationRequirement
enum. Please useAlamofire.RequestAdapter
andSession.adapter
property to adapt request, when additional headers are needed.HeaderBuildable
protocol andHeaderBuilder
types. Please useBaseRequest.headers
property of typeAlamofire.HTTPHeaders
directly.ErrorHandlingDataResponseSerializerProtocol
andErrorHandlingDownloadResponseSerializer
protocol. Now,ErrorModel
on all requests conforms toErrorSerializable
protocol, that contains initializer that allows to create it directly.CodableDownloadParser
andJSONDecodableDownloadParser
, replacement classDownloadSerializer
has been introduced, it allows to create a data model by implementingDownloadResponseSerializerProtocol
Breaking
headers
property ofBaseRequest
now containsHTTPHeaders
type instead of[String: String]
. Please note that along withHeaderBuilder
removal TRON no longer sends 'Accept':'application/json' header by default.APIError
is changed to be able to acceptSerializedObject
and is now a class with nullable initializer. Also,DownloadAPIError
type has been introduced for download errors, that do not haveData
in them, but havefileURL
instead.Plugin
methods that previously acceptedAPIError<ErrorModel>
now acceptErrorModel
directly. AddeddidSuccessfullyParseDownloadResponse
anddidReceiveDownloadResponse
methods.- All concrete implementations of
DataResponseSerializerProtocol
such asCodableParser
andJSONDecodableParser
now have only one generic argument -Model
and are only parsing model type. JSONDecodableParser
andCodableParser
now have only one generic argument -Model
, sinceErrorModel
is now moved toErrorSerializable
protocol, that does not depend on any particular serializer.APIStub
has been rewritten from scratch to allow injecting only results of network request(URLRequest
,HTTPURLResponse
,Data
,Error
andfileURL
) as opposed to actualModel
anderrorModel
as well as definition of successful/unsuccessful requests.APIStub
now is been attached toAlamofire.Request
when stubbing for this particular request has been enabled. Rewrite also allows plugin callbacks to be called more consistently for both stubbed and unstubbed cases.rxMultipartResult
method onUploadRequest
method was removed sinceUploadRequest
for multipart requests in Alamofire 5 is now synchronous and now does not require special handling. You can now callrxResult
replacement method instead.
4.2.0
- Implemented
JSONDecodable
support for Arrays, whose Element is JSONDecodable. Requires Swift 4.1 to work.
4.1.2
- Improved output of
NetworkLoggerPlugin
, which now includes status codes, HTTP body contents, and some emojis 🚀
4.1.1
- Allow
EmptyResponse
to be used with CodableParser when network response does not contain valid JSON.