Added emergency remote breakers
This commit is contained in:
@ -20,7 +20,7 @@ CacheableFile _$CacheableFileFromJson(Map<String, dynamic> json) =>
|
||||
modifiedAt: json['modifiedAt'] == null
|
||||
? null
|
||||
: DateTime.parse(json['modifiedAt'] as String),
|
||||
);
|
||||
)..sort = json['sort'] as String?;
|
||||
|
||||
Map<String, dynamic> _$CacheableFileToJson(CacheableFile instance) =>
|
||||
<String, dynamic>{
|
||||
@ -32,4 +32,5 @@ Map<String, dynamic> _$CacheableFileToJson(CacheableFile instance) =>
|
||||
'eTag': instance.eTag,
|
||||
'createdAt': instance.createdAt?.toIso8601String(),
|
||||
'modifiedAt': instance.modifiedAt?.toIso8601String(),
|
||||
'sort': instance.sort,
|
||||
};
|
||||
|
21
lib/api/mhsl/breaker/getBreakers/getBreakers.dart
Normal file
21
lib/api/mhsl/breaker/getBreakers/getBreakers.dart
Normal file
@ -0,0 +1,21 @@
|
||||
import 'dart:convert';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:http/http.dart';
|
||||
|
||||
import '../../mhslApi.dart';
|
||||
import 'getBreakersResponse.dart';
|
||||
|
||||
class GetBreakers extends MhslApi<GetBreakersResponse> {
|
||||
GetBreakers() : super("breaker/");
|
||||
|
||||
@override
|
||||
GetBreakersResponse assemble(String raw) {
|
||||
return GetBreakersResponse.fromJson(jsonDecode(raw));
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Response>? request(Uri uri) {
|
||||
return http.get(uri);
|
||||
}
|
||||
|
||||
}
|
21
lib/api/mhsl/breaker/getBreakers/getBreakersCache.dart
Normal file
21
lib/api/mhsl/breaker/getBreakers/getBreakersCache.dart
Normal file
@ -0,0 +1,21 @@
|
||||
import 'dart:convert';
|
||||
import '../../../requestCache.dart';
|
||||
import 'getBreakers.dart';
|
||||
import 'getBreakersResponse.dart';
|
||||
|
||||
|
||||
class GetBreakersCache extends RequestCache<GetBreakersResponse> {
|
||||
GetBreakersCache({onUpdate, renew}) : super(RequestCache.cacheMinute, onUpdate, renew: renew) {
|
||||
start("MarianumMobile", "breakers");
|
||||
}
|
||||
|
||||
@override
|
||||
GetBreakersResponse onLocalData(String json) {
|
||||
return GetBreakersResponse.fromJson(jsonDecode(json));
|
||||
}
|
||||
|
||||
@override
|
||||
Future<GetBreakersResponse> onLoad() {
|
||||
return GetBreakers().run();
|
||||
}
|
||||
}
|
36
lib/api/mhsl/breaker/getBreakers/getBreakersResponse.dart
Normal file
36
lib/api/mhsl/breaker/getBreakers/getBreakersResponse.dart
Normal file
@ -0,0 +1,36 @@
|
||||
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
import '../../../apiResponse.dart';
|
||||
|
||||
part 'getBreakersResponse.g.dart';
|
||||
|
||||
@JsonSerializable(explicitToJson: true)
|
||||
class GetBreakersResponse extends ApiResponse {
|
||||
GetBreakersReponseObject global;
|
||||
Map<String, GetBreakersReponseObject> regional;
|
||||
|
||||
GetBreakersResponse(this.global, this.regional);
|
||||
|
||||
factory GetBreakersResponse.fromJson(Map<String, dynamic> json) => _$GetBreakersResponseFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$GetBreakersResponseToJson(this);
|
||||
}
|
||||
|
||||
@JsonSerializable()
|
||||
class GetBreakersReponseObject {
|
||||
List<BreakerArea> areas;
|
||||
String message;
|
||||
|
||||
GetBreakersReponseObject(this.areas, this.message);
|
||||
|
||||
factory GetBreakersReponseObject.fromJson(Map<String, dynamic> json) => _$GetBreakersReponseObjectFromJson(json);
|
||||
Map<String, dynamic> toJson() => _$GetBreakersReponseObjectToJson(this);
|
||||
}
|
||||
|
||||
enum BreakerArea {
|
||||
@JsonValue("GLOBAL") global,
|
||||
@JsonValue("TIMETABLE") timetable,
|
||||
@JsonValue("TALK") talk,
|
||||
@JsonValue("FILES") files,
|
||||
@JsonValue("MORE") more,
|
||||
}
|
47
lib/api/mhsl/breaker/getBreakers/getBreakersResponse.g.dart
Normal file
47
lib/api/mhsl/breaker/getBreakers/getBreakersResponse.g.dart
Normal file
@ -0,0 +1,47 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'getBreakersResponse.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
GetBreakersResponse _$GetBreakersResponseFromJson(Map<String, dynamic> json) =>
|
||||
GetBreakersResponse(
|
||||
GetBreakersReponseObject.fromJson(json['global'] as Map<String, dynamic>),
|
||||
(json['regional'] as Map<String, dynamic>).map(
|
||||
(k, e) => MapEntry(
|
||||
k, GetBreakersReponseObject.fromJson(e as Map<String, dynamic>)),
|
||||
),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$GetBreakersResponseToJson(
|
||||
GetBreakersResponse instance) =>
|
||||
<String, dynamic>{
|
||||
'global': instance.global.toJson(),
|
||||
'regional': instance.regional.map((k, e) => MapEntry(k, e.toJson())),
|
||||
};
|
||||
|
||||
GetBreakersReponseObject _$GetBreakersReponseObjectFromJson(
|
||||
Map<String, dynamic> json) =>
|
||||
GetBreakersReponseObject(
|
||||
(json['areas'] as List<dynamic>)
|
||||
.map((e) => $enumDecode(_$BreakerAreaEnumMap, e))
|
||||
.toList(),
|
||||
json['message'] as String,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$GetBreakersReponseObjectToJson(
|
||||
GetBreakersReponseObject instance) =>
|
||||
<String, dynamic>{
|
||||
'areas': instance.areas.map((e) => _$BreakerAreaEnumMap[e]!).toList(),
|
||||
'message': instance.message,
|
||||
};
|
||||
|
||||
const _$BreakerAreaEnumMap = {
|
||||
BreakerArea.global: 'GLOBAL',
|
||||
BreakerArea.timetable: 'TIMETABLE',
|
||||
BreakerArea.talk: 'TALK',
|
||||
BreakerArea.files: 'FILES',
|
||||
BreakerArea.more: 'MORE',
|
||||
};
|
@ -2,10 +2,12 @@ import 'dart:convert';
|
||||
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
import '../messageApi.dart';
|
||||
import '../../mhslApi.dart';
|
||||
import 'getMessagesResponse.dart';
|
||||
|
||||
class GetMessages extends MessageApi<GetMessagesResponse> {
|
||||
class GetMessages extends MhslApi<GetMessagesResponse> {
|
||||
GetMessages() : super("message/messages.json");
|
||||
|
||||
|
||||
@override
|
||||
GetMessagesResponse assemble(String raw) {
|
||||
|
@ -1,18 +1,20 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:http/http.dart' as http;
|
||||
import '../../apiError.dart';
|
||||
import '../../apiRequest.dart';
|
||||
import '../apiError.dart';
|
||||
import '../apiRequest.dart';
|
||||
|
||||
abstract class MhslApi<T> extends ApiRequest {
|
||||
String subpath;
|
||||
MhslApi(this.subpath);
|
||||
|
||||
abstract class MessageApi<T> extends ApiRequest {
|
||||
String path = "https://mhsl.eu/marianum/marianummobile/message/messages.json";
|
||||
http.Response? response;
|
||||
|
||||
Future<http.Response>? request(Uri uri);
|
||||
T assemble(String raw);
|
||||
|
||||
Future<T> run() async {
|
||||
Uri endpoint = Uri.parse(path);
|
||||
Uri endpoint = Uri.parse("https://mhsl.eu/marianum/marianummobile/$subpath");
|
||||
|
||||
http.Response? data = await request(endpoint);
|
||||
if(data == null) {
|
Reference in New Issue
Block a user