* change http checksums to be base64 encoded
due to a misreading of the spec, the http checksums where hex encoded when they should actually be base64 encoded
* Update changelog
* Suppress noisy logging from the renamer
* Allow codegen settings model settings
* fix more naming bugs
* Fix ambiguous binding function name
* Attempt to fix gradle script bugs
* Remove double unescape
* Fix service names in tier 1 services list
* Fix ResponseBindingGeneratorTest
* Add support for endpoints.json
* Backout Smithy 1.8 changes
* Delete DefaultAwsEndpoint resolver
* Add test for iam / fips
* IAM works now
* CR feedback
* Fix tests
* CR feedback
* suppress serializing of primitive 0s as struct members
When a struct primitive is a "zero value" it shouldn't be serialized. It's frequently the case that `0` is an invalid input & sending 0 on the wire will actually cause the service to reject the request.
Fixes#439
* support primitive zeros in restJson and restXml
1. Avoid serializing PrimitiveInteger when it is 0, unless it is required
2. Setup the ability to write protocol tests against generated SDKs
3. Fix a trailing `,` in aws-sdk-codegen-test
4. Keep trying to get the gradle build to invalidate caches properly.
* Add awsQuery support
* Cleanups
* Fix bad merge
* Fix clippy error
* Add response deserialization support for the AWS query protocol
* Split AwsQuery specifics into separate AwsQueryParserGenerator
* Refactor operation wrapping logic between AwsQuery and RestXml
* Clean up parseStructInner
* Only include document bound members in HTTP operations
* Add rest-json-extras test for maps with an enum key
* Fix serialization of maps with enum keys
* Replace SerdeJsonSerializerGenerator with JsonSerializerGenerator
* Suppress clippy warning
* CR feedback
* Refactor HttpBinding protocol
* Update XmlBindingTraitParserGenerator to fix new protocol tests
* Clear all warnings
* Major overhaul of Http Trait based protocols
* Remove pointless wrapping
* Nullable types fall through
* Cleanup JsonParserGenerator, refactor
* More Json parser generator cleanups
* Update test
* Fix unit test
* [cleanup] Move interfaces to their own files
* Use parser / serializer generators from AwsJson
* Refactor HttpProtocolGenerator body construction
* Well that was easy... (add streaming input support)
* Fix tests, clippy warning
* One more clippy wrap ignore
* Fix test that used private API
* Add test for default value
* Upgrade to Smithy 1.7
Two changes:
1. Add support for shape renaming. Since renaming doesn't apply to operations, errors, or resources, this was actually a fairly narrow change. I intentionally
maintained the ability to generate a model without a service shape, I expect at some point, some one will just want to make some Rust structs.
2. Add support for map-driven query params.
* Update APIGW model
* Fix bugs in httpParams implementation
* Cleanup logic and add one more test
* Rename generated crates to aws-sdk-*
* Don't use module name as service name for metadata
* Add module authors to protocol test builds
* Couple more fixes
* Fix module authors field
* Update dependency
* restJson1 Header Deserialization Support
This adds support for the `@httpHeader` trait during request deserialization. This is facilitated via a `Read` abstraction which allows parsers to consume part of an input and return the remaining input. We use this to enable things like `HttpDates` which actually include commas to be parsed in a comma delimited fashion.
The internal libraries may eventually be refactored to reduce the amount of generics if it proves to be a compiler bottleneck.
* Add support for parsing request bodies
* Add response code parsing
* Lots of refactorings to restJson response parsing
* Fix some clippy lints
* Add document deserialization support and delete the failing tests
* Fallback to a generic error representation for unmodeled errors
* DRY out some dependencies
* Fix name is instant_iso8601 resource
* Top level error shape improvements
This commit adds `code` and `message` as inherent methods to top level error shapes (eg. `ListTablesError`). If the error is unmodeled, it uses
downcasting to extract a message.
* Fix clippy warning
Named enums were being incorrectly serialized via the derive macro. This was causing the value of the enum to be disregarded. This change implements `Serialize` and `Deserialize` explicitly for enums.
Additionally, a new protocol test was added that avoid using sets–this allow it to be run without being flaky until #37 is fixed.
* Generate Crate Documentation
This commit utilizes the documentation trait attached to the relevant service shape to generate crate-level documentation for services.
* Test fixes
* Don't upload integration test docs
* Support Deserializing Http Dates
Deserializing HTTP dates is made slightly more complex because Smithy actually supports a format _not_ outlined by the RFC where the HTTP date
uses fractional seconds. For this reason (as well as dropping the chrono dependency in the future), `httpdate` was forked and incorporated into smithy-types. At a later date, we _may_ consider inlining this dependency into the crates that actually need it.
As a side change, I'm starting to refactor the way that custom serialization works via new-types. This enables generating composable serializers
that are much easier to autogenerate.
This commit adds support for the idempotency token trait via a config. I'm not ready to build a generalized Config generator yet, so intead I'm injecting a static config via inlinable. A follow up diff will flesh out ServiceConfigGenerator to support adding more config sections as required by AWS.
* Dynamo IT & IO Layer v0
This diff adds 2 _extremely_ WIP components:
1. A basic IO layer that uses Hyper and a pure Rust signer. This will change significantly over the coming days.
2. A rudimentary Dynamo DB integration test that creates a table and verifies that it exists.
Neither of these is anywhere near final, but, rather, these are intended as a starting point for discussion.
* Fixup tests
* Generate documentation for structures
The first of many commits to generate docs. This is a first pass for structures, we still need to document enums & unions. Some serious design also needs to occur to figure out the best practice for turning the Smithy documentation into nice Rust documentation.
* Bump Java version to 9
* Remove exclusion of `target`
* Don't build docs for deps
* Update to use getMemberTrait
* Add document types & other bug fixes to support AwsJson11
* Expand protocol tests for RestJson1.1 and AwsRestJson
This diff adds RestJson1 and AwsJson1.1 to the integration test suite. It uncovered a number of bugs, some of which I fixed inline and some I filed issues for and disabled the tests.
* Add another disabled test & cleaup
* Fix tests broken by changing URL encoding to encode ':'
* Copy-paste Aarons comment
* Fixup Rustfmt
* Implement Instantiator
* Add support for dev-dependencies
* Pass the protocol in Protocol config
* Add initial protocol test generator
This commit adds an initial and very limited implementation of protocol test generation. Specifically,
it only asserts that the query string contains certain required parameters. We will update protocol test generation in concert with updates to the code generation features.
* Fixes from integration tests
* Add test of recursive maps, fix implementation of empty maps
* Add protocol test generator, pre-commit hooks
* Fix test
* Fix formatting
* Productionize Integration Test Machinery
smithy-build.json is now dynamically generated along with a Cargo.toml to facilitate easy adding of new integration tests.
* We don't need REPO_ROOT anymore
* Add new models to run integration tests against
* Add initial support for HTTP protocols
* Refactor protocol generation arguments
* Add more method comments
* Remove some dead code
* CR feedback