Skip to content

Latest commit

 

History

History
2937 lines (2563 loc) · 181 KB

CHANGELOG.md

File metadata and controls

2937 lines (2563 loc) · 181 KB

Change Log

All notable changes to this project will be documented in this file. Aside from features marked [🔥 Experimental 🔥], Alamofire adheres to Semantic Versioning. [🔥 Experimental 🔥] features may require breaking changes in minor, rather than major, releases. This will be rare and compatibility should be preserved in most cases, but cannot be guaranteed.

5.x Releases

4.x Releases

3.x Releases

2.x Releases

1.x Releases


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

Updated

  • Deployment targets reverted to (macOS 10.12, iOS 10, tvOS 10, and watchOS 3)+

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

Added

  • Request body compression support. This is disabled by default.
  • ArrayEncoding.custom to URLEncodedFormEncoder and URLEncoding.
  • KeyPathEncoding to URLEncodedFormEncoder.
  • NilEncoding to URLEncodedFormEncoder.

Updated

  • Alamofire now requires Swift 5.5+ and (macOS 10.13, iOS 11, tvOS 11, and watchOS 4)+.
  • flatMap to map in HTTPHeaders.
  • Various CI integrations.

Fixed

  • Reachability API usage safety.
  • Unused bufferingPolicy in StreamOf.
  • Various documentation typos.

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

Fixed

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

Updated

  • Swift package to 5.7, CI to Xcode 14.1.

Fixed

  • Calls to deprecated cancellation handler function.
  • Unnecessary protocol conformance on Combine publishers.
  • Don't attempt retry when Request has already been cancelled.

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

Added

  • Error when object provided to JSONEcoding contains values that can't be passed through JSONSerialization.

Updated

  • CI support for all supported Xcode, macOS, and Linux versions.
  • Support for various Xcode version.
  • Cache-Control header tests to not require hard-coded delays.

Fixed

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

Fixed

  • Missing automaticallyCancelling parameter in serializingDownloadedFileURL.

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

Added

  • Support for HTTPMethod.query to support the upcoming standard.
  • Compile-time Swift version check to enforce minimum supported Swift version.
  • GitHub Sponsors support. You can now sponsor Alamofire directly through GitHub.

Updated

  • Swift version required to build [🔥 Experimental 🔥] Swift Concurrency support to 5.6.0 to avoid various Apple bugs with Xcode 13.2.0 and 13.2.1. Support now requires Xcode 13.3.1.
  • DownloadRequest to avoid producing resume data when not explicitly requested on cancellation.
  • Testing infrastructure to use XCTestPlans on Apple platforms.
  • GitHub Actions support for greater OS coverage, more SPM platforms, and Swift 5.6.

Fixed


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

Added

  • [🔥 Experimental 🔥] support for Swift Concurrency, including async-await for requests and StreamOf for streaming values.
  • Generic static accessors for various protocols types for Swift 5.5.
  • .indexInBrackets options for array encoding in query parameters.
  • RequestAdapterState and new protocol requirements for RequestAdapter to allow for additional state to be available.

Updated

  • Session to more safely target provided custom DispatchQueues for internal use.
  • AFError message regarding unacceptable Content-Types to sort the types.
  • Base Swift language version requirement to 5.3.
  • Sample app to show proper loading state for requests.

Deprecated

  • responseJSON and associated methods, in preference to responseDecodable.

Fixed


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

Added

  • Support for Xcode 13, including a workaround for Combine compilation on older architectures.
  • Testing on watchOS.
  • Support for building on Windows and Linux. Alamofire is unsupported on these platforms but should build correctly.

Updated

  • Usage of .count >= 0 to !.isEmpty.

Fixed

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

Fixed

  • Change in multipart upload creation order.
  • Typo in Alamofire 5 migration guide.

Released on 2021-04-03. All issues associated with this milestone can be found using this filter.

Updated

  • Resume data handling for DownloadRequests to access resume data from errors as well as cancellation.
  • Project files and templates for Xcode 12.4 and GitHub templates.

Fixed

  • MultipartUpload thread-safety.
  • Multipart body stream length handling to better handle partial streams.

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

Updated

  • Project and CocoaPods installation of Obj-C header.

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

Added

  • URLResponseSerializer and attendant convenience methods so downloads can produce a non-optional URL.

Updated

  • Handing of file:// URLs, removing error added in 5.3.0 and adding support for DownloadRequest.

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

