Skip to content

Commit 1ec20d0

Browse files
authored
chore: kickoff release
2 parents 4aee7e2 + aa18599 commit 1ec20d0

File tree

132 files changed

+1494
-706
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

132 files changed

+1494
-706
lines changed

AmplifyPlugins/API/Sources/AWSAPIPlugin/Interceptor/RequestInterceptor/IAMURLRequestInterceptor.swift

+6-5
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ import Amplify
99
import AWSPluginsCore
1010
import InternalAmplifyCredentials
1111
import Foundation
12-
import ClientRuntime
12+
import SmithyHTTPAPI
13+
import Smithy
1314

1415
typealias AWSRegionType = String
1516

@@ -41,12 +42,12 @@ struct IAMURLRequestInterceptor: URLRequestInterceptor {
4142
request.setValue(userAgent, forHTTPHeaderField: URLRequestConstants.Header.userAgent)
4243

4344
let httpMethod = (request.httpMethod?.uppercased())
44-
.flatMap(HttpMethodType.init(rawValue:)) ?? .get
45+
.flatMap(HTTPMethodType.init(rawValue:)) ?? .get
4546

4647
let queryItems = URLComponents(url: url, resolvingAgainstBaseURL: false)?.queryItems?
47-
.map { ClientRuntime.SDKURLQueryItem(name: $0.name, value: $0.value)} ?? []
48+
.map { URIQueryItem(name: $0.name, value: $0.value)} ?? []
4849

49-
let requestBuilder = SdkHttpRequestBuilder()
50+
let requestBuilder = HTTPRequestBuilder()
5051
.withHost(host)
5152
.withPath(url.path)
5253
.withQueryItems(queryItems)
@@ -66,7 +67,7 @@ struct IAMURLRequestInterceptor: URLRequestInterceptor {
6667

6768
guard let urlRequest = try await AmplifyAWSSignatureV4Signer().sigV4SignedRequest(
6869
requestBuilder: requestBuilder,
69-
credentialsProvider: iamCredentialsProvider.getCredentialsProvider(),
70+
credentialIdentityResolver: iamCredentialsProvider.getCredentialIdentityResolver(),
7071
signingName: signingName,
7172
signingRegion: region,
7273
date: Date()

AmplifyPlugins/API/Sources/AWSAPIPlugin/Interceptor/SubscriptionInterceptor/IAMAuthInterceptor.swift

+6-6
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ import Foundation
99
@_spi(WebSocket) import AWSPluginsCore
1010
import InternalAmplifyCredentials
1111
import Amplify
12-
import AWSClientRuntime
13-
import ClientRuntime
12+
import SmithyHTTPAPI
13+
import SmithyIdentity
1414

1515
class IAMAuthInterceptor {
1616

17-
let authProvider: CredentialsProviding
17+
let authProvider: any AWSCredentialIdentityResolver
1818
let region: AWSRegionType
1919

20-
init(_ authProvider: CredentialsProviding, region: AWSRegionType) {
20+
init(_ authProvider: some AWSCredentialIdentityResolver, region: AWSRegionType) {
2121
self.authProvider = authProvider
2222
self.region = region
2323
}
@@ -35,7 +35,7 @@ class IAMAuthInterceptor {
3535
///
3636
/// 1. A request is created with the IAM based auth headers (date, accept, content encoding, content type, and
3737
/// additional headers.
38-
let requestBuilder = SdkHttpRequestBuilder()
38+
let requestBuilder = HTTPRequestBuilder()
3939
.withHost(host)
4040
.withPath(endpoint.path)
4141
.withMethod(.post)
@@ -51,7 +51,7 @@ class IAMAuthInterceptor {
5151
/// the request headers as authorization and security token.
5252
do {
5353
guard let urlRequest = try await signer.sigV4SignedRequest(requestBuilder: requestBuilder,
54-
credentialsProvider: authProvider,
54+
credentialIdentityResolver: authProvider,
5555
signingName: "appsync",
5656
signingRegion: region,
5757
date: Date()) else {

AmplifyPlugins/API/Sources/AWSAPIPlugin/SubscriptionFactory/AppSyncRealTimeClientFactory.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ actor AppSyncRealTimeClientFactory: AppSyncRealTimeClientFactoryProtocol {
101101
let provider = AWSOIDCAuthProvider(authService: authService)
102102
return AuthTokenInterceptor(getLatestAuthToken: provider.getLatestAuthToken)
103103
case .awsIAM(let awsIAMConfiguration):
104-
return IAMAuthInterceptor(authService.getCredentialsProvider(),
105-
region: awsIAMConfiguration.region)
104+
return IAMAuthInterceptor(authService.getCredentialIdentityResolver(),
105+
region: awsIAMConfiguration.region)
106106
case .openIDConnect:
107107
guard let oidcAuthProvider = apiAuthProviderFactory.oidcAuthProvider() else {
108108
throw APIError.invalidConfiguration(

AmplifyPlugins/Analytics/Tests/AWSPinpointAnalyticsPluginUnitTests/AWSPinpointAnalyticsPluginConfigureTests.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import XCTest
1414
class AWSPinpointAnalyticsPluginConfigureTests: AWSPinpointAnalyticsPluginTestBase {
1515

1616
override func setUp() async throws {
17-
AWSPinpointFactory.credentialsProvider = MockCredentialsProvider()
17+
AWSPinpointFactory.credentialIdentityResolver = MockCredentialsProvider()
1818
try await super.setUp()
1919
}
2020

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/AWSCognitoAuthPlugin+AppSyncSigner.swift

+28-19
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,13 @@
88
import Foundation
99
import Amplify // Amplify.Auth
1010
import AWSPluginsCore // AuthAWSCredentialsProvider
11-
import AWSClientRuntime // AWSClientRuntime.CredentialsProviding
12-
import ClientRuntime // SdkHttpRequestBuilder
1311
import AwsCommonRuntimeKit // CommonRuntimeKit.initialize()
12+
import AWSSDKHTTPAuth // AWSSigV4Signer
13+
import Smithy // URIQueryItem
14+
import SmithyHTTPAPI
15+
import SmithyHTTPAuth
16+
import SmithyHTTPAuthAPI
17+
import SmithyIdentity // AWSCredentialIdentity
1418

1519
extension AWSCognitoAuthPlugin {
1620

@@ -29,11 +33,15 @@ extension AWSCognitoAuthPlugin {
2933
region: region)
3034
}
3135
}
32-
36+
37+
private static var signer = {
38+
return AWSSigV4Signer()
39+
}()
40+
3341
static func signAppSyncRequest(_ urlRequest: URLRequest,
3442
region: Swift.String,
3543
signingName: Swift.String = "appsync",
36-
date: ClientRuntime.Date = Date()) async throws -> URLRequest {
44+
date: Date = Date()) async throws -> URLRequest {
3745
CommonRuntimeKit.initialize()
3846

3947
// Convert URLRequest to SDK's HTTPRequest
@@ -43,11 +51,11 @@ extension AWSCognitoAuthPlugin {
4351
}
4452

4553
// Retrieve the credentials from credentials provider
46-
let credentials: AWSClientRuntime.AWSCredentials
54+
let credentials: AWSCredentialIdentity
4755
let authSession = try await Amplify.Auth.fetchAuthSession()
4856
if let awsCredentialsProvider = authSession as? AuthAWSCredentialsProvider {
4957
let awsCredentials = try awsCredentialsProvider.getAWSCredentials().get()
50-
credentials = awsCredentials.toAWSSDKCredentials()
58+
credentials = try awsCredentials.toAWSSDKCredentials()
5159
} else {
5260
let error = AuthError.unknown("Auth session does not include AWS credentials information")
5361
throw error
@@ -70,7 +78,7 @@ extension AWSCognitoAuthPlugin {
7078
signingAlgorithm: .sigv4)
7179

7280
// Sign request
73-
guard let httpRequest = await AWSSigV4Signer.sigV4SignedRequest(
81+
guard let httpRequest = await signer.sigV4SignedRequest(
7482
requestBuilder: requestBuilder,
7583

7684
signingConfig: signingConfig
@@ -82,15 +90,15 @@ extension AWSCognitoAuthPlugin {
8290
return setHeaders(from: httpRequest, to: urlRequest)
8391
}
8492

85-
static func setHeaders(from sdkRequest: SdkHttpRequest, to urlRequest: URLRequest) -> URLRequest {
93+
static func setHeaders(from sdkRequest: SmithyHTTPAPI.HTTPRequest, to urlRequest: URLRequest) -> URLRequest {
8694
var urlRequest = urlRequest
8795
for header in sdkRequest.headers.headers {
8896
urlRequest.setValue(header.value.joined(separator: ","), forHTTPHeaderField: header.name)
8997
}
9098
return urlRequest
9199
}
92100

93-
static func createAppSyncSdkHttpRequestBuilder(urlRequest: URLRequest) throws -> SdkHttpRequestBuilder? {
101+
static func createAppSyncSdkHttpRequestBuilder(urlRequest: URLRequest) throws -> HTTPRequestBuilder? {
94102

95103
guard let url = urlRequest.url,
96104
let host = url.host else {
@@ -101,12 +109,12 @@ extension AWSCognitoAuthPlugin {
101109
headers.updateValue(host, forKey: "host")
102110

103111
let httpMethod = (urlRequest.httpMethod?.uppercased())
104-
.flatMap(HttpMethodType.init(rawValue:)) ?? .get
112+
.flatMap(HTTPMethodType.init(rawValue:)) ?? .get
105113

106114
let queryItems = URLComponents(url: url, resolvingAgainstBaseURL: false)?.queryItems?
107-
.map { ClientRuntime.SDKURLQueryItem(name: $0.name, value: $0.value)} ?? []
115+
.map { URIQueryItem(name: $0.name, value: $0.value)} ?? []
108116

109-
let requestBuilder = SdkHttpRequestBuilder()
117+
let requestBuilder = HTTPRequestBuilder()
110118
.withHost(host)
111119
.withPath(url.path)
112120
.withQueryItems(queryItems)
@@ -122,19 +130,20 @@ extension AWSCognitoAuthPlugin {
122130

123131
extension AWSPluginsCore.AWSCredentials {
124132

125-
func toAWSSDKCredentials() -> AWSClientRuntime.AWSCredentials {
133+
func toAWSSDKCredentials() throws -> AWSCredentialIdentity {
126134
if let tempCredentials = self as? AWSTemporaryCredentials {
127-
return AWSClientRuntime.AWSCredentials(
135+
return AWSCredentialIdentity(
128136
accessKey: tempCredentials.accessKeyId,
129137
secret: tempCredentials.secretAccessKey,
130-
expirationTimeout: tempCredentials.expiration,
131-
sessionToken: tempCredentials.sessionToken)
138+
expiration: tempCredentials.expiration,
139+
sessionToken: tempCredentials.sessionToken
140+
)
132141
} else {
133-
return AWSClientRuntime.AWSCredentials(
142+
return AWSCredentialIdentity(
134143
accessKey: accessKeyId,
135144
secret: secretAccessKey,
136-
expirationTimeout: Date())
145+
expiration: nil
146+
)
137147
}
138-
139148
}
140149
}

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/AWSCognitoAuthPlugin+Configure.swift

+14-5
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import ClientRuntime
1414
import AWSClientRuntime
1515
@_spi(PluginHTTPClientEngine) import InternalAmplifyCredentials
1616
@_spi(InternalHttpEngineProxy) import AWSPluginsCore
17+
import SmithyRetriesAPI
18+
import SmithyRetries
1719

1820
extension AWSCognitoAuthPlugin {
1921

@@ -91,7 +93,8 @@ extension AWSCognitoAuthPlugin {
9193
case .userPools(let userPoolConfig), .userPoolsAndIdentityPools(let userPoolConfig, _):
9294
let configuration = try CognitoIdentityProviderClient.CognitoIdentityProviderClientConfiguration(
9395
region: userPoolConfig.region,
94-
serviceSpecific: .init(endpointResolver: userPoolConfig.endpoint?.resolver)
96+
signingRegion: userPoolConfig.region,
97+
endpointResolver: userPoolConfig.endpoint?.resolver
9598
)
9699

97100
if var httpClientEngineProxy = httpClientEngineProxy {
@@ -108,11 +111,14 @@ extension AWSCognitoAuthPlugin {
108111
}
109112

110113
if let maxRetryUnwrapped = networkPreferences?.maxRetryCount {
111-
configuration.retryStrategyOptions = RetryStrategyOptions(maxRetriesBase: Int(maxRetryUnwrapped))
114+
configuration.retryStrategyOptions = RetryStrategyOptions(
115+
backoffStrategy: ExponentialBackoffStrategy(),
116+
maxRetriesBase: Int(maxRetryUnwrapped)
117+
)
112118
}
113119

114120
let authService = AWSAuthService()
115-
configuration.credentialsProvider = authService.getCredentialsProvider()
121+
configuration.awsCredentialIdentityResolver = authService.getCredentialIdentityResolver()
116122

117123
return CognitoIdentityProviderClient(config: configuration)
118124
default:
@@ -133,11 +139,14 @@ extension AWSCognitoAuthPlugin {
133139
}
134140

135141
if let maxRetryUnwrapped = networkPreferences?.maxRetryCount {
136-
configuration.retryStrategyOptions = RetryStrategyOptions(maxRetriesBase: Int(maxRetryUnwrapped))
142+
configuration.retryStrategyOptions = RetryStrategyOptions(
143+
backoffStrategy: ExponentialBackoffStrategy(),
144+
maxRetriesBase: Int(maxRetryUnwrapped)
145+
)
137146
}
138147

139148
let authService = AWSAuthService()
140-
configuration.credentialsProvider = authService.getCredentialsProvider()
149+
configuration.awsCredentialIdentityResolver = authService.getCredentialIdentityResolver()
141150

142151
return CognitoIdentityClient(config: configuration)
143152
default:

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Models/AuthChallengeType.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ enum AuthChallengeType {
2626

2727
}
2828

29-
extension CognitoIdentityProviderClientTypes.ChallengeNameType {
29+
extension CognitoIdentityProviderClientTypes.ChallengeNameType: Codable {
3030
var authChallengeType: AuthChallengeType {
3131
switch self {
3232
case .customChallenge:

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Service/ErrorMapping/AWSCongnitoIdentityProvider+AuthErrorConvertible.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import Foundation
99
import Amplify
1010
import AWSCognitoIdentityProvider
11-
import AWSClientRuntime
11+
@_spi(UnknownAWSHTTPServiceError) import AWSClientRuntime
1212

1313
extension ForbiddenException: AuthErrorConvertible {
1414
var fallbackDescription: String { "Access to the requested resource is forbidden" }

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Service/ErrorMapping/ClientError+AuthErrorConvertible.swift

+15-7
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,26 @@
77

88
import Foundation
99
import Amplify
10-
import ClientRuntime
11-
12-
extension ClientError: AuthErrorConvertible {
13-
var fallbackDescription: String { "Client Error" }
10+
import Smithy
11+
import SmithyHTTPAPI
1412

13+
extension SmithyHTTPAPI.HTTPClientError: AuthErrorConvertible {
1514
var authError: AuthError {
1615
switch self {
1716
case .pathCreationFailed(let message),
18-
.queryItemCreationFailed(let message),
19-
.serializationFailed(let message),
20-
.dataNotFound(let message):
17+
.queryItemCreationFailed(let message):
2118
return .service(message, "", self)
19+
}
20+
}
21+
}
22+
23+
extension Smithy.ClientError: AuthErrorConvertible {
24+
var authError: AuthError {
25+
switch self {
26+
case .serializationFailed(let message),
27+
.dataNotFound(let message),
28+
.invalidValue(let message):
29+
return .service(message, "Check the underlying error and try again", self)
2230

2331
case .authError(let message):
2432
return .notAuthorized(

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Service/SdkTypealiases.swift

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@
88
import Foundation
99
import AWSClientRuntime
1010
import ClientRuntime
11+
import SmithyHTTPAPI
1112

12-
public typealias NetworkResult = (Result<HttpResponse, Error>) -> Void
13+
public typealias NetworkResult = (Result<HTTPResponse, Error>) -> Void

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/StateMachine/CodeGen/Data/UserPoolConfigurationData.swift

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import ClientRuntime
99
@_spi(InternalAmplifyConfiguration) import Amplify
10+
import SmithyHTTPAPI
1011

1112
struct UserPoolConfigurationData: Equatable {
1213

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Support/CustomEndpoint/AWSEndpointResolving.swift

+5-6
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,21 @@
55
// SPDX-License-Identifier: Apache-2.0
66
//
77

8-
import AWSClientRuntime
9-
import ClientRuntime
108
import AWSCognitoIdentityProvider
9+
import SmithyHTTPAPI
1110

1211
struct AWSEndpointResolving: AWSCognitoIdentityProvider.EndpointResolver {
13-
func resolve(params: AWSCognitoIdentityProvider.EndpointParams) throws -> ClientRuntime.Endpoint {
12+
func resolve(params: AWSCognitoIdentityProvider.EndpointParams) throws -> SmithyHTTPAPI.Endpoint {
1413
try endpoint()
1514
}
1615

17-
let endpoint: () throws -> ClientRuntime.Endpoint
16+
let endpoint: () throws -> SmithyHTTPAPI.Endpoint
1817

19-
init(_ endpoint: @escaping () throws -> ClientRuntime.Endpoint) {
18+
init(_ endpoint: @escaping () throws -> SmithyHTTPAPI.Endpoint) {
2019
self.endpoint = endpoint
2120
}
2221

23-
init(_ endpoint: @escaping @autoclosure () throws -> ClientRuntime.Endpoint) {
22+
init(_ endpoint: @escaping @autoclosure () throws -> SmithyHTTPAPI.Endpoint) {
2423
self.endpoint = endpoint
2524
}
2625
}

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Support/CustomEndpoint/EndpointResolving.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
//
77

88
import Foundation
9-
import ClientRuntime
9+
import SmithyHTTPAPI
1010

1111
struct EndpointResolving {
12-
let run: (String) throws -> ClientRuntime.Endpoint
12+
let run: (String) throws -> SmithyHTTPAPI.Endpoint
1313
}
1414

1515
extension EndpointResolving {
@@ -37,6 +37,6 @@ extension EndpointResolving {
3737
// Finally, let's confirm that the endpoint doesn't contain a path.
3838
try validate((components, endpoint), with: .pathIsEmpty())
3939

40-
return ClientRuntime.Endpoint(host: host)
40+
return SmithyHTTPAPI.Endpoint(host: host)
4141
}
4242
}

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Support/Utils/HttpClientEngineProxy.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
//
77

88
@_spi(InternalHttpEngineProxy) @_spi(InternalAmplifyPluginExtension) import InternalAmplifyCredentials
9-
import ClientRuntime
109
import Foundation
10+
import SmithyHTTPAPI
1111

1212
protocol HttpClientEngineProxy: HTTPClient {
1313
var target: HTTPClient? { get set }

0 commit comments

Comments
 (0)