Skip to content

Releases: soto-project/soto-core

v5.0.0

07 Dec 07:23
b24d868
Compare
Choose a tag to compare

Major changes

  • Soto: The rename to Soto is complete. The package name is "soto-core" and core library is now "SotoCore".
  • AWSClient has now been split from the service objects. So you can have one AWSClient that is used by many services.
  • HTTP Client: We are now using the swift server async-http-client instead of own custom http client. We also provide the ability for the user to replace this client with their own.
  • Credential providers: Abstracted credential acquisition to make it easier to write credential providers and control which credential providers you want to use.
  • Swift server eco-system: On top of using async-http-client we have added support for swift-log and swift-metrics.
  • Crypto: There is no dependency on openssl libraries anymore. Instead we use swift-crypto on Linux and CommonCrypto on macOS and iOS.
  • Request/Response encoding/decoding:
    • We have added a Codable based QueryEncoder so all protocols now use Codable for serialisation.
    • Added property wrappers for Collection types Array and Dictionary to define how they are serialised. We have also included property wrappers for Date which has allowed us to remove Timestamp and replace it with Date.
    • Fixed many serialisation bugs.
  • Request Signing: The V4 signer has been completely re-written and is available as a separate library. This also added support for signing streamed S3 requests.
  • Streaming: We have added support for both streaming of request data and streaming of response data thus allowing the uploading and downloading of large files without requiring a large memory footprint. Added AWSPayload for raw payloads. Allows the user to supply a payload as a String, Data, ByteBuffer or closure supplying a stream of ByteBuffers.
  • Retrying Requests: AWSClient now retries requests that have failed. You can define how the client does this using a RetryPolicy object.
  • Errors: Errors thrown by SotoCore are now structs and not enums. They also hold additional data like the response code and http headers returned.
  • Added AWSService protocol with support for signing URLs and creating edited versions of services.
  • Added new Array.reduce style paginator functions.

v5.0.0 Release Candidate 1.0

23 Nov 11:39
3fdebac
Compare
Choose a tag to compare
Pre-release

Major version changes

  • RetryPolicy is now provided with processed errors instead of a raw http response. PR #394
  • Logger and EventLoop parameter order in public functions AWSClient.execute and AWSClient.paginate has been swapped around. PR #399

Minor version changes

  • Added errors invalidSignature, signatureDoesNotMatch and unrecognizedClient that are common across many service to AWSClientError.
  • Added RotatingCredential struct so we don't need to keep re-implementing it.
  • Added additionalFields to AWSErrorContext. Any additional fields on top of the errorCode and message are stored here. PR #392
  • Added createNewWithEventLoopGroup to AWSClient.HttpClientProvider. PR #395
  • Added AWSClient.ClientError.notEnoughData error, which is thrown when a streaming function indicates it has finished passing on data but it has not provided enough data.
  • Added Region(awsRegionName:) which verifies it has been passed an AWS region name. PR #397 by @sebsto
  • SotoSignerV4 is now available as a library separate from SotoCore

Patch version changes

  • When calculating the delay before retrying a failed request, check the Retry-After header in the response. PR #394
  • Retry when response is a throttling error. PR #394
  • Pass EventLoop to AWSClient.invoke. PR #398
  • HTTPClient created by AWSClient has a default connection timeout of 10 seconds
  • Fixed issues with S3 streaming code where data was not passed onto the HTTP streaming code and where already streamed data was not de-allocated. PR #400
  • Request signer should sort header values by key not key=value. PR #401

v4.7.2

28 Oct 17:32
Compare
Choose a tag to compare
  • Fixed crash in XML parser when given invalid content

v5.0.0 Beta 3.0

26 Oct 10:03
0cbfc01
Compare
Choose a tag to compare
v5.0.0 Beta 3.0 Pre-release
Pre-release

Major version changes

  • Extended AWSErrorType protocol to include context structure which includes message, http status code and headers. PR #389

Minor version changes

  • Add Array.reduce style paginator functions. PR #385
  • Make SotoTestUtils a library so it is available to other Packages. PR #386

Patch version changes

  • Fixed percent encoding of URL paths, which was being removed. Also fixed encoding of "+" character. PR #390

v5.0.0 Beta 2.0

06 Oct 15:53
1287ab0
Compare
Choose a tag to compare
v5.0.0 Beta 2.0 Pre-release
Pre-release

Major version changes

  • AWSService.signURL no longer has a default for the expiration time expires. It has also been changed to a NIO.TimeAmount from a integer. PR #373
  • Removed Date wrapping struct Timestamp. Dates are now decoded based on service protocol. This can be overidden with a DateFormatCoder property wrapper. PR #383
  • Renamed Coding to CustomCoding, OptionalCoding to OptionalCustomCoding. PR #376
  • Renamed DefaultArrayCoder to StandardArrayCoder, DefaultDictionaryCoder to StandardDictionaryCoder. PR #376

