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

chore: move RPCv2CBOR implementation to smithy-swift #1881

Open
wants to merge 28 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
e83bbd0
Add ValidationResponseHeader middleware and RpcV2CborError and create…
dayaffe Nov 13, 2024
a41842a
add response integration
dayaffe Dec 2, 2024
2aac33b
Merge branch 'main' into day/rpcv2-cbor
dayaffe Dec 2, 2024
52bbce9
current version only has 3/69 failing protocol tests
dayaffe Dec 19, 2024
d1b2522
all tests passing now
dayaffe Dec 24, 2024
22eca82
Merge branch 'main' into day/rpcv2-cbor
dayaffe Dec 24, 2024
7db1681
Merge branch 'main' into day/rpcv2-cbor
dayaffe Dec 24, 2024
fd81a61
use getServiceName()
dayaffe Dec 24, 2024
ee580c4
fix one set of tests
dayaffe Dec 24, 2024
d75bb05
fix another test
dayaffe Dec 24, 2024
44a838c
try to fix ktlint issues
dayaffe Dec 26, 2024
854c28a
Merge branch 'main' into day/rpcv2-cbor
dayaffe Dec 26, 2024
35971c9
remove leftover code
dayaffe Dec 26, 2024
3068334
shorten middleware names due to swiftlint
dayaffe Dec 27, 2024
d579676
Merge branch 'main' into day/rpcv2-cbor
dayaffe Dec 27, 2024
9c5123c
address PR comments
dayaffe Dec 31, 2024
0a4e077
Move CBOR implementation to smithy-swift
dayaffe Jan 29, 2025
746a0a9
Merge branch 'main' into day/move-rpcv2
dayaffe Jan 29, 2025
10db612
remove OperationEndpointResolverMiddleware
dayaffe Jan 29, 2025
d1c64db
delete stuff that should've been deleted
dayaffe Jan 29, 2025
a87de26
add back missing import
dayaffe Jan 29, 2025
dd6467d
ktlint fixes
dayaffe Jan 29, 2025
1a6218d
separate AWS vs default versions of operation resolver middleware
dayaffe Jan 30, 2025
d5ac13e
Merge branch 'main' into day/move-rpcv2
dayaffe Jan 30, 2025
974f29d
try to ktlint
dayaffe Jan 30, 2025
11988d8
try to ktlint
dayaffe Jan 30, 2025
70887a6
swiftlint new line
dayaffe Feb 3, 2025
e0dfd7e
small change in naming
dayaffe Feb 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,28 +19,10 @@ import struct SmithyRetries.DefaultRetryStrategy
import struct SmithyRetries.ExponentialBackoffStrategy
import struct SmithyRetriesAPI.RetryStrategyOptions
import enum AWSSDKChecksums.AWSChecksumCalculationMode

typealias RuntimeConfigType = DefaultSDKRuntimeConfiguration<DefaultRetryStrategy, DefaultRetryErrorInfoProvider>
import class ClientRuntime.ClientConfigDefaultsProvider

