* add: initial draft of bytestream callback RFC
* add: builder-style method
* update: remove callback insert method in favor of builder method
update: Arc callbacks instead of boxing them
remove: most bounds from ByteStreamReadCallback trait
add: PartialEq/Eq impl for Inner that disregards callback list
* update: RFC with SdkBody impl
update: RFC with checksum callback example
* update: respond to PR comments
* update: callback impls
* remove: Sync bounds from callback traits
* update: consolidate and simplify callback API
* fix: leftover terminology
* Implement `crate-hasher` utility to hash crate source files
* Add `generate-version-manifest` subcommand to publisher tool
* Incorporate `generate-version-manifest` into the build system
* Start making the PR bot run through the Docker build image
* Use nightly clippy in tools CI when necessary
* Fix transient failure when acquiring the build image
* Include examples repo revision in `versions.toml`
* Fix nightly clippy lint in `cargo-api-linter`
* Track examples revision in sync tool
* Make it easier to run Docker CI locally
* Add endpoint resolver to SdkConfig
This commit adds an `endpoint_resolver` field to SdkConfig, which flows
through to the `endpoint_resolver` field on each individual service
configuration. To avoid a circular dependency between the aws-types
crate and the aws-endpoint crate, the `AwsEndpoint` type and its
dependencies are moved from the aws-endpoint crate to the aws-types
crate, then rexported in aws-endpoint.
Fixaws-labs/aws-sdk-rust#396.
* impl From<'static str> for signing service and signing region
* Code generate for the static string implementation
* Add EndpointResolver to aws_config
* Add docs and adapt test
* Fix test
* Fix endpoint config customizations test to remove dead code
* Re-add `.set_endpoint`
* Remove print and update changelog
Co-authored-by: Russell Cohen <rcoh@amazon.com>
`clap` v3 added support for a `structopt`-like parser derive usage.
`structopt` is now in maintenance mode
(https://docs.rs/structopt/latest/structopt/#maintenance); it is
recommended to migrate to `clap`.
Structs to parse CLI arguments have been renamed to `Args` for
consistency.
It currently returns a `RuntimeType`. It makes no actual difference
whatsoever, but `RuntimeType` is kept for types we don't code-generate,
but that we use from other crates.
This adds to improvements to `AssumeRoleProvider`:
1. This adds a cache aroudn this provider. Since this provider is intended to be used directly by customers,
it should be cached to improve performance and predictability.
2. Add support for configuring the role session length.
- Refactors CI to use composite actions so that there's less duplication in the workflow yaml files.
- Switches to a different image tagging approach for the Docker build image: now the git hash of the `tools/` directory is the image tag rather than the commit hash of `HEAD`. This will result in more image reuse if the tools haven't changed, and makes the logic for deciding whether a new image must be built much simpler.
- When running CI on main, ensures the Docker build image is built and uploaded to ECR before running the CI tests.
* Update pinned nightly to fix `cargo udeps` checks
* Update `api-linter` to work on `nightly-2022-03-29`
* Make it possible to test tool modifications in a pull request
Establishes a Docker build image with build tools precompiled into it to improve CI time and reduce GitHub Actions workflow configuration. Also makes it possible to run the exact CI workflows in local development.
And `ServerHttpProtocolImplGenerator` to
`ServerHttpBoundProtocolTraitImplGenerator`.
The client-side classes are named `HttpBoundProtocolGenerator` and
`HttpBoundProtocolTraitImplGenerator`, so the server-side clases should
just add the "Server" prefix and not deviate from the naming convention.
In #1148, `@required` started being strictly interpreted by server SDKs.
That meant that when serializing values from structures, we no longer
borrow for every shape when looking into `Option`s as in:
```
if let Some(var_37) = &input.value
```
(See for example `RustWriter.serializeStructure` from
`JsonSerializerGenerator.kt` for the relevant serialization
code-generation routine)
Instead, we attempt to serialize the unborrowed required shape value.
This works well for booleans, numeric types (since they are `Copy`),
collections (since we borrow their items while iterating), and strings
(since we call `as_str()`). It also worked for unions and documents,
since we already borrowed (note that `ValueExpression.kt` makes sure to
not borrow twice if the value is already a reference, like when clients
look into `Option`s).
We fixed borrowing of blobs in #1269.
However, we currently don't borrow for timestamps and nested shapes.
This commit fixes that, and adds a comprehensive protocol test to ensure
we exercise all the lines relevant to serialization of required shapes.
This commit adds another suite of protocol tests to test miscellaneous
aspects of code generation where protocol selection should not be
relevant.
The first test is code-generating an operation with a nested required
shape, minimally reproducing the bug that was fixed in 75056c, so that
we don't regress on it. I've added it to both the `codegen-test` and
`codegen-server-test` subprojects, even though the bug only affected the
server, in part to also incentivize us into adding more tests to this
Smithy model for both clients and servers.
* Improve Pokémon Service `Makefile`
* Code-generate only the Pokémon Service SDK (as opposed to all targets
in the `codegen-server-test` subproject like we do currently).
* Add `run` target to run the service.
* Add `doc-open` target to generate and open Rustdoc documentation.
* Bring back client generation
Co-authored-by: Matteo Bigoi <1781140+crisidev@users.noreply.github.com>
* add: default list of http versions
add: type alias for list of http versions
add: decorator to add desired http versions to property bag
fix: gradle warning for argument "model"
update: CHANGELOG
* fix: clippy lint
* update: use more accurate name for test RustCodegenDecorators
rename: HttpVersionListGenerator.kt to HttpVersionListCustomization.kt
update: HttpVersionListCustomization to grab versions from models when possible
fix: various docs issues reported by IDE
add: new "Extras" section to ServiceConfig
update: code broke by "Extras" change
add: tests for http version sniffing