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-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.
- 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
- Podspec file to support CocoaPods deployment.
- Shared scheme to support Carthage deployments.
- New target for Alamofire OSX framework.
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
- POST request JSON response test.
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
- Project to support Swift 1.1 and Xcode 6.1.
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.
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
- Initial release of Alamofire.