Skip to content

Latest commit

 

History

History
1209 lines (1075 loc) · 64.7 KB

CHANGELOG.md

File metadata and controls

1209 lines (1075 loc) · 64.7 KB

Change Log

All notable changes to this project will be documented in this file. Alamofire adheres to Semantic Versioning.

3.x Releases

2.x Releases

1.x Releases


Released on 2016-02-27. All issues associated with this milestone can be found using this filter.

Updated

  • StringResponseSerializer implementation to build with the latest Swift toolchain.
  • Expanded the Component Libraries section and moved it up in the README.

Fixed

  • Issue where JSON and plist custom content types were not retained during parameter encoding.

Released on 2016-02-07. All issues associated with this milestone can be found using this filter.

Added

  • Notifications that post when an NSURLSessionTask changes state to allow support for the network activity indicator.
  • Timeline struct to capture timings throughout the lifecycle of a Request.
  • A new Timeline section to the README.
  • NetworkReachabilityManager to listen for reachability status changes.
  • Unit tests for all the testable network reachability manager APIs.
  • A new Network Reachability section to the README.

Updated

  • The NSURLSessionStream APIs to support tvOS.
  • The ParameterEncoding encode method to allow empty parameters to still be encoded.

Fixed

  • Broken CocoaDocs generation by moving iOS Example project into Examples folder.

Released on 2016-01-17. All issues associated with this milestone can be found using this filter.

Added

  • Package.swift to the project to support Swift Package Manager (SPM).
  • Safeguards to the Request class's debugDescription property.

Updated

  • Accept-Language header generation to use functional style.
  • Accept-Encoding and Accept-Language header values to have separator spaces between values.
  • Copyright headers to include 2016! 🎉🎉🎉

Released on 2015-12-16. All issues associated with this milestone can be found using this filter.

Added

  • NSTemporaryExceptionMinimumTLSVersion documentation to the ATS section in the README.
  • Added ReleaseTest configuration to allow running tests against optimized build.

Updated

  • Carthage instructions in the README to clearly callout the carthage update command.
  • ParameterEncoding to early out when passed an empty parameters dictionary.
  • The certificatesInBundle to support cer, crt and der extensions.
  • The ENABLE_TESTABILITY flag to NO for Release configuration and disabled tests for non-test builds to better support Carthage.
  • The server certificates for the TLS tests and added all certificates to all test targets.
  • The Travis-CI configuration to Xcode 7.2, iOS 9.2, tvOS 9.1 and watchOS 2.1.

Removed

  • SecCertificate array Swift workaround in ServerTrustPolicy for Xcode 7.2.

Released on 2015-11-22. All issues associated with this milestone can be found using this filter.

Added

  • Custom Info.plist for tvOS setting the UIRequiredDeviceCapabilities to arm64.

Updated

  • All code samples in the README to use https instead of http.

Released on 2015-11-06. All issues associated with this milestone can be found using this filter.

Updated

  • Code signing on iOS simulator builds to not sign simulator builds.
  • Code signing on watchOS and tvOS simulators builds to not sign simulator builds.

Released on 2015-10-31. All issues associated with this milestone can be found using this filter.

Added

  • Support for 204 response status codes in the response serializers.
  • ATS section to the README explaining how to configure the settings.

Updated

  • Several unnecessary uses of NSString with String.
  • Content type validation to always succeeds when server data is nil or zero length.

Removed

  • The mention of rdar://22307360 from the README since Xcode 7.1 has been released.
  • An unnecessary availability check now that Xcode 7.1 is out of beta.
  • The playground from the project due to instability reasons.
  • The data length checks in the responseData and responseString serializers.

Released on 2015-10-22. All issues associated with this milestone can be found using this filter.

Added

  • New tvOS framework and test targets to the project.
  • The tvOS deployment target to the podspec.
  • The BITCODE_GENERATION_MODE user defined setting to tvOS framework target.