/// Provides default configuration properties for AWS services.
public class AWSClientConfigDefaultsProvider {
public static func httpClientEngine() -> HTTPClient {
return RuntimeConfigType.makeClient(
httpClientConfiguration: RuntimeConfigType.defaultHttpClientConfiguration
)
}

public static func httpClientConfiguration() -> HttpClientConfiguration {
return RuntimeConfigType.defaultHttpClientConfiguration
}

public static func idempotencyTokenGenerator() -> IdempotencyTokenGenerator {
return RuntimeConfigType.defaultIdempotencyTokenGenerator
}

public static func clientLogMode() -> ClientLogMode {
return RuntimeConfigType.defaultClientLogMode
}
public class AWSClientConfigDefaultsProvider: ClientConfigDefaultsProvider {

public static func awsCredentialIdentityResolver(
_ awsCredentialIdentityResolver: (any AWSCredentialIdentityResolver)? = nil
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
//
// Copyright Amazon.com Inc. or its affiliates.
// All Rights Reserved.
//
// SPDX-License-Identifier: Apache-2.0
//

@_spi(SmithyReadWrite) import struct ClientRuntime.RpcV2CborError
@_spi(SmithyReadWrite) import class SmithyCBOR.Reader
import class SmithyHTTPAPI.HTTPResponse

// support awsQueryCompatible trait
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

since AwsQueryCompatibleErrorDetails logic is aws-specific, remains in aws-sdk-swift

extension RpcV2CborError {
@_spi(SmithyReadWrite)
public static func makeQueryCompatibleError(
httpResponse: HTTPResponse,
responseReader: Reader,
noErrorWrapping: Bool,
errorDetails: String?
) throws -> RpcV2CborError {
let errorCode = try AwsQueryCompatibleErrorDetails.parse(errorDetails).code
return try RpcV2CborError(
httpResponse: httpResponse,
responseReader: responseReader,
noErrorWrapping: noErrorWrapping,
code: errorCode
)
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@
*/
package software.amazon.smithy.aws.swift.codegen

import software.amazon.smithy.aws.swift.codegen.middleware.OperationEndpointResolverMiddleware
import software.amazon.smithy.aws.swift.codegen.middleware.AWSOperationEndpointResolverMiddleware
import software.amazon.smithy.aws.swift.codegen.middleware.UserAgentMiddleware
import software.amazon.smithy.aws.swift.codegen.swiftmodules.AWSClientRuntimeTypes
import software.amazon.smithy.codegen.core.Symbol
import software.amazon.smithy.model.shapes.OperationShape
import software.amazon.smithy.rulesengine.language.EndpointRuleSet
import software.amazon.smithy.rulesengine.traits.EndpointRuleSetTrait
import software.amazon.smithy.rulesengine.traits.EndpointTestsTrait
import software.amazon.smithy.swift.codegen.EndpointTestGenerator
import software.amazon.smithy.swift.codegen.integration.HTTPBindingProtocolGenerator
import software.amazon.smithy.swift.codegen.integration.HTTPProtocolCustomizable
import software.amazon.smithy.swift.codegen.integration.HttpProtocolTestGenerator
Expand Down Expand Up @@ -78,7 +79,7 @@ abstract class AWSHTTPBindingProtocolGenerator(
override fun addProtocolSpecificMiddleware(ctx: ProtocolGenerator.GenerationContext, operation: OperationShape) {
operationMiddleware.appendMiddleware(
operation,
OperationEndpointResolverMiddleware(ctx, customizations.endpointMiddlewareSymbol)
AWSOperationEndpointResolverMiddleware(ctx, customizations.endpointMiddlewareSymbol)
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,18 @@
*/
package software.amazon.smithy.aws.swift.codegen

import software.amazon.smithy.aws.swift.codegen.middleware.AWSOperationEndpointResolverMiddleware
import software.amazon.smithy.aws.swift.codegen.middleware.UserAgentMiddleware
import software.amazon.smithy.aws.swift.codegen.protocols.awsjson.AWSJSON1_0ProtocolGenerator
import software.amazon.smithy.aws.swift.codegen.protocols.awsjson.AWSJSON1_1ProtocolGenerator
import software.amazon.smithy.aws.swift.codegen.protocols.awsquery.AWSQueryProtocolGenerator
import software.amazon.smithy.aws.swift.codegen.protocols.ec2query.EC2QueryProtocolGenerator
import software.amazon.smithy.aws.swift.codegen.protocols.restjson.AWSRestJson1ProtocolGenerator
import software.amazon.smithy.aws.swift.codegen.protocols.restxml.RestXMLProtocolGenerator
import software.amazon.smithy.aws.swift.codegen.protocols.rpcv2cbor.RpcV2CborProtocolGenerator
import software.amazon.smithy.aws.swift.codegen.protocols.rpcv2cbor.AWSRpcV2CborCustomizations
import software.amazon.smithy.swift.codegen.integration.ProtocolGenerator
import software.amazon.smithy.swift.codegen.integration.SwiftIntegration
import software.amazon.smithy.swift.codegen.protocols.rpcv2cbor.RpcV2CborProtocolGenerator

/**
* Integration that registers protocol generators this package provides
Expand All @@ -33,6 +36,16 @@ class AddProtocols : SwiftIntegration {
RestXMLProtocolGenerator(),
AWSQueryProtocolGenerator(),
EC2QueryProtocolGenerator(),
RpcV2CborProtocolGenerator()
RpcV2CborProtocolGenerator(
customizations = AWSRpcV2CborCustomizations(),
operationEndpointResolverMiddlewareFactory = { ctx, endpointMiddlewareSymbol ->
AWSOperationEndpointResolverMiddleware(ctx, endpointMiddlewareSymbol)
},
userAgentMiddlewareFactory = { ctx ->
UserAgentMiddleware(
ctx.settings
)
}
)
)
}
Loading
Loading