Minor version changes

  • Add ability to include headers when generating a signed URL. When you use the URL you will need to supply the exact same headers. PR #367
  • Added AWSService.with which creates a new copy of a service with edited values. Values you can edit include middlewares, timeout, byteBufferAllocator and options. PR #377
  • Region now conforms to Codable. PR #375

Patch version changes

  • Allow for JSON error messages with message key capitalized. This fixes issue with Lambda service errors being unhandled. PR #370
  • Improve performance of QueryEncoder. PR #380
  • Run benchmarks on all PRs. PR #381

v4.7.1

21 Sep 07:57
45d9208
Compare
Choose a tag to compare

Patch version changes

  • Removes duplicate "/" in InstanceMetaDataServiceProvider request to avoid redirect. PR #371 from @t089

v5.0.0 Beta 1.0

18 Sep 07:42
c1e7f18
Compare
Choose a tag to compare
v5.0.0 Beta 1.0 Pre-release
Pre-release

AWS SDK Swift has been renamed to Soto

Major version changes

  • AWS SDK Swift Core has changed name and is now called SotoCore. The package name is "soto-core".
  • Body.json now holds a ByteBuffer instead of Data. PR #350
  • Add offset function parameter to AWSPayload.fileHandle. PR #352
  • Add 'context' parameter to AWSServiceMiddleware.chain() functions
  • AWSClient.signURL use HTTPMethod instead of a String for the http method.
  • Renamed TimeStampFormatterCoder to TimeStampFormatCoder and made it internal. PR #364

Minor version changes

  • AWSClient.HTTPResponseError is now public. This eases the writing of custom RetryPolicy objects.
  • Added AWSService a protocol for AWS services which provides helper vars to access the service region, endpoint and eventLoopGroup and a function for signing a URL for use by the service. PR #347
  • Added ByteBufferAllocator to AWSServiceConfig to be used throughout AWSClient. PR #351
  • Add pagination functions that include a test for a moreResults flag.
  • Add support to TimeStampFormatCoder for multiple time formats and add both with millisecond and without millisecond formats to the ISO8601TimeStampCoder. PR #364
  • Make AWSPayload.size public

Patch version changes

  • Provide common internal execute function used by all the public execute functions. PR #349
  • Fix bug in DeferredCredentialProvider where credential can be accessed and written at same time. PR #357
  • Add Glibc import at top of Expat.swift to aid cross compiler compilation
  • Tilda expansion for config file loading on macOS sandboxed apps expands to the home folder, instead of folder inside container. PR #361 from @sebsto
  • Fix v4 signer issue when the URL ends in a slash. This fixes signing issue for Lambda.ListFunctions. PR #363

v5.0.0 Alpha 6.0

20 Aug 17:18
Compare
Choose a tag to compare
v5.0.0 Alpha 6.0 Pre-release
Pre-release

Major version changes

  • Use AsyncHTTPClient for macOS and iOS builds. This requires v1.2.0 of AsyncHTTPClient. NIOTSHTTPClient has been removed from the project. PR #339
  • Use Expat for XML parsing. This allows us to remove our dependency on FoundationXML. PR #342
  • Add RetryPolicyFactory setup in similar manner to the CredentialProviderFactory. Allows you to choose RetryPolicy using dot notation eg AWSClient(retryPolicy: .jitter(), ...). Also allows us to remove a number of public symbols. PR #323
  • AWSClient.ClientError is now a struct. PR #338
  • Add progress callback to AWSPayload.fileHandle. PR #334
  • Replace HTTP method string with enum NIOHTTP1.HTTPMethod. PR #329
  • Add logging to AWSClient. Pass in a swift-log Logger to output log information. PR #330, #331, #332
  • Partition renamed to AWSPartition
  • PayloadOptions renamed to AWSShapePayloadOptions. PR #322

Minor version changes

  • Add AWSClient.credentialProvider.shutdown() to shutdown AWSClient asynchronously. PR #327, #333
  • Add HTTP client timeout value to AWSServiceConfig. PR #328
  • Added ap-northeast-3 (Osaka Local) region.
  • AWSClient.credentialProvider is now public.

Internal changes

  • Use SwiftFormat for code formatting.

v4.7.0

13 Aug 07:56
Compare
Choose a tag to compare

Add Region ap-northeast-3 (Asia Pacific (Osaka-Local))

v5.0.0 Alpha 5.1

18 Jul 06:53
Compare
Choose a tag to compare
v5.0.0 Alpha 5.1 Pre-release
Pre-release
  • Use full .package() enum in Package.swift for swift-crypto package. This appears to resolve issues with latest version of swift 5.3