implemented marianum message dataloader

This commit is contained in:
2024-05-11 19:29:12 +02:00
parent 181682a424
commit e57a1a915e
7 changed files with 53 additions and 19 deletions

View File

@ -1,3 +1,36 @@
import 'dart:convert';
import 'dart:developer';
import 'package:dio/dio.dart';
abstract class DataLoader<TResult> {
Future<TResult> fetch();
final Dio dio;
DataLoader(this.dio) {
dio.options.connectTimeout = const Duration(seconds: 10).inMilliseconds;
dio.options.sendTimeout = const Duration(seconds: 30).inMilliseconds;
dio.options.receiveTimeout = const Duration(seconds: 30).inMilliseconds;
}
Future<TResult> run() async {
var response = await fetch();
try {
return assemble(DataLoaderResult(
json: jsonDecode(response.data!),
headers: response.headers.map.map((key, value) => MapEntry(key, value.join(';'))),
));
} catch(trace, e) {
log(trace.toString());
throw(e);
}
}
Future<Response<String>> fetch();
TResult assemble(DataLoaderResult data);
}
class DataLoaderResult {
final Map<String, dynamic> json;
final Map<String, String> headers;
DataLoaderResult({required this.json, required this.headers});
}

View File

@ -0,0 +1,9 @@
import 'package:dio/dio.dart';
import 'data_loader.dart';
abstract class MhslDataLoader<TResult> extends DataLoader<TResult> {
MhslDataLoader() : super(Dio(BaseOptions(
baseUrl: 'https://mhsl.eu/marianum/marianummobile/'
)));
}