Skip to content

Commit

Permalink
chore!: remove prefix resolver, passthrough prefix resolver, and acce…
Browse files Browse the repository at this point in the history
…ssLevel (#4631)

- Remove prefix resolver, passthrough prefix resolver, and accessLevel

---------

Co-authored-by: Jordan Nelson <Jordanryannelson@gmail.com>
Co-authored-by: Jordan Nelson <20613561+Jordan-Nelson@users.noreply.github.com>
Co-authored-by: Jordan Nelson <nejrd@amazon.com>
Co-authored-by: Elijah Quartey <Equartey@users.noreply.github.com>
  • Loading branch information
5 people authored Apr 16, 2024
1 parent c20e0d2 commit 0e29322
Show file tree
Hide file tree
Showing 18 changed files with 7 additions and 429 deletions.
5 changes: 0 additions & 5 deletions packages/amplify_core/lib/src/config/storage/s3_config.dart
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ class S3PluginConfig
const S3PluginConfig({
required this.bucket,
required this.region,
this.defaultAccessLevel = StorageAccessLevel.guest,
});

factory S3PluginConfig.fromJson(Map<String, Object?> json) =>
Expand All @@ -48,24 +47,20 @@ class S3PluginConfig

final String bucket;
final String region;
final StorageAccessLevel defaultAccessLevel;

@override
List<Object?> get props => [
bucket,
region,
defaultAccessLevel,
];

S3PluginConfig copyWith({
String? bucket,
String? region,
StorageAccessLevel? defaultAccessLevel,
}) {
return S3PluginConfig(
bucket: bucket ?? this.bucket,
region: region ?? this.region,
defaultAccessLevel: defaultAccessLevel ?? this.defaultAccessLevel,
);
}

Expand Down
11 changes: 0 additions & 11 deletions packages/amplify_core/lib/src/config/storage/s3_config.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 0 additions & 27 deletions packages/amplify_core/lib/src/types/storage/access_level.dart

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ export '../exception/amplify_exception.dart'
StorageOperationCanceledException,
NetworkException,
UnknownException;
export 'access_level.dart';
export 'copy_operation.dart';
export 'copy_options.dart';
export 'copy_request.dart';
Expand Down
15 changes: 5 additions & 10 deletions packages/amplify_core/test/config/testdata/cli_generated.dart
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,7 @@ const _v4storage = '''
"plugins": {
"awsS3StoragePlugin": {
"bucket": "$BUCKET",
"region": "$REGION",
"defaultAccessLevel": "guest"
"region": "$REGION"
}
}
}
Expand Down Expand Up @@ -379,8 +378,7 @@ const _v5storage = '''
"plugins": {
"awsS3StoragePlugin": {
"bucket": "$BUCKET",
"region": "$REGION",
"defaultAccessLevel": "guest"
"region": "$REGION"
}
}
}
Expand Down Expand Up @@ -567,8 +565,7 @@ const _v6storage = '''
"plugins": {
"awsS3StoragePlugin": {
"bucket": "$BUCKET",
"region": "$REGION",
"defaultAccessLevel": "guest"
"region": "$REGION"
}
}
}
Expand Down Expand Up @@ -755,8 +752,7 @@ const _v7storage = '''
"plugins": {
"awsS3StoragePlugin": {
"bucket": "$BUCKET",
"region": "$REGION",
"defaultAccessLevel": "guest"
"region": "$REGION"
}
}
}
Expand Down Expand Up @@ -943,8 +939,7 @@ const _vlateststorage = '''
"plugins": {
"awsS3StoragePlugin": {
"bucket": "$BUCKET",
"region": "$REGION",
"defaultAccessLevel": "guest"
"region": "$REGION"
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,27 +19,6 @@ import 'content_type_infer/content_type_infer.dart';
import 'transfer_acceleration/test_acceleration_config.dart';
import 'transfer_acceleration/transfer_acceleration.dart';

class CustomPrefixResolver implements S3PrefixResolver {
const CustomPrefixResolver();

@override
Future<String> resolvePrefix({
required StorageAccessLevel accessLevel,
String? identityId,
}) async {
final session = await Amplify.Auth.fetchAuthSession() as CognitoAuthSession;
final currentUserIdentityId = session.identityIdResult.value;
switch (accessLevel) {
case StorageAccessLevel.guest:
return 'everyone/';
case StorageAccessLevel.protected:
return 'shared/${identityId ?? currentUserIdentityId}/';
case StorageAccessLevel.private:
return 'private/$currentUserIdentityId/';
}
}
}

void main() {
// Disable Drift multi QueryExecutor warning as we know what's going on
// in this test suite
Expand Down Expand Up @@ -67,25 +46,19 @@ void main() {
for (final entry in amplifyEnvironments.entries
.where((element) => element.key != 'custom-prefix')) {
group('[Environment ${entry.key}]', () {
S3PrefixResolver? prefixResolver;
late String user1IdentityId;
late String object1Etag;
late String object2Etag;
late String object3Etag;
final shouldTestTransferAcceleration = entry.key != 'dots-in-name';

setUpAll(() async {
if (entry.key == 'custom-prefix') {
prefixResolver = const CustomPrefixResolver();
} else if (entry.key == 'no-prefix') {
prefixResolver = const PassThroughPrefixResolver();
}
final authPlugin = AmplifyAuthCognito(
secureStorageFactory: AmplifySecureStorage.factoryFrom(
macOSOptions: MacOSSecureStorageOptions(useDataProtection: false),
),
);
final storagePlugin = AmplifyStorageS3(prefixResolver: prefixResolver);
final storagePlugin = AmplifyStorageS3();
await Amplify.addPlugins([authPlugin, storagePlugin]);
await Amplify.configure(amplifyEnvironments[entry.key]!);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ class AmplifyStorageS3 extends AmplifyStorageS3Dart {
/// {@macro amplify_storage_s3_.amplify_storage_s3_plugin}
AmplifyStorageS3({
super.delimiter,
super.prefixResolver,
});

/// A plugin key which can be used with `Amplify.Storage.getPlugin` to retrieve
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,3 @@ library amplify_storage_s3_dart;
export 'src/amplify_storage_s3_dart_impl.dart';
export 'src/error/invalid_bytes_range_error.dart';
export 'src/model/s3_models.dart';
export 'src/prefix_resolver/pass_through_prefix_resolver.dart';
export 'src/prefix_resolver/s3_prefix_resolver.dart';
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import 'package:amplify_storage_s3_dart/amplify_storage_s3_dart.dart';
import 'package:amplify_storage_s3_dart/src/path_resolver/s3_path_resolver.dart';
import 'package:amplify_storage_s3_dart/src/platform_impl/download_file/download_file.dart'
as download_file_impl;
import 'package:amplify_storage_s3_dart/src/prefix_resolver/storage_access_level_aware_prefix_resolver.dart';
import 'package:amplify_storage_s3_dart/src/storage_s3_service/storage_s3_service.dart';
import 'package:amplify_storage_s3_dart/src/storage_s3_service/transfer/transfer.dart'
as transfer;
Expand All @@ -32,10 +31,8 @@ class AmplifyStorageS3Dart extends StoragePluginInterface
/// {@macro amplify_storage_s3_dart.amplify_storage_s3_plugin_dart}
AmplifyStorageS3Dart({
String? delimiter,
S3PrefixResolver? prefixResolver,
@visibleForTesting DependencyManager? dependencyManagerOverride,
}) : _delimiter = delimiter,
_prefixResolver = prefixResolver,
_dependencyManagerOverride = dependencyManagerOverride;

/// {@template amplify_storage_s3_dart.plugin_key}
Expand All @@ -57,14 +54,8 @@ class AmplifyStorageS3Dart extends StoragePluginInterface
@protected
late final S3PluginConfig s3pluginConfig;

S3PrefixResolver? _prefixResolver;

late S3PathResolver _pathResolver;

/// Gets prefix resolver for testing
@visibleForTesting
S3PrefixResolver? get prefixResolver => _prefixResolver;

/// Gets the instance of dependent [StorageS3Service].
@protected
StorageS3Service get storageS3Service => dependencies.expect();
Expand Down Expand Up @@ -94,8 +85,7 @@ class AmplifyStorageS3Dart extends StoragePluginInterface
);
}

_prefixResolver ??= StorageAccessLevelAwarePrefixResolver(
delimiter: _delimiter,
_pathResolver = S3PathResolver(
identityProvider: identityProvider,
);

Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -557,32 +557,6 @@ class StorageS3Service {
.uri
.host;

/// Resolve a client object key to a "full" object key with proper prefix.
///
/// This API is only used internally.
@internal
static Future<String> getResolvedPrefix({
required S3PrefixResolver prefixResolver,
required AWSLogger logger,
required StorageAccessLevel accessLevel,
String? identityId,
}) async {
try {
return await prefixResolver.resolvePrefix(
accessLevel: accessLevel,
identityId: identityId,
);
} on Exception catch (error, st) {
logger.error('Error happened while resolving prefix', error, st);
throw UnknownException(
'An error occurred while resolving the prefix.',
recoverySuggestion:
'If you are providing a custom prefix resolver, review the underlying exception to determine the cause.',
underlyingException: error,
);
}
}

/// Creates and sends a [s3.HeadObjectRequest] to S3 service, and then
/// returns a [s3.HeadObjectOutput].
///
Expand Down
Loading

0 comments on commit 0e29322

Please sign in to comment.