Added

  • Closure callback APIs for the production of URLRequests and URLSessionTasks.
  • URLSessionTaskMetrics gathering on watchOS 7+.

Updated

Fixed

  • Double lock crash in AuthenticationInterceptor caused by synchronous refresh implementations.
  • Crash when requesting file:// URLs by producing validation error.
  • Missing rethrow of error produced when writing temporary multipart files fails.
  • Objective-C module conflicts in Xcode 12 by removing Obj-C module support.

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

Added

  • macOS(Catalyst) User-Agent string.

Updated

  • debugDescription of DataRequest and DownloadRequest to better handle non-text and long content, with better formatting.
  • Code to use switch instead of if else statement.

Fixed

  • Linking on some Apple OS versions when using Swift Package Manager.
  • Reliability issues with DataStreamRequest.

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

Updated

  • Usage of .background DispatchQoS to .utility to avoid low-power issues.

Fixed

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

Added

  • Combine support! DataResponsePublisher, DownloadResponsePublisher, and DataStreamPublisher to stream Alamofire responses.
  • AuthenticationInterceptor, for easier adaptation and retry of requests with credentials.

Updated

  • Response handlers to take all serializer parameters.
  • DisabledEvaluator to DisabledTrustEvaluator, deprecating the previous name.
  • Interceptor to be initialized with multiple RequestInterceptors, in addition to RequestAdapters and RequestRetriers.

Fixed

  • Minor documentation issues.
  • Encoding of Decimal values in URLEncodedFormEncoder.
  • Thread-safety issue in Session.
  • Memory leak in NetworkReachabilityManager.

Released on 2020-04-04. All issues associated with this milestone can be found using this filter.

Added

  • RequestModifier closure to request APIs, allowing mutation of created URLRequests.
  • DataStreamRequest, for streaming HTTP responses.

Updated

  • Various framework internals to make porting to Linux easier.
  • Project to require Swift 5.1.

Fixed

  • Typo in ServerTrustEvaluating documentation.

Released on 2020-03-23. All issues associated with this milestone can be found using this filter.

Fixed

  • Request casting issue on retry that could lead to incomplete retry of UploadRequests.
  • Rare scenario where finish() could be called multiple times, leading to duplicate response handler calls.

Released on 2020-03-15. All issues associated with this milestone can be found using this filter.

Fixed

Released on 2020-03-14. All issues associated with this milestone can be found using this filter.

Added

  • SwiftPM testing support.
  • Documentation around the prohibition of background URLSessionConfigurations in Alamofire 5.

Fixed

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

Fixed

  • Swift 5 support for AlamofireExtension.

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

Updated

  • AlamofireExtension to have public properties and initializer, and conform to @dynamicMemberLookup.

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

Added

  • Support for NSURLAuthenticationMethodClientCertificate when handling auth challenges using URLCredentials.
  • Migration Guide for Alamofire 5.

Updated

  • Advanced Usage documentation for Alamofire 5.
  • AF namespace to be a reference to Session.default.

Fixed

  • Runtime crashes due to overzealous state checking in SessionDelegate by reducing the severity of the assertions.
  • Unwanted public attribute on _URLEncodedFormEncoder.

Released on 2019-10-26. All issues associated with this milestone can be found using this filter. Note: Alamofire 5 is now API stable.

Updated

  • Automatic resume() behavior to be called after the first response handler is added instead of immediately after task creation.

Fixed

  • Incorrect header convenience method in Usage documentation.
  • Unstable parameter ordering in URLEncodedFormEncoder.
  • Xcode build issues and precompiled binary build issues by removing the dynamic bundle identifier.
  • Build warnings for deprecated SecTrust API when building for Catalyst.
  • Regression from Alamofire 4 causing Alamofire to reject NTLM and Negotiate authentication methods.

Released on 2019-09-08. All issues associated with this milestone can be found using this filter. Note: Alamofire 5 is now API stable.

Fixed

  • Single remaining use of Error instead of generic Failure constraint in DataResponse API.

Released on 2019-09-04. All issues associated with this milestone can be found using this filter. Note: Alamofire 5 is now API stable.

