Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add URLSession support #598

Closed
wants to merge 50 commits into from
Closed

Add URLSession support #598

wants to merge 50 commits into from

Conversation

adam-fowler
Copy link
Member

No description provided.

@adam-fowler adam-fowler marked this pull request as draft December 12, 2023 13:28
@adam-fowler adam-fowler force-pushed the urlsession branch 2 times, most recently from 2142df8 to 6aec936 Compare December 22, 2023 06:35
@adam-fowler adam-fowler marked this pull request as ready for review December 22, 2023 10:42
@adam-fowler adam-fowler force-pushed the async-nonblocking-fileio branch from b30be93 to 515e7df Compare December 24, 2023 06:44
adam-fowler and others added 24 commits December 24, 2023 08:02
* make Credential Provider tests async

* Make all AWSClient tests async

* Make endpoint, service, middleware logging tests async

* Make paginate, payload and waiter tests async

* Last non async call
* Remove SotoCrypto

* Remove @available/format
* Remove eventLoop from execute commands

* Remove commented out code
* Remove EventLoop paginate

* Remove Async from PaginateTests

* Remove @available(macOS...
* Remove EventLoop version of waiters

* Speed up waiter tests
* Add ExpiringValue actor

* Replace EventLoop endpoint discovery

* Rename AWSClient+EndpointDiscovery+async

* Add tests for ExpiringValue, add comments

* more comments

* Remove Date.now

* Add logging for endpoint discovery

* Update Sources/SotoCore/AWSClient+EndpointDiscovery.swift

Co-authored-by: Tim Condon <[email protected]>

* Add comment about endpoint renewal

---------

Co-authored-by: Tim Condon <[email protected]>
* Remove AWSClient.execute calls with EventLoop

* Fix STSAssumeRole after removing EventLoop execute

* Fix AWSClient waiter code

* Remove commented out code

* Remove EL credential functions

* Merge async files with parent implementations

* Delete AWSClient+Waiter+async.swift

* Fix up paginate code

* Remove EventLoop from execute closure

* Changes requested in PR

* Update Sources/SotoCore/Waiters/AWSClient+Waiter.swift

Co-authored-by: Tim Condon <[email protected]>

---------

Co-authored-by: Tim Condon <[email protected]>
* Make credential providers async

* Fix tests

Also add support for initialising an ExpiringValue with an updating closure. Needed to add another state to get this working.

* getTaskProviderTask -> getCredentialProviderTask

* Format copyright 2023

* validation changes

* Fix issues with credential providers

Add error state for ExpiringValue where previous getValue returned an error

* Don't throw error during credential provider selection

If credential provider fails to provide a credential don't throw an error when you are shutting it down

* Shutdown test for rotating credential provider

And fixed a bug

* Added testDeferredCredentialProviderSetupShutdown
* Use async HTTPClient calls

Currently streaming is not working

* Comments

* Extract HTTPBody out so it can be used in request

* Flush body, when not expecting anything

* Remove eventLoop from function comment headers
* Add support for returning streamed responses

* Remove old response streaming fiunctions

* Remove unused function

* Comment update
* Add support for request streaming

* Remove commented out code
* S3 signed requests

* Remove old streaming code and AWSPayload

* comments

* Add todo comment

* bufferSequence -> asyncSequence

* compile fix

* Make HTTPBody(asyncSequence:length:) public

* Add helper init for AWSResponseError

* Make ByteBufferAsyncSequence public

* if response body is buffer then print as string

* Compile fix
* Rename HTTPBody to AWSHTTPBody

* Add AWSResponse to Codable userInfo

* Add decode functions for AWSResponse

* ResponseContainer for decoding

* Fix tests after userInfo changes

* Remove DictionaryDecoder

Now we pass the response via uesrInfo to the decoder and decode header, body and payload in the init(from) function, we can use the JSONDecoder for decoding responses.

* Fix tests

* Re-organise root element code

* Fix after merge

* Update Sources/SotoCore/Encoder/ResponseContainer.swift

Co-authored-by: Tim Condon <[email protected]>

---------

Co-authored-by: Tim Condon <[email protected]>
* Add EventStream type

* Split event stream code into two files

* If response is chunked assume it is raw

* Fix test errors

* Fix a couple strict concurrency issues I missed

* Add tests for EventStreams

* Changes from PR review
* reorder execute

* process response in execute

* Collapse AWSHTTPResponse and AWSResponse into one

* Collpase AWSRequest and AWSHTTPRequest into one

* Add HTTP to request and response type names

* Remove new middleware until we need it

No need to include in this PR

* Remove re-org to make PR review easier

* Changes from PR comments

* Another fix
* import SotoXML as implementation only

* formatting
@adam-fowler adam-fowler force-pushed the async-nonblocking-fileio branch from 515e7df to 1a059d2 Compare February 17, 2024 10:14
@adam-fowler adam-fowler changed the base branch from async-nonblocking-fileio to aws-http-client February 17, 2024 11:39
@adam-fowler adam-fowler changed the title Reimplement AWSHTTPClient protocol and add URLSession support Add URLSession support Feb 17, 2024
@adam-fowler adam-fowler marked this pull request as draft March 25, 2024 16:53
Base automatically changed from aws-http-client to 7.x.x March 31, 2024 08:30
@adam-fowler adam-fowler changed the base branch from 7.x.x to main May 31, 2024 08:07
@adam-fowler
Copy link
Member Author

Closing in favour of #612

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants