TF-1018 Add abstract Config loader and parser
This commit is contained in:
committed by
Dat H. Pham
parent
8349e874a9
commit
a443eccd6c
@@ -36,6 +36,9 @@ export 'utils/benchmark.dart';
|
||||
export 'utils/fps_manager.dart';
|
||||
export 'utils/build_utils.dart';
|
||||
export 'utils/string_convert.dart';
|
||||
export 'utils/config/app_config_loader.dart';
|
||||
export 'utils/config/app_config_parser.dart';
|
||||
export 'utils/config/errors.dart';
|
||||
export 'data/utils/compress_file_utils.dart';
|
||||
|
||||
// Views
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
import 'package:core/utils/config/app_config_parser.dart';
|
||||
import 'package:core/utils/config/errors.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:flutter/services.dart' show rootBundle;
|
||||
|
||||
class AppConfigLoader {
|
||||
Future<T> load<T>(String fileName, AppConfigParser parser) async {
|
||||
try {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
var envString = await rootBundle.loadString(fileName);
|
||||
if (envString.isEmpty) {
|
||||
throw EmptyConfiguration();
|
||||
}
|
||||
|
||||
return await parser.parse(envString);
|
||||
} on FlutterError {
|
||||
throw ConfigurationNotFoundError();
|
||||
}
|
||||
}
|
||||
|
||||
Future<T> loadData<T>(String fileName, AppConfigParser parser) async {
|
||||
try {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
var envData = await rootBundle.load(fileName);
|
||||
if (envData.lengthInBytes == 0) {
|
||||
throw EmptyConfiguration();
|
||||
}
|
||||
|
||||
return await parser.parseData(envData);
|
||||
} on FlutterError {
|
||||
throw ConfigurationNotFoundError();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
abstract class AppConfigParser<T> {
|
||||
Future<T> parse(String value);
|
||||
Future<T> parseData(ByteData data);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
class NotInitializedError implements Exception {}
|
||||
|
||||
class ConfigurationNotFoundError implements Exception {}
|
||||
|
||||
class EmptyConfiguration implements Exception {}
|
||||
|
||||
class InvalidConfigurationParser implements Exception {}
|
||||
Reference in New Issue
Block a user