Added

  • cancelAllRequests method on Session to cancel all in flight requests.
  • Ability to inject FileManager instance into UploadRequest.
  • DataPreprocessor protocol and implementations, allowing the preprocessing of data before serialization.
  • Internal URLRequest validation and error. GET requests with body data will now produce an error.
  • Generic Failure constraint to DataResponse and DownloadResponse, making them DataResponse<Success, Failure: Error> and DownloadResponse<Success, Failure: Error>.
  • Precondition to ensure Session can't be used with background URLSessionConfigurations. Alamofire will explicitly support such functionality at some point in the future.
  • SwiftFormat configuration and updated styling.
  • AFDataResponse<Success> and AFDownloadResponse<Success> typealiases to help deal with the doubly generic responses.

Updated

  • All internal Result usage to use the fully qualified type instead of AFResult.
  • DataRequest and DownloadRequest functional API, renaming flatMap to tryMap.
  • HTTPMethod to be a struct rather than an enum.
  • All errors produced by Alamofire to be AFError by default. All responses will now start with an AFError Failure type.
  • NetworkReachabilityManager to simplify and modernize its API.
  • Usage.md documentation to be fully up-to-date with Alamofire 5.
  • Bundle identifiers to include the platform name, fixing ITMS-90806.

Fixed

  • Thread-safety issue with serialization queue usage.

Released on 2019-07-29. All issues associated with this milestone can be found using this filter. Note: Alamofire will not be following semantic versioning during the beta process. There may be breaking changes until 5.0.0 is released.

Added

  • URLEncodedFormEncoder.DataEncoding and URLEncodedFormEncoder.KeyEncoding to customize the encoding of Data and CodingKeys in URLEncodedFormEncoder.
  • Asynchronous cURLDescription method to produce cURL commands for Requests which are in the process of creating their initial URLRequest.

Updated

  • All inline API documentation.
  • Handling of response serializers appended after a Request has completed. This no longer produces an error but will instead trigger the normal Request lifetime methods.

Fixed

  • Empty parameters being encoded as an empty String instead of nil by URLEncodedFormEncoder.
  • Handling of os_unfair_lock to prevent rare crash.

Released on 2019-04-23. All issues associated with this milestone can be found using this filter. Note: Alamofire will not be following semantic versioning during the beta process. There may be breaking changes until 5.0.0 is released.

Updated

  • ServerTrustEvaluation logic by simplifying public key equality checks for SecKey types.
  • Request.State access to lock access and task updates using internal locking API.

Fixed

  • Issues in DownloadRequest where some events were being duplicated and some were missing.
  • Issue with AppStore submissions where the pre-release version in the bundle short versions string was being rejected when built with Carthage or as a submodule.
  • Issue where response serializer completions were not called when appended to a completed Request.

Released on 2019-04-12. All issues associated with this milestone can be found using this filter. Note: Alamofire will not be following semantic versioning during the beta process. There may be breaking changes until 5.0.0 is released.

Added

  • Request.didResumeTaskNotification, Request.didSuspendTaskNotification, Request.didCancelTaskNotification, and Request.didCompleteTaskNotification notifications.
  • Separate URLSessionTask lifetime events to EventMonitor.

Updated

  • SessionStateProvider to no longer be public and renamed the file it lives in.
  • MultipartUpload to no longer be public.
  • Request, DataRequest, UploadRequest, and DownloadRequest to longer be open, as Alamofire does not support subclassing these types.
  • Names of the notifications posted by Request to include Notification.
  • httpHeaders extensions on URLRequest, HTTPURLResponse, and URLSessionConfiguration to be headers instead.

Fixed

  • Issue in Request where calling cancel() inside a response serializer would result in the serializer running again.
  • Issue in Session where the delegate precondition would be triggered when running with a swizzled URLSessionDelegate.
  • Compiler error in the example app.
  • Issues Request where certain lifetime events could be triggered more than once by repeatedly calling resume(), suspend(), or cancel().
  • Framework version string to be compatible with TestFlight and AppStore releases.

Released on 2019-03-29. All issues associated with this milestone can be found using this filter. Note: Alamofire will not be following semantic versioning during the beta process. There may be breaking changes until 5.0.0 is released.

Added

  • The AlamofireExtended protocol and used it to namespace all public extensions.
  • The ability to retry requests after encountering response serialization errors.

Updated

  • The switch and DispatchQueue logic throughout codebase to simplify usage patterns.
  • The MultipartFormData data APIs by condensing them using optional parameters.
  • The upload APIs for MultipartFormData to support custom boundaries.
  • The Xcode project, source code, SPM package, and podspec to support Swift 5 only.
  • The Alamofire Result type to be a new AFResult typealias on the new Swift.Result type in Swift 5 and removed all public extensions.

