8
8
import Foundation
9
9
import Amplify // Amplify.Auth
10
10
import AWSPluginsCore // AuthAWSCredentialsProvider
11
- import AWSClientRuntime // AWSClientRuntime.CredentialsProviding
12
- import ClientRuntime // SdkHttpRequestBuilder
13
11
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
14
18
15
19
extension AWSCognitoAuthPlugin {
16
20
@@ -29,11 +33,15 @@ extension AWSCognitoAuthPlugin {
29
33
region: region)
30
34
}
31
35
}
32
-
36
+
37
+ private static var signer = {
38
+ return AWSSigV4Signer ( )
39
+ } ( )
40
+
33
41
static func signAppSyncRequest( _ urlRequest: URLRequest ,
34
42
region: Swift . String ,
35
43
signingName: Swift . String = " appsync " ,
36
- date: ClientRuntime . Date = Date ( ) ) async throws -> URLRequest {
44
+ date: Date = Date ( ) ) async throws -> URLRequest {
37
45
CommonRuntimeKit . initialize ( )
38
46
39
47
// Convert URLRequest to SDK's HTTPRequest
@@ -43,11 +51,11 @@ extension AWSCognitoAuthPlugin {
43
51
}
44
52
45
53
// Retrieve the credentials from credentials provider
46
- let credentials : AWSClientRuntime . AWSCredentials
54
+ let credentials : AWSCredentialIdentity
47
55
let authSession = try await Amplify . Auth. fetchAuthSession ( )
48
56
if let awsCredentialsProvider = authSession as? AuthAWSCredentialsProvider {
49
57
let awsCredentials = try awsCredentialsProvider. getAWSCredentials ( ) . get ( )
50
- credentials = awsCredentials. toAWSSDKCredentials ( )
58
+ credentials = try awsCredentials. toAWSSDKCredentials ( )
51
59
} else {
52
60
let error = AuthError . unknown ( " Auth session does not include AWS credentials information " )
53
61
throw error
@@ -70,7 +78,7 @@ extension AWSCognitoAuthPlugin {
70
78
signingAlgorithm: . sigv4)
71
79
72
80
// Sign request
73
- guard let httpRequest = await AWSSigV4Signer . sigV4SignedRequest (
81
+ guard let httpRequest = await signer . sigV4SignedRequest (
74
82
requestBuilder: requestBuilder,
75
83
76
84
signingConfig: signingConfig
@@ -82,15 +90,15 @@ extension AWSCognitoAuthPlugin {
82
90
return setHeaders ( from: httpRequest, to: urlRequest)
83
91
}
84
92
85
- static func setHeaders( from sdkRequest: SdkHttpRequest , to urlRequest: URLRequest ) -> URLRequest {
93
+ static func setHeaders( from sdkRequest: SmithyHTTPAPI . HTTPRequest , to urlRequest: URLRequest ) -> URLRequest {
86
94
var urlRequest = urlRequest
87
95
for header in sdkRequest. headers. headers {
88
96
urlRequest. setValue ( header. value. joined ( separator: " , " ) , forHTTPHeaderField: header. name)
89
97
}
90
98
return urlRequest
91
99
}
92
100
93
- static func createAppSyncSdkHttpRequestBuilder( urlRequest: URLRequest ) throws -> SdkHttpRequestBuilder ? {
101
+ static func createAppSyncSdkHttpRequestBuilder( urlRequest: URLRequest ) throws -> HTTPRequestBuilder ? {
94
102
95
103
guard let url = urlRequest. url,
96
104
let host = url. host else {
@@ -101,12 +109,12 @@ extension AWSCognitoAuthPlugin {
101
109
headers. updateValue ( host, forKey: " host " )
102
110
103
111
let httpMethod = ( urlRequest. httpMethod? . uppercased ( ) )
104
- . flatMap ( HttpMethodType . init ( rawValue: ) ) ?? . get
112
+ . flatMap ( HTTPMethodType . init ( rawValue: ) ) ?? . get
105
113
106
114
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) } ?? [ ]
108
116
109
- let requestBuilder = SdkHttpRequestBuilder ( )
117
+ let requestBuilder = HTTPRequestBuilder ( )
110
118
. withHost ( host)
111
119
. withPath ( url. path)
112
120
. withQueryItems ( queryItems)
@@ -122,19 +130,20 @@ extension AWSCognitoAuthPlugin {
122
130
123
131
extension AWSPluginsCore . AWSCredentials {
124
132
125
- func toAWSSDKCredentials( ) -> AWSClientRuntime . AWSCredentials {
133
+ func toAWSSDKCredentials( ) throws -> AWSCredentialIdentity {
126
134
if let tempCredentials = self as? AWSTemporaryCredentials {
127
- return AWSClientRuntime . AWSCredentials (
135
+ return AWSCredentialIdentity (
128
136
accessKey: tempCredentials. accessKeyId,
129
137
secret: tempCredentials. secretAccessKey,
130
- expirationTimeout: tempCredentials. expiration,
131
- sessionToken: tempCredentials. sessionToken)
138
+ expiration: tempCredentials. expiration,
139
+ sessionToken: tempCredentials. sessionToken
140
+ )
132
141
} else {
133
- return AWSClientRuntime . AWSCredentials (
142
+ return AWSCredentialIdentity (
134
143
accessKey: accessKeyId,
135
144
secret: secretAccessKey,
136
- expirationTimeout: Date ( ) )
145
+ expiration: nil
146
+ )
137
147
}
138
-
139
148
}
140
149
}
0 commit comments