Updated

  • The README to include tvOS and bumped the required version of Xcode.
  • The default tvOS and watchOS deployment targets in the Xcode project.
  • The APPLICATION_EXTENSION_API_ONLY enabled flag to YES in the tvOS framework target.
  • The Travis-CI yaml file to run watchOS and tvOS builds and tests on xcode7.1 osx_image.

Released on 2015-10-19. All issues associated with this milestone can be found using this filter.

Added

  • Tests around content type validation with accept parameters.

Fixed

  • Content type validation issue where parameter parsing on ; was incorrect.

Released on 2015-10-10. All issues associated with this milestone can be found using this filter.

Updated

  • Downloading a File code sample in the README to compile against Swift 2.0.
  • Download code samples in the README to use response serializer.
  • CocoaPods and Carthage installation instructions for 3.0.
  • Carthage description and installation instructions in the README.
  • URL encoding internals to leverage the dictionary keys lazy evaluation.

Fixed

  • Small typo in the Alamofire 3.0 Migration Guide Response section.
  • User defined BITCODE_GENERATION_MODE setting for Carthage builds.

Released on 2015-09-27. All issues associated with this milestone can be found using this filter.

Updated

  • The Response initializer to have a public ACL instead of internal.

Released on 2015-09-26. All issues associated with this milestone can be found using this filter.

Added

  • Tests around the header behavior for redirected requests.
  • A migration guide for Alamofire 3.0 documenting all API changes.

Updated

  • Response initializer to have internal ACL.
  • All sample code in the README to conform to the Alamofire 3.0 APIs.
  • URL percent escaping to only batch on OS's where required improving overall performance.
  • Basic auth example in the README to compile on Swift 2.0.

Fixed

  • Compiler errors in the playground due to the new response serializer APIs.

Released on 2015-09-21. All issues associated with this milestone can be found using this filter.

Added

  • A new Response struct to simplify response serialization.
  • A new initializer to the Manager allowing dependency injection of the underlying NSURLSession.
  • Tests around the new Manager initialization methods.

Updated

  • Result type to take two generic parameters (Value and Error) where Error conforms to ErrorType.
  • All response serializers to now return the original server data as NSData?.
  • The TaskDelegate to store an error as an NSError instead of ErrorType.
  • The ValidationResult failure case to require an NSError instead of ErrorType.
  • All tests around response serialization and Result type usage.
  • All response serializers to use the new Response type.
  • The designated initializer for a Manager to accept a SessionDelegate parameter allowing dependency injection for better background session support.

Released on 2015-09-20. All issues associated with this milestone can be found using this filter.

Updated

  • The Embedded Framework documentation to include git init info.

Fixed

  • Alamofire iOS framework target by adding Alamofire iOS Tests as Target Dependency.
  • Percent encoding issue for long Chinese strings using URL parameter encoding.

Released on 2015-09-16. All issues associated with this milestone can be found using this filter.

Updated

  • The CocoaPods installation instructions in the README.
  • The Carthage installation instructions in the README.

Fixed

  • The link to the 2.0 migration guide in the README.
  • Issue where NTLM authentication credentials were not used for authentication challenges.

Released on 2015-09-09. All issues associated with this milestone can be found using this filter.

Added

  • A new URLEncodedInURL case to the ParameterEncoding for encoding in the URL.

Released on 2015-09-06. All issues associated with this milestone can be found using this filter.

Added

  • The parameters and encoding parameters to download APIs.
  • Section to the README about wildcard domain matching with server trust policies.
    • Added by Sai in Pull Request #718.
  • A UTF-8 charset to Content-Type header for a URL encoded body.
  • Tests around posting unicode parameters with URL encoding.
  • Tests for uploading base 64 encoded image data inside JSON.
  • An Alamofire 2.0 migration guide document to the new Documentation folder.
  • A Migration Guides section to the README with link to 2.0 guide.