Fixed

  • Issue in RequestInterceptor closures where callback arguments were not marked as @escaping.
  • Issue in response serializers where emptyResponseAllowed logic was not working as expected.

Released on 2019-01-07. All issues associated with this milestone can be found using this filter. Note: Alamofire will not be following semantic versioning during the beta process. There may be breaking changes until 5.0.0 is released.

Added

  • The EmptyResponse protocol, to allow any type to provides values to stand in for an empty response.
  • Request and response bodies to Request's debugDescription.

Updated

  • Package.swift for Swift 5 support, moving Swift 4.2 support to [email protected].
  • Use of Array to Range in Request's default acceptableResponseCodes.
  • RetryPolicy to allow subclasses to override retry(_:, for: Session, dueTo:, completion:).
  • Alamofire's didResume notification to didFinish, which is now called when a Request finished, not when tasks resume.

Fixed

  • Requests not finishing when their controlling Session is deinitd or invalidated.
  • Memory leak when using validate() due to reference cycle from implicit self capture when using an @autoclosure.
  • Crash when using requestDidParseAnyResponse when using ClosureEventMonitor.
  • RetryPolicy to properly conform to RequestInterceptor.
  • Typos in documentation.

Released on 2019-01-07. All issues associated with this milestone can be found using this filter. Note: Alamofire will not be following semantic versioning during the beta process. There may be breaking changes until 5.0.0 is released.

Added

  • Support for controlling redirect behavior per Session and per Request using the RedirectHandler protocol.
  • Support for controlling cached response behavior per Session and per Request using the CachedResponseHandler protocol.
  • Support for controlling retry behavior per Session and per Request using the RequestInterceptor protocol.
  • The Adapter, Retrier, and Interceptor types to provide fine grained control of retry behavior.
  • Support for exponential backoff retry policies through the new RetryPolicy and ConnectionLostRetryPolicy types.

Updated

  • The RequestRetrier protocol to take a RetryResult in the completion closure allowing custom retry errors to be thrown.
  • The Hashable implementation on Request to use new hash(into:) API.

Released on 2018-12-06. All issues associated with this milestone can be found using this filter. Note: Alamofire will not be following semantic versioning during the beta process. There may be breaking changes until 5.0.0 is released.

Added

  • Support for Decodable response serialization with responseDecodable.
  • Support for Brotli Content-Encoding in Alamofire's default headers.
  • HTTPHeaders type and convenience APIs.
  • Support for Encodable parameter types with JSONParameterEncoder and URLEncodedFormParameterEncoder.
  • Customizable empty response handling in response serializers.
  • EventMonitor protocol, to tap in to internal Alamofire lifetime events.
  • ServerTrustFailureReason to AFError.
  • Asynchronous request creation.

Updated

  • ResponseSerializer and associated protocols' requirements and implementations.
  • RequestAdapter to allow for asynchronous adaptation.
  • SessionManager to Session, with rewritten implementation and API.
  • Request, DataRequest, UploadRequest, and DownloadRequest with rewritten implementation and API.
  • Top level request API to be inside a real AF namespace enum rather than unnecessary Alamofire. usage.

Removed

  • Support for iOS < 10, macOS < 10.12, tvOS < 10, watchOS < 3.
  • Support for PropertyListSerialization and responsePropertyList.
  • Support for URLSessionStreamTask.
  • Closure override and customization API.
  • Timeline type, as Alamofire now gathers URLSessionTaskMetrics for every request.

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

Added

  • Support for GitHub Actions for CI.

Updated

  • DataResponse and DownloadResponse debugDescription to include more useful information.

Fixed

  • Dynamic bundle identifier causing issues with Xcode and precompiled binaries by removing the dynamic behavior.
  • Compiler warnings when building for Catalyst by updating the usage of deprecated API.

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

Added

  • API to cancel DownloadRequests without producing resume data.

Updated

  • Bundle identifiers to include the platform name, fixing ITMS-90806.

Fixed

  • NetworkReachabilityManager behavior regression from 4.8.1.
  • Memory leak when using validate().

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

Updated

  • Project for compatability with Xcode 10.2.
  • MultipartFormData to have a mutable boundary.

Fixed

  • Compatability with SPM from Xcode 10.2.

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

