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

aws: Add default HTTP client instead of http.DefaultClient/Transport #315

Merged
merged 2 commits into from
Jun 25, 2019

Conversation

jasdel
Copy link
Contributor

@jasdel jasdel commented May 29, 2019

Adds a new BuildableHTTPClient type to the SDK's aws package. The type
uses the builder pattern with immutable changes. Modifications to the
buildable client create copies of the client.

Adds a HTTPClient interface to the aws package that the SDK will use as
an abstraction over the specific HTTP client implementation. The SDK
will default to the BuildableHTTPClient, but a *http.Client can be also
provided for custom configuration.

When the SDK's aws.Config.HTTPClient value is a BuildableHTTPClient the
SDK will be able to use API client specific request timeout options.

Fix #279
Fix #269

Outstanding:

  • Add unit tests with race check for http_client_builder.go
  • Should BuildableHTTPClient.BuildHTTPClient return HTTPClient or *http.Client?
  • SDK generally should never follow redirects, required for some S3 API operations. The DoWithoutFollow feels clunky/bad fit. Resolve this conflict when custom *http.Client is used vs BuildableHTTPClient.
  • Cleanup BuildableHTTPClient's documentation and add examples.

@jasdel jasdel added the pr/work-in-progress This PR is a draft and needs further work. label May 29, 2019
Adds a new BuildableHTTPClient type to the SDK's aws package. The type
uses the builder pattern with immutable changes. Modifications to the
buildable client create copies of the client.

Adds a HTTPClient interface to the aws package that the SDK will use as
an abstraction over the specific HTTP client implementation. The SDK
will default to the BuildableHTTPClient, but a *http.Client can be also
provided for custom configuration.

When the SDK's aws.Config.HTTPClient value is a BuildableHTTPClient the
SDK will be able to use API client specific request timeout options.

Fix aws#279
Fix aws#269
@jasdel jasdel force-pushed the refactor/10_HTTPClientBuilder branch from d2fa6d6 to dd1e58f Compare June 7, 2019 00:31
@jasdel jasdel added breaking-change Issue requires a breaking change to remediate. and removed pr/work-in-progress This PR is a draft and needs further work. labels Jun 25, 2019
@jasdel jasdel merged commit a357131 into aws:master Jun 25, 2019
@jasdel jasdel deleted the refactor/10_HTTPClientBuilder branch June 25, 2019 21:47
jasdel added a commit to jasdel/aws-sdk-go-v2 that referenced this pull request Jul 24, 2019
Services
===
* Synced the V2 SDK with latest AWS service API definitions.
* Fixes [aws#341](aws#341)
* Fixes [aws#342](aws#342)

SDK Breaking Changes
===
* `aws`: Add default HTTP client instead of http.DefaultClient/Transport ([aws#315](aws#315))
  * Adds a new BuildableHTTPClient type to the SDK's aws package. The type uses the builder pattern with immutable changes. Modifications to the buildable client create copies of the client.  Adds a HTTPClient interface to the aws package that the SDK will use as an abstraction over the specific HTTP client implementation. The SDK will default to the BuildableHTTPClient, but a *http.Client can be also provided for custom configuration.  When the SDK's aws.Config.HTTPClient value is a BuildableHTTPClient the SDK will be able to use API client specific request timeout options.
  * Fixes [aws#279](aws#279)
  * Fixes [aws#269](aws#269)

SDK Enhancements
===
* `service/s3/s3manager`: Update S3 Upload Multipart location ([aws#324](aws#324))
  * Updates the Location returned value of S3 Upload's Multipart UploadOutput type to be consistent with single part upload URL. This update also brings the multipart upload Location inline with the S3 object URLs created by the SDK.
  * Fixes [aws#323](aws#323)
  * V2 Port [aws/aws-sdk-go#2453](aws/aws-sdk-go#2453)

SDK Bugs
===
* `private/model`: Handles empty map vs unset map behavior in send request ([aws#337](aws#337))
  * Updated shape marshal model to handle the empty map vs nil map behavior. Adding a test case to assert behavior when a user sends an empty map vs nil map.
  * Fix [aws#332](aws#332)
* `service/rds`: Fix presign URL for same region ([aws#331](aws#331))
  * Fixes RDS no-autopresign URL for same region issue for aws-sdk-go-v2. Solves the issue by making sure that the presigned URLs are not created, when the source and destination regions are the same. Added and updated the tests accordingly.
  * Fix [aws#271](aws#271)
* `private/protocola/json/jsonutil`: Fix Unmarshal map[string]bool ([aws#320](aws#320))
  * Fixes the JSON unmarshaling of maps of bools. The unmarshal case was missing the condition for bool value, in addition the bool pointer.
  * Fix [aws#319](aws#319)
jasdel added a commit that referenced this pull request Jul 25, 2019
Services
===
* Synced the V2 SDK with latest AWS service API definitions.
* Fixes [#341](#341)
* Fixes [#342](#342)

SDK Breaking Changes
===
* `aws`: Add default HTTP client instead of http.DefaultClient/Transport ([#315](#315))
  * Adds a new BuildableHTTPClient type to the SDK's aws package. The type uses the builder pattern with immutable changes. Modifications to the buildable client create copies of the client.  Adds a HTTPClient interface to the aws package that the SDK will use as an abstraction over the specific HTTP client implementation. The SDK will default to the BuildableHTTPClient, but a *http.Client can be also provided for custom configuration.  When the SDK's aws.Config.HTTPClient value is a BuildableHTTPClient the SDK will be able to use API client specific request timeout options.
  * Fixes [#279](#279)
  * Fixes [#269](#269)

SDK Enhancements
===
* `service/s3/s3manager`: Update S3 Upload Multipart location ([#324](#324))
  * Updates the Location returned value of S3 Upload's Multipart UploadOutput type to be consistent with single part upload URL. This update also brings the multipart upload Location inline with the S3 object URLs created by the SDK.
  * Fixes [#323](#323)
  * V2 Port [aws/aws-sdk-go#2453](aws/aws-sdk-go#2453)

SDK Bugs
===
* `private/model`: Handles empty map vs unset map behavior in send request ([#337](#337))
  * Updated shape marshal model to handle the empty map vs nil map behavior. Adding a test case to assert behavior when a user sends an empty map vs nil map.
  * Fix [#332](#332)
* `service/rds`: Fix presign URL for same region ([#331](#331))
  * Fixes RDS no-autopresign URL for same region issue for aws-sdk-go-v2. Solves the issue by making sure that the presigned URLs are not created, when the source and destination regions are the same. Added and updated the tests accordingly.
  * Fix [#271](#271)
* `private/protocola/json/jsonutil`: Fix Unmarshal map[string]bool ([#320](#320))
  * Fixes the JSON unmarshaling of maps of bools. The unmarshal case was missing the condition for bool value, in addition the bool pointer.
  * Fix [#319](#319)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
breaking-change Issue requires a breaking change to remediate.
Projects
None yet
1 participant