Updated

  • Response serialization to prevent unnecessary call to response serializer.
  • Travis-CI yaml file to support iOS 9, OSX 10.11 and Xcode 7.
  • Result types to store an ErrorType instead of NSError.
  • Docstrings on the download method to be more accurate.
  • The README to require Xcode 7 beta 6.
  • The background session section of the README to use non-deprecated API.
  • The playground to use the Result type.
  • Updated progress code samples in the README to show how to call onto the main queue.

Removed

  • The AFNetworking sections from the FAQ in the README.

Fixed

  • Issue on Windows where the wildcarded cert name in the test suite included asterisk.
  • Crash when multipart form data was uploaded from in-memory data on background session.
  • Issue where the background session completion handler was not called on the main queue.

Released on 2015-08-25.

Removed

  • The override for NSMutableURLRequest for the URLRequestConvertible protocol conformance that could cause unwanted URL request referencing.

Released on 2015-08-24. All issues associated with this milestone can be found using this filter.

Added

  • Host and certificate chain validation section to the README.
  • Tests verifying configuration headers are sent with all configuration types.
  • New rdar to the list in the README about the #available check issue.
  • Override for NSMutableURLRequest for the URLRequestConvertible protocol.

Updated

  • The README to note that CocoaPods 0.38.2 is required.
  • The README to include note about keeping a reference to the Manager.
  • Server trust host validation over to use SSL policy evaluation.
  • The documentation for the URLRequestConvertible section in the README.
  • The ServerTrustPolicyManager to be more flexible by using public ACL.
  • The ServerTrustPolicyManager policies property to use public ACL and added docstrings.
  • The Ono response serializer example for Swift 2.0 in the README.
  • Result failure case to store an ErrorType instead of NSError.
  • All source code to compile with Xcode 7 beta 6.

Removed

  • The required declaration on the Manager init method.

Fixed

  • Issue where the TaskDelegate operation queue would leak if the task was never started.
  • Compiler issue on OS X target when creating background configurations in the test suite.

Released on 2015-08-10. All issues associated with this milestone can be found using this filter.

Added

  • A watchOS deployment target to the podspec.
  • Full screen support in the iOS Example App.
  • Temporary workaround for SecCertificate array compiler crash.
  • Result and Error types to refactor response validation and serialization.
  • Tests around response data, string and json serialization result behavior.
  • CustomStringConvertible and CustomDebugStringConvertible conformance to the Result enumeration.
  • A Resume Data section to the README inside the Downloads section.
  • A watchOS framework target to the project.
  • Result tests pushing code coverage for Result enum to 100%.
  • Tests around all response serializer usage.
  • Public docstrings for all public SessionDelegate methods.
  • A section to the README that calls out all open rdars affecting Alamofire.
  • Test for wildcard validation that contains response with nil MIME type.
  • Support for stream tasks in iOS 9+ and OSX 10.11+.

Updated

  • All logic to compile against Swift 2.0.
  • All logic to use the latest Swift 2.0 conventions.
  • All public docstrings to the latest Swift 2.0 syntax.
  • URLRequestConvertible to return an NSMutableURLRequest.
  • All HTTP requests to HTTPS to better align with ATS.
  • The escape method in ParameterEncoding to use non-deprecated methods.
  • All source code and docstrings to fit roughly within 120 characters.
  • The MultipartFormData encoding to leverage Swift 2.0 error handling.
  • All README code samples to match the latest Swift 2.0 API changes.
  • All frameworks to enable code coverage generation.
  • All frameworks to set the enable testability flag to YES for release builds.
  • ParameterEncoding to leverage guard for parameters to increase safety.
  • iOS Example App to use optional bind around response to safely extract headers.
  • The queryComponents and escape methods in ParameterEncoding to public to better support .Custom encoding.
  • The static error convenience functions to a public ACL.

Removed

  • Explicit string values in ParameterEncoding since they are now implied.
  • An OSX cookie check in the CustomDebugStringConvertible conformance of a Request.

Fixed

  • Issue in automatic validation tests where mutable URL request was not used.
  • Potential crash cases in Validation MIME type logic exposed by chaining.
  • Compiler issue in the iOS Example App around Result type usage.
  • The error code in the custom response serializers section of the README.