Fixed

  • Issue where the network reachability listener closure was not being called immediately when launching an app in airplane mode.

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

Added

Updated

  • Project Swift version to 4.
  • Various Result methods to be throw/rethrows.
  • cURL representation implementation readability.

Released on 2018-7-8. All issues associated with this milestone can be found using this filter.

Updated

Released on 2018-4-15. All issues associated with this milestone can be found using this filter.

Fixed

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

Updated

  • Project for Xcode 9.3 and Swift 4.1 release versions.

Fixed

  • Quote escaping in cURL representation.

Released on 2018-3-5. All issues associated with this milestone can be found using this filter.

Added

Updated

  • Project for Xcode 9.3 and Swift 4.1.
  • OS versions affected by resume data bug.

Fixed


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

Added

  • Error mapping functions to Response types.
  • Separation of Usage and Advanced Usage docs from README.

Updated

Fixed


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

Added

  • GitHub templates for issues and pull requests.
  • Jazzy docs for the release to work with GitHub Pages.
  • Dash support for Jazzy docs.

Updated

  • The project to work with Xcode 9 beta 6 on Swift 3.2 and 4.0.
  • The Travis CI config to work with Xcode 9 beta 6.
  • The cURL representation logic to no longer force unwrap URLCredential values.
  • The radars section of the README to split out open vs. resolved radars.
  • The installation section of the README to use the current version.

Fixed

  • Issue in TaskDelegate where task access was not thread safe.
  • Issue in AF 4 migration guide where supported iOS versions was incorrect.
  • Issue in README sample code where PNG representation API was incorrect.
  • Swift 3.2+ API warnings for substring APIs.

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

Added

  • Missing @escaping annotation for session delegate closures.
  • New mapError, flatMapError, withValue, withError, ifSuccess, and ifFailure APIs to Result.

Updated

  • The Travis config file to Xcode 8.3.
  • Response serialization implementation to use separate internal variable.
  • SessionDelegate internal implementation by removing redundant optional unwrap.
  • The debugPrintable implementation of Request to use curl -v instead of curl -i to be more verbose.
  • The MultipartFormData contentType property to be mutable.
  • Travis CI yaml file to enable watchOS 3.2 builds.
  • Alamofire to build with Xcode 9 with Swift 3.2 and 4.0 in addition to Xcode 8.3 and Swift 3.1.

Removed

Fixed


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

Added

  • A new Alamofire/Alamofire Gitter channel and also added badge to the README.
  • Functional extensions for Result, Data and Download Response.

Fixed

  • Typo in the README in the Swift Package Manager section.
  • Issue in the "Modifying the Session Configuration" example code of the README where the defaultHTTPHeaders property was called incorrectly.
  • Issue in the "Security" section of the README where some example code was outdated.
  • Issue in the README where the POST request with parameters example was using the wrong method.
  • Issue where taskDidComplete override closure was not calling task delegate leading to potential memory leaks.

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

Added

  • The host and path to router example in README.
  • A macOS disclaimer to download request example in README.
  • New value and error computed properties to data and download responses.
  • The HTTP method to the data and download response debug descriptions.
  • A README entry about installing through SPM.
  • The dependencies parameter to Package file for SPM since it's now required.
  • TLS evaluation tests for revoked certs for no policy and default policy.
  • New server trust policy for revoked certificates along with matching tests.

Updated

  • Project to Xcode 8.2 recommend settings.
  • The NetworkReachabilityManager to have a public instead of open ACL.
  • The initializers for both default responses public and added metrics parameter.
  • Internals by replacing syncResult extension with DispatchQueue sync.
  • TLS tests for tvOS 10.1 and added expiration test for revoked evaluation.

Fixed

  • DownloadRequest sample code issue in AF 4 migration guide.
  • URLConvertible compiler issue in the README example.
  • An invalid comment in AF 4 migration guide.
  • An issue where the SessionManager did not respect retry time delay.
  • A broken reference link in the README.
  • Compiler issues in RequestAdapter and RequestRetrier examples in README.

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

Added

  • Request property overrides to fallback on original task if available.
  • Timeline generation to DefaultDataResponse and DefaultDownloadResponse.
  • JSON encoding encode method that takes a JSON object along with unit tests.

Updated

  • The RequestRetrier example in the README to safely extract tokens.
  • TaskDelegate data and error properties to a public ACL.
  • Multipart form data uploads to now delete temp file if encoding fails.

Fixed

  • Issue where AdaptError instances were being incorrectly sent to the RequestRetrier.
  • Issue where TLS tests were failing on iOS 10.0 and not on iOS 10.1.

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

Added

  • Docstrings and a note to the README about resumeData and background session behavior.
  • Request retryCount property to support the RequestRetrier.

Updated

  • SPM package file to exclude tests since current configuration is not supported.
  • An example in the README to use proper error checking in download response handler.
  • Embedded framework installation instructions.
  • The AF4 Migration Guide to no longer use DispatchQueue internal APIs in the example.
  • The RequestAdapter to call the RequestRetrier when an Error is thrown.
  • The SessionManager to clean up the temporary multipart form data file after upload.
  • The deployment targets to iOS 8.0 and macOS 10.10.
  • The Travis CI yaml file to support iOS 8 simulators.
  • The iOS Example app deployment target to iOS 8.0.

Removed

  • Duplicate auto-code signing on macOS.
  • Duplicate code signing identities on various targets.

Fixed

  • A compiler error in response validation sample code in the README.
  • Several internal SessionManager links that were broken in the README.
  • Issue in the sample code of the README where response.error was used incorrectly.
  • Issue in the ServerTrustPolicy tests where a macOS 10.12 check was needed.
  • Compiler issue with DownloadRequest in AF4 Migration Guide.
  • Test target compiler warning by not requiring app extension APIs only.
  • Typo in the HTTP Headers section of the README.
  • Incorrect response type in the response README examples.
  • Xcode 8.1 compiler warnings and project suggestions.
  • Issue where download completion could crash on a nil response.
  • Issue in TLS tests where root certificate was missing from server trust.

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

Added

  • The OS_ACTIVITY_MODE environment variable to iOS, tvOS and iOS Example.
  • Test verifying download request can be resumed with resume data.

Updated

  • All instances of com.alamofire with org.alamofire throughout the project.
  • Project by adding .swift-version file and re-enabling pod lib lint in Travis file.
  • The entire project to use macOS in place of OS X.
  • Framework and test target override settings that duplicated the project settings.

Fixed

  • Issue where the test suite was accidentally deleting contents of ~/Library/Application Support on macOS.
  • Typo in the migration guide around availability checks.
  • Typo in the README around response handlers.
  • Issue in the download example in the README where a to parameter was missing.
  • Issue in AFError where wrong case was used in several property implementations.
  • Typo in AF 4 migration guide where "enhancements" was spelled incorrectly.
  • Typo in code sample documentation where "already" was misspelled.
  • Typos in the Open Radars and Donations sections of README.
  • Issue in DispatchQueue extension where Foundation needed to be imported for submodules.
  • Memory leak in Validation closures where reference to self was causing retain cycle.
  • Compilation issue in response handler section of the README.

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

Added

  • Internal DispatchQueue extension set of convenience properties and methods.
  • RequestAdapter and RequestRetrier protocols allowing requests to be retried.
  • RequestAdapter tests on all testable SessionManager request APIs.
  • Added an Adapting and Retrying Requests section to the README.
  • DataRequest, DownloadRequest, UploadRequest and StreamRequest subclasses.
  • Top-level APIs for creating StreamRequest instances.
  • Extra responseToSelector overrides for stream delegate APIs.
  • A new syncResult extension to DispatchQueue to simplify thread-safe locking.
  • Two serialization failure reasons to support download response serializers.
  • Download response serialization tests for all serializer types.
  • The dataFileNil and dataFileReadFailed cases to ResponseValidationFailureReason.
  • The isWildcard property to MIMEType struct for convenience.
  • Missing CustomDebugStringCovertible conformance to DownloadResponse.
  • URL variants to the FileManager extension in the test suite.
  • DownloadOptions option set to make moving files more robust.
  • Tests validating success and failure scenarios for DownloadOptions.
  • Parameter encoding failure docstrings and refactored reasons to be consistent.
  • Safeguards to url parameter encoding when extracting the url request’s url.
  • The new URLSessionTaskMetrics to all Response types.
  • The Alamofire 4.0 Migration Guide to the README.
  • HTTPHeaders typealias for top-level API convenience.
  • Complete safeguards to URLStringConvertible, URLRequestConvertible and RequestAdapter.
  • Tests around invalidURL error cases for Request creation and adaptation.

