Skip to content

Commit fac6890

Browse files
authored
chore: kickoff release
2 parents 8e987b1 + 8e10b83 commit fac6890

File tree

11 files changed

+317
-66
lines changed

11 files changed

+317
-66
lines changed

AmplifyPlugins/Notifications/Push/Sources/AWSPinpointPushNotificationsPlugin/Error/CommonRunTimeError+PushNotificationsErrorConvertible.swift

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,17 @@ import AwsCommonRuntimeKit
1212

1313
extension CommonRunTimeError: PushNotificationsErrorConvertible {
1414
var pushNotificationsError: PushNotificationsError {
15+
if isConnectivityError {
16+
return .network(
17+
PushNotificationsPluginErrorConstants.deviceOffline.errorDescription,
18+
PushNotificationsPluginErrorConstants.deviceOffline.recoverySuggestion,
19+
self
20+
)
21+
}
22+
1523
switch self {
1624
case .crtError(let crtError):
17-
let errorDescription = isConnectivityError
18-
? AWSPinpointErrorConstants.deviceOffline.errorDescription
19-
: crtError.message
20-
return .unknown(errorDescription, self)
25+
return .unknown(crtError.message, self)
2126
}
2227
}
2328
}

AmplifyPlugins/Storage/Sources/AWSS3StoragePlugin/Operation/AWSS3StorageUploadDataOperation.swift

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -91,22 +91,25 @@ class AWSS3StorageUploadDataOperation: AmplifyInProcessReportingOperation<
9191
do {
9292
let prefix = try await prefixResolver.resolvePrefix(for: request.options.accessLevel, targetIdentityId: request.options.targetIdentityId)
9393
let serviceKey = prefix + request.key
94-
let serviceMetadata = StorageRequestUtils.getServiceMetadata(request.options.metadata)
9594
let accelerate = try AWSS3PluginOptions.accelerateValue(pluginOptions: request.options.pluginOptions)
9695
if request.data.count > StorageUploadDataRequest.Options.multiPartUploadSizeThreshold {
97-
storageService.multiPartUpload(serviceKey: serviceKey,
98-
uploadSource: .data(request.data),
99-
contentType: request.options.contentType,
100-
metadata: serviceMetadata,
101-
accelerate: accelerate) { [weak self] event in
96+
storageService.multiPartUpload(
97+
serviceKey: serviceKey,
98+
uploadSource: .data(request.data),
99+
contentType: request.options.contentType,
100+
metadata: request.options.metadata,
101+
accelerate: accelerate
102+
) { [weak self] event in
102103
self?.onServiceEvent(event: event)
103104
}
104105
} else {
105-
storageService.upload(serviceKey: serviceKey,
106-
uploadSource: .data(request.data),
107-
contentType: request.options.contentType,
108-
metadata: serviceMetadata,
109-
accelerate: accelerate) { [weak self] event in
106+
storageService.upload(
107+
serviceKey: serviceKey,
108+
uploadSource: .data(request.data),
109+
contentType: request.options.contentType,
110+
metadata: request.options.metadata,
111+
accelerate: accelerate
112+
) { [weak self] event in
110113
self?.onServiceEvent(event: event)
111114
}
112115
}

AmplifyPlugins/Storage/Sources/AWSS3StoragePlugin/Operation/AWSS3StorageUploadFileOperation.swift

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -115,22 +115,25 @@ class AWSS3StorageUploadFileOperation: AmplifyInProcessReportingOperation<
115115
do {
116116
let prefix = try await prefixResolver.resolvePrefix(for: request.options.accessLevel, targetIdentityId: request.options.targetIdentityId)
117117
let serviceKey = prefix + request.key
118-
let serviceMetadata = StorageRequestUtils.getServiceMetadata(request.options.metadata)
119118
let accelerate = try AWSS3PluginOptions.accelerateValue(pluginOptions: request.options.pluginOptions)
120119
if uploadSize > StorageUploadFileRequest.Options.multiPartUploadSizeThreshold {
121-
storageService.multiPartUpload(serviceKey: serviceKey,
122-
uploadSource: .local(request.local),
123-
contentType: request.options.contentType,
124-
metadata: serviceMetadata,
125-
accelerate: accelerate) { [weak self] event in
120+
storageService.multiPartUpload(
121+
serviceKey: serviceKey,
122+
uploadSource: .local(request.local),
123+
contentType: request.options.contentType,
124+
metadata: request.options.metadata,
125+
accelerate: accelerate
126+
) { [weak self] event in
126127
self?.onServiceEvent(event: event)
127128
}
128129
} else {
129-
storageService.upload(serviceKey: serviceKey,
130-
uploadSource: .local(request.local),
131-
contentType: request.options.contentType,
132-
metadata: serviceMetadata,
133-
accelerate: accelerate) { [weak self] event in
130+
storageService.upload(
131+
serviceKey: serviceKey,
132+
uploadSource: .local(request.local),
133+
contentType: request.options.contentType,
134+
metadata: request.options.metadata,
135+
accelerate: accelerate
136+
) { [weak self] event in
134137
self?.onServiceEvent(event: event)
135138
}
136139
}

AmplifyPlugins/Storage/Sources/AWSS3StoragePlugin/Support/Internal/StorageMultipartUploadClient.swift

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,19 @@ class DefaultStorageMultipartUploadClient: StorageMultipartUploadClient {
7575
// The AWS S3 SDK handles the request so there will be not taskIdentifier
7676
session.handle(multipartUploadEvent: .creating)
7777

78-
let request = CreateMultipartUploadRequest(bucket: bucket, key: key)
78+
// User-defined metadata needs to provided
79+
// when initiating the MPU.
80+
// --
81+
// https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpu-process
82+
// > Multipart upload initiation
83+
// "If you want to provide any metadata describing the object
84+
// being uploaded, you must provide it in the request to initiate
85+
// multipart upload."
86+
let request = CreateMultipartUploadRequest(
87+
bucket: bucket,
88+
key: key,
89+
metadata: metadata
90+
)
7991
serviceProxy.awsS3.createMultipartUpload(request) { [weak self] result in
8092
guard let self = self else { return }
8193
switch result {
@@ -139,7 +151,9 @@ class DefaultStorageMultipartUploadClient: StorageMultipartUploadClient {
139151
let preSignedURL = try await serviceProxy.preSignedURLBuilder.getPreSignedURL(
140152
key: self.key,
141153
signingOperation: operation,
142-
metadata: self.metadata,
154+
// user-controlled metadata should *not* be provided
155+
// with each upload part.
156+
metadata: nil,
143157
accelerate: nil,
144158
expires: nil
145159
)

AmplifyPlugins/Storage/Sources/AWSS3StoragePlugin/Support/Utils/StorageRequestUtils+Getter.swift

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,6 @@ extension StorageRequestUtils {
2525
return accessLevel.serviceAccessPrefix + "/"
2626
}
2727

28-
static func getServiceMetadata(_ metadata: [String: String]?) -> [String: String]? {
29-
guard let metadata = metadata else {
30-
return nil
31-
}
32-
var serviceMetadata: [String: String] = [:]
33-
for (key, value) in metadata {
34-
let serviceKey = metadataKeyPrefix + key
35-
serviceMetadata[serviceKey] = value
36-
}
37-
38-
return serviceMetadata
39-
}
40-
4128
static func getSize(_ file: URL) throws -> UInt64 {
4229
if let error = validateFileExists(file) {
4330
throw StorageError.localFileNotFound(error.errorDescription, error.recoverySuggestion)

AmplifyPlugins/Storage/Tests/AWSS3StoragePluginTests/Operation/AWSS3StoragePutDataOperationTests.swift

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ class AWSS3StorageUploadDataOperationTests: AWSS3StorageOperationTestBase {
8484

8585
let expectedUploadSource = UploadSource.data(testData)
8686
let metadata = ["mykey": "Value"]
87-
let expectedMetadata = ["x-amz-meta-mykey": "Value"]
8887

8988
let options = StorageUploadDataRequest.Options(accessLevel: .protected,
9089
metadata: metadata,
@@ -119,7 +118,7 @@ class AWSS3StorageUploadDataOperationTests: AWSS3StorageOperationTestBase {
119118
key: testKey,
120119
uploadSource: expectedUploadSource,
121120
contentType: testContentType,
122-
metadata: expectedMetadata)
121+
metadata: metadata)
123122
}
124123

125124
func testUploadDataOperationUploadFail() {
@@ -183,7 +182,6 @@ class AWSS3StorageUploadDataOperationTests: AWSS3StorageOperationTestBase {
183182
"Could not create data object greater than MultiPartUploadSizeThreshold")
184183
let expectedUploadSource = UploadSource.data(testLargeData)
185184
let metadata = ["mykey": "Value"]
186-
let expectedMetadata = ["x-amz-meta-mykey": "Value"]
187185

188186
let options = StorageUploadDataRequest.Options(accessLevel: .protected,
189187
metadata: metadata,
@@ -218,7 +216,7 @@ class AWSS3StorageUploadDataOperationTests: AWSS3StorageOperationTestBase {
218216
key: testKey,
219217
uploadSource: expectedUploadSource,
220218
contentType: testContentType,
221-
metadata: expectedMetadata)
219+
metadata: metadata)
222220
}
223221

224222
// TODO: test pause, resume, canel, etc.

AmplifyPlugins/Storage/Tests/AWSS3StoragePluginTests/Operation/AWSS3StorageUploadFileOperationTests.swift

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ class AWSS3StorageUploadFileOperationTests: AWSS3StorageOperationTestBase {
118118
FileManager.default.createFile(atPath: filePath, contents: testData, attributes: nil)
119119
let expectedUploadSource = UploadSource.local(fileURL)
120120
let metadata = ["mykey": "Value"]
121-
let expectedMetadata = ["x-amz-meta-mykey": "Value"]
122121

123122
let options = StorageUploadFileRequest.Options(accessLevel: .protected,
124123
metadata: metadata,
@@ -153,7 +152,7 @@ class AWSS3StorageUploadFileOperationTests: AWSS3StorageOperationTestBase {
153152
key: testKey,
154153
uploadSource: expectedUploadSource,
155154
contentType: testContentType,
156-
metadata: expectedMetadata)
155+
metadata: metadata)
157156
}
158157

159158
func testUploadFileOperationUploadFail() {
@@ -219,7 +218,6 @@ class AWSS3StorageUploadFileOperationTests: AWSS3StorageOperationTestBase {
219218
"Could not create data object greater than MultiPartUploadSizeThreshold")
220219
let expectedUploadSource = UploadSource.local(testURL)
221220
let metadata = ["mykey": "Value"]
222-
let expectedMetadata = ["x-amz-meta-mykey": "Value"]
223221

224222
let options = StorageUploadFileRequest.Options(accessLevel: .protected,
225223
metadata: metadata,
@@ -254,7 +252,7 @@ class AWSS3StorageUploadFileOperationTests: AWSS3StorageOperationTestBase {
254252
key: testKey,
255253
uploadSource: expectedUploadSource,
256254
contentType: testContentType,
257-
metadata: expectedMetadata)
255+
metadata: metadata)
258256
}
259257

260258
// TODO: test pause, resume, canel, etc.

AmplifyPlugins/Storage/Tests/AWSS3StoragePluginTests/Support/Utils/StorageRequestUtilsGetterTests.swift

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -67,20 +67,6 @@ class StorageRequestUtilsGetterTests: XCTestCase {
6767
XCTAssertEqual(result, expected)
6868
}
6969

70-
// MARK: GetServiceMetadata tests
71-
72-
func testGetServiceMetadataConstructsMetadataKeysWithS3Prefix() {
73-
let metadata = ["key1": "value1", "key2": "value2"]
74-
let results = StorageRequestUtils.getServiceMetadata(metadata)
75-
XCTAssertNotNil(results)
76-
77-
for (key, value) in results! {
78-
XCTAssertNotNil(key)
79-
XCTAssertNotNil(value)
80-
XCTAssertTrue(key.contains(StorageRequestUtils.metadataKeyPrefix))
81-
}
82-
}
83-
8470
// MARK: GetSize tests
8571

8672
func testGetSizeForFileUploadSourceReturnsSize() throws {

0 commit comments

Comments
 (0)