Released on 2015-08-10. All issues associated with this milestone can be found using this filter.

Fixed

  • Issue where a completed task was not released by the SessionDelegate if the task override closure was set.

Released on 2015-07-24. All issues associated with this milestone can be found using this filter.

Added

  • Test case around NSURLProtocol checking header passthrough behaviors.
  • Stream method on Request to receive data incrementally from data responses.
  • Example to the README demonstrating how to use the responseCollection serializer.
  • Link to the README to the CocoaDocs documentation for Alamofire.
  • Support for uploading MultipartFormData in-memory and streaming from disk.
  • Tests for uploading MultipartFormData with complete code coverage.
  • The iOS 8.4 simulator to the Travis CI builds by switching to the Xcode 6.4 build.
  • Tests for the custom header support with complete code coverage.
  • Section to the README about new HTTP header support in the global functions.
  • Basic auth Authorization header example to the README.
  • TLS certificate and public key pinning support through the ServerTrustPolicy.
  • Tests for TLS certificate and public key pinning with complete code coverage.
  • Security section to the README detailing various server trust policies.
  • The resumeData property to Request to expose outside data response serializer.
  • Download request sample to iOS example app.

Updated

  • The INFOPLIST_FILE Xcode project setting to be a relative path.
  • Exposed persistence parameter for basic auth credentials.
  • The Travis CI builds to run a full pod lib lint pass on the source.
  • All cases of force unwrapping with optional binding and where clause when applicable.
  • The ParameterEncoding encode return tuple to return a mutable URL request.
  • The URLRequest convenience method to return a mutable NSURLRequest.
  • The request / download / upload methods to support custom headers.
  • The global request / download / upload method external parameters convention.
  • Response serialization to use generics and a ResponseSerializer protocol.
  • Download task delegate to store resume data for a failed download if available.
  • The TaskDelegate.queue to public to allow custom request extension operations.
  • The README code samples for Advanced Response Serialization.

Removed

  • An unnecessary NSURLSessionConfiguration type declaration that can be inferred.
  • Unnecessary respondsToSelector overrides for SessionDelegate methods.
  • Unnecessary calls to self throughout source, test and example logic.

Fixed

  • Random test suite basic auth failures by clearing credentials in setUp method.
  • Error where wildcard was failing due to missing response MIME type.
  • Typo in the basic auth headers example code in the README.
  • Issue where the example app was printing elapsed time in optional form.

Upgrade Notes

There are a couple changes in the 1.3.0 release that are not fully backwards compatible and need to be called out.

  • The global request / download / upload external parameter naming conventions were not consistent nor did they match the Manager equivalents. By making them consistent across the board, this introduced the possibility that you "may" need to make slight modifications to your global function calls.

  • In order to support generic response serializers, the lowest level Request.response method had to be converted to a generic method leveraging the new ResponseSerializer protocol. This has many advantages, the most obvious being that the response convenience method now returns an NSData? optional instead of an AnyObject? optional. Nice!

    Please note that every effort is taken to maintain proper semantic versioning. In these two rare cases, it was deemed to be in the best interest of the community to slightly break semantic versioning to unify naming conventions as well as expose a much more powerful form of response serialization.

    If you have any issues, please don't hesitate to reach out through GitHub or Twitter.


Released on 2015-06-12. All issues associated with this milestone can be found using this filter.

Added

  • Tests for data task progress closure and NSProgress updates.
  • More robust tests around download and upload progress.
  • More robust redirect tests around default behavior and task override closures.
  • The "[" and "]" to the legal escape characters and added more documentation.
  • Percent escaping tests around reserved / unreserved / illegal characters.
  • Tests for various Cache-Control headers with different request cache policies.
  • Link to Carthage in the README.