Updated

  • The authorizationHeader static method over to returning optional tuple.
  • SessionManager queues to each have a unique name using a UUID suffix.
  • The progress tracking system across all Request subclasses to improve accuracy.
  • BaseTestCase to delete contents of common directories at the start of each test.
  • Response handler extensions by moving them into DataRequest and added equivalents for DownloadRequest.
  • The response serializer types to use the Protocol suffix.
  • Validation typealias to include response data in a DataRequest type.
  • Validation typealias to include temporary and destination URLs in a DownloadRequest type.
  • SessionManager APIs to all leverage TaskConvertible conformance.
  • DownloadFileDestination closures to be optional on top-level DownloadRequest APIs.
  • The request and download APIs now default to .get method and upload defaults to .post.
  • The ParameterEncoding encode API to throw instead of returning tuple.
  • The TaskDelegate to only store the url session task error if error is nil.
  • ParameterEncoding enum by switching to a protocol backed by url, json and plist structs.
  • Updated RequestRetrier completion to be escaping.
  • Code signing to automatic with no team on framework, test and app targets.
  • README for Swift 3 and Alamofire 4 along with reorganization.
  • README with improved Error examples as well as typo and whitespace fixes.
  • Request task property is now optional allowing errors to propagate through.
  • The Travis-CI device list in the yaml file.
  • The top-level APIs by removing external resource parameter name.
  • The URLStringCovertible by renaming to URLConvertible and removed protocol property.
  • The README and migration guide with the URLConvertible and top-level API changes.

Removed

  • Unnecessary public ACL declarations on AFError extensions.
  • URLStringConvertible conformance on URLRequest.
  • Removed downloadProgress and uploadProgress Int64 variants.
  • Duplicated change log message in the migration guide.
  • Code coverage generation by default to improve test suite stability.

Fixed


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

Fixed

  • Build issue with Manager class due to cherry picked change that merged incorrectly.

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

Added

  • discardableResult annotations to all top-level Request APIs.

Updated

  • All source, test and example logic as well as project settings to compile against the Xcode 8 beta releases.
  • Deployment targets to iOS 9.0, macOS 10.11, tvOS 9.0 and watchOS 2.0.
  • Notifications to use nested structs inside Notification.Name namespace.
  • The Manager class to SessionManager to be more descriptive.
  • The SessionDelegate, TaskDelegate and subclasses by pulling them into the global namespace.
  • All the Core APIs and documentation to match Swift 3 API design guidelines.
  • The SessionDelegate to store Request instances internally to prepare for retry logic.
  • The podspec to 4.0.0-beta.1 and bumped the deployment targets.
  • The parameter order of custom URLRequest initializer to match other APIs.
  • The travis yaml file for Xcode 8.
  • The Error enum to AFError which now conforms to the new Error protocol.

Fixed

  • Typo in a parameter name in the MultipartFormData Swift 3 API refactor.

Upgrade Notes

This release requires Xcode 8.0 beta 6+ because it has been completely refactored to compile against Swift 3.0. Any older versions of Xcode will NOT COMPILE.

This release is the start of the Alamofire 4.0.0 beta releases. We still have quite a few large changes we're trying to squeeze in before the Xcode 8 GM drops, so the APIs will continue to change over the next few weeks. Please keep in mind that each beta will likely bring new APIs and also refactor others. The betas WILL NOT follow semantic versioning. We'll most likely conform to semantic versioning once we start releasing the RCs unless we run into a major unforeseen issue.

We'd really appreciate everyone trying out the betas and letting us know if you find issues. We want to address every possible issue prior to the official Alamofire 4.0.0 release.


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

Fixed

  • Assorted memory leaks caused by underlying Swift runtime bugs.
  • Issue in the test suite logic on macOS 10.12.

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

Updated

  • The User-Agent header generation formatting and also added docs and tests.
  • All source, test and example logic as well as project settings to compile against Xcode 7 and 8 against Swift 2.2 or 2.3 respectively.
  • The Travis CI yaml file to support both Xcode 7.3 and 8 simultaneously.

Fixed

  • A TLS evaluation test that could fail with a different error when behind a proxy.

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

Added

  • Added Cleanup Whitespace target to remove excess whitespace from Swift files.

Updated

  • All TLS evaluation tests from disig.sk to badssl.com to be more reliant and robust.
  • Internal URLRequest method to maintain mutable variant data on an NSURLRequest passed into the top-level APIs.
  • The User-Agent header to include version and build numbers.

Removed

  • All excess whitespace from Swift files using the Cleanup Whitespace target.

Fixed

  • Request debug description tests to no longer require parameters in a specific order.
  • Small ACL issue in code sample of the Handling Errors section of the README.

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

Added

  • Rdar 26761490 to the list of rdars affecting Alamofire.
  • A new debugDescription test for a MultipartFormData Request with duplicate headers.

Updated

  • CocoaPod installation instructions in README to be compatible with 1.x.
  • The README to reflect the best error practices in response serializers.
  • The generation of the User-Agent header to use non-localized sources.
  • The Generic Response Object Serialization section of the README to use protocol extension.
  • Reachability by removing explicit IPv6 logic since OS handles this automatically.
  • Host manager reachability test to use different hostname to improve test reliability.

Removed

  • ReleaseTest configuration and updated Travis-CI yaml file to enable testability directly.

Fixed

  • Memory leak in Timeline description and debugDescription due to string interpolation.

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

Added

  • Status code and content type values into validation NSError userInfo dictionaries.
  • New authorizationHeader API to generate base64 encoded authorization header.

Updated

  • URLProtocol tests to demonstrate using NSURLProtocol with NSURLSession.
  • The SesionDelegate to no longer be final to allow subclassing.
  • The SessionDelegate subscript public to allow full control when subclassing.
  • The Response Serialization section of the README to include validation examples.
  • The delegate guard in the Manager initializer in front of property assignment.
  • Header example in the README to use Accept header instead of Content-Type.

Deprecated

  • The errorWithCode APIs and updated NSURLError* domains to NSURLErrorDomain.

Fixed

  • Issue where Requests with invalid credentials were not terminating with 401 status code.
  • Issue in URLProtocol test where config headers are not passed prior to iOS 9.0.
  • Issue where Request cURLRepresentation method was not coalescing duplicate headers.
  • Issue where incorrect dash in License file was breaking markdown parsing.
  • Issue where internal quotes were not escaped correctly in cURL output.

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

Added

  • Tests for the SessionDelegate redirect with completion override closure.
  • Tests for all the SessionDelegate override closures.

Updated

  • The authentication test cases to clear out all cookies to help stabilize Travis-CI.
  • The cache test check for no store header to use availability checks.

Fixed

  • The respondsToSelector check for the new HTTP redirect closure with completion.
  • Issue where the challenge and response SessionDelegate override closures were not called.
  • Typo in the Travis YAML file that was causing all tests to always fail on iOS 9.1.
  • Race condition in the cache tests that was causing random failures on Travis-CI.

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

Added

  • Added override closures for all SessionDelegate APIs with completion handlers.

Updated

  • The User-Agent header implementation to use more aggressive type-safety checks.
  • All shared response serializers to accept a custom queue for execution.
  • The network reachability manager to use IPv4 on iOS 8.x and OSX 10.9.x.
  • All source, test and example code to compile against Swift 2.2.
  • The Travis CI YAML file to use Xcode 7.3 and also updated matrix targets.

Fixed

  • Issue in JSON response serialization test case where the wrong serializer was being tested.
  • Issue where multipart form data encoding was unnecessarily scheduling input and output streams with the current runloop.

Upgrade Notes

This release requires Xcode 7.3+ otherwise the Swift 2.2 changes will NOT COMPILE. There are several reasons why this was deployed as a MINOR and not MAJOR release. First off, the public API changes of this release are fully backwards compatible. There are no breaking API changes in the public APIs. Strictly following semver dictates that this is a MINOR, not MAJOR release.

See semver for more info.

We also realize that this can be frustrating for those out there not ready to upgrade to Xcode 7.3. Please know that we consider each release version carefully before deploying. Our decision to bump the MINOR version was not only due to strictly following semver, but also because it's difficult and undesirable for all OSS libraries to bump MAJOR versions each time the Swift APIs are incremented. Alamofire would have had to go through 6 additional MAJOR versions if this was the policy. That would mean we'd already be running on Alamofire 10.x. Incrementing MAJOR versions this quickly is disruptive to the community and would cause even more confusion. Instead, we try to carefully plan our MAJOR version releases and accompany them with detailed Migration Guides to help make the transition as smooth as possible.

If anyone has additional questions, please feel free to open an issue and we'll be more than happy to discuss further.


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