Updated

  • iOS 7 instructions to cover multiple Swift files in the README.
  • All tests to follow the Given / When / Then structure.
  • All tests to be crash safe.
  • The OS X tests so that they are all passing again.
  • Re-enabled Travis-CI tests for both iOS and Mac OS X.
  • Travis-CI test suite to run all tests in both debug and release.
  • Travis-CI test suite to run all tests on iOS 8.1, 8.2 and 8.3 as well as Mac OS X 10.10.
  • Travis-CI test suite to run pod lib lint against the latest version of CocoaPods.

Fixed

  • Random deinitialization test failure by handling task state race condition.
  • Typo in the API Parameter Abstraction in the README.
  • Cookies are now only applied in the DebugPrintable API when appropriate.

Released on 2015-05-13. All issues associated with this milestone can be found using this filter.

Added

  • Contributing Guidelines document to the project.
  • Documentation to the URLStringConvertible protocol around RFC specs.
  • The Carthage/Build ignore flag to the .gitignore file.
  • The .DS_Store ignore flag to the .gitignore file.
  • Response status code asserts for redirect tests.
  • A CHANGELOG to the project documenting each official release.

Updated

  • SessionDelegate override closure properties to match the method signatures.
  • Documentation for the Printable protocol on Request to reference output stream rather than the specific OutputStreamType.
  • Deployment targets to iOS 8.0 and OS X 10.9 for the respective frameworks.
  • SessionDelegate willPerformHTTPRedirection method to accept optional return type from override closure.
  • Embedded Framework and Source File documentation in the README.
  • Alamofire source to be split into multiple core files and feature files.
  • TaskDelegate override closure signatures and delegate method implementations.

Removed

  • Travis-CI build status from the README until Xcode 6.3 is supported.
  • Unnecessary parentheses from closure parameters and typealiases.

Fixed

  • SessionDelegate override closure documentation.
  • Some inaccurate documentation on several of the public SessionDelegate closures.
  • A deinit race condition where the task delegate queue could fail to dispatch_release.
  • TaskDelegate to only set qualityOfService for NSOperationQueue on iOS 8+.
  • Expectation order issue in the redirect tests.
  • DataTaskDelegate behavior ensuring NSProgress values and progress override closures are always updated and executed.

Released on 2015-04-21.

Added

  • Redirect tests for the SessionDelegate.
  • TLS evaluation test case.
  • Additional guards to ensure unique task identifiers for upload and download tasks.

Updated

  • Required Xcode version to Xcode to 6.3 in the README.
  • SSL validation to use default system validation by default.

Released on 2015-04-09.

Added

  • New testURLParameterEncodeStringWithSlashKeyStringWithQuestionMarkValueParameter test.
  • New backgroundCompletionHandler property to the Manager called when the session background tasks finish.

Updated

  • Request computed property progress to no longer be an optional type.
  • All logic to Swift 1.2.
  • The responseString serializer to respect server provided character encoding with overrideable configuration, default string response serialization to ISO-8859-1, as per the HTTP/1.1 specification.
  • SessionDelegate methods to first call the override closures if set.
  • SessionDelegate and all override closures to a public ACL allowing for customization.
  • SessionDelegate class to final.
  • SessionDelegate header documentation for method override properties.
  • Xcode project to set APPLICATION_EXTENSION_API_ONLY to YES for OS X target.

Removed

  • Ambiguous response serializer methods that collided with default parameters.
  • SessionDelegate initializer and replaced with default property value.

Fixed

  • Async tests where asserts were potentially not being run by by moving expectation.fullfill() to end of closures.
  • Small grammatical error in the ParameterEncoding section of the README.
  • Typo in a download test comment.
  • Signature mismatch in the dataTaskDidBecomeDownloadTask override closure.
  • Issue in the SessionDelegate where the DataTaskDelegate was not being called.

Released on 2015-03-26.

Added

  • Convenience upload functions to the Manager.
  • Info to the README about Swift 1.2 support.

Updated

  • All request / upload / download methods on Manager to match the top-level functions.
  • The testDownloadRequest to no longer remove the downloaded file.
  • Ono XML response serializer example in the README.
  • Travis-CI settings to only build the master branch.
  • Code signing identities for the frameworks and targets to better support Carthage.
  • iOS deployment target to iOS 8.0 for iOS target and tests.
  • Legal characters to be escaped according to RFC 3986 Section 3.4.

Fixed

  • Travis-CI scheme issue, added podspec linting and added ENV variables.
  • Code sample in the README in the Manual Parameter Encoding section.

Released on 2015-01-30.

Added

  • Podspec argument requires_arc to the podspec file.
  • Support for Travis-CI for automated testing purposes.

Updated

  • Installation instructions in the README to include CocoaPods, Carthage and Embedded Frameworks.
  • Travis-CI to use Xcode 6.1.1.
  • The download method on Manager to use Request.DownloadFileDestination typealias.
  • RequestTests to no longer delete all cookies in default session configuration.
  • Travis-CI yaml file to only build the active architecture.
  • Deployment targets to iOS 7.0 and Mac OS X 10.9.

Removed

  • The tearDown method in the AlamofireDownloadResponseTestCase.

Fixed

  • Small formatting issue in the CocoaPods Podfile example in the README.
  • Several issues with the iOS and OSX targets in the Xcode project.
  • The testDownloadRequest in DownloadTests by adding .json file extension.
  • The AlamofireRequestDebugDescriptionTestCase on OSX.
  • Spec validation error with CocoaPods 0.36.0.beta-1 by disabling -b flags in cURL debug on OSX.
  • Travis-CI build issue by adding suppport for an iOS Example scheme.

Released on 2015-01-09.

Added

Updated

  • Upload and Download progress state to be updated before calling progress closure.

Fixed

  • Some casting code logic in the Generic Response Object Serialization example in the README.
  • Indentation formatting of the responseString parameter documentation.

Released on 2014-12-21.

Added

Updated

  • The response object example to use a failable initializer in the README.
  • Router example in the README by removing extraneous force unwrap.
  • Xcode project APPLICATION_EXTENSION_API_ONLY flag to YES.
  • Default HTTP header creation by moving it into a public class method.

Fixed

  • Upload stream method to set HTTPBodyStream for streamed request.
  • ParameterEncoding to compose percent-encoded query strings from percent-encoded components.
  • Serialization handling of NSData with 0 bytes.
  • Issue where suggestedDownloadDestination parameters were being ignored.
  • Crash caused by Manager deinitialization and added documentation.

Released on 2014-11-20.

Updated

  • Dispatch-based synchronized access to subdelegates.
  • iOS 7 instructions in the README.
  • CRUD example in the README to work on Xcode 6.1.
  • The cURL example annotation in the README to pick up bash syntax highlighting.

Fixed

  • Out-of-memory exception by replacing stringByAddingPercentEncodingWithAllowedCharacters with CFURLCreateStringByAddingPercentEscapes.
  • Several issues in the README examples where an NSURL initializer needs to be unwrapped.
  • Possible exception when force unwrapping optional header properties.
  • Optional cookie entry in cURL output.
  • Optional textLabel property on cells in the example app.

Released on 2014-10-20.

Updated


Released on 2014-10-20.

Added

  • Tests for upload and download with progress.
  • Test for question marks in url encoded query.
  • The NSURLSessionConfiguration headers to cURL representation.
  • Parameter encoding tests for key/value pairs containing spaces.
  • Percent character encoding for the + character.
  • Escaping for quotes to support JSON in cURL commands.
  • The request method to the Manager bringing it more inline with the top-level methods.
    • Added by Brian Smith.

Fixed

  • Parameter encoding of ampersands and escaping of characters.
  • Parameter encoding of HTTPBody from occurring twice.
    • Fixed by Yuri in Pull Request #153.
  • Extraneous dispatch to background by using weak reference for delegate in response.
  • Response handler threading issue by adding a subdelegateQueue to the SessionDelegate.
  • Challenge issue where basic auth credentials were not being unwrapped.

Released on 2014-09-25.

Added