error handling
This commit is contained in:
parent
7f7dc33229
commit
57d38535d3
5 changed files with 58 additions and 35 deletions
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
|
@ -21,6 +21,8 @@
|
||||||
"#community:federated.nexus",
|
"#community:federated.nexus",
|
||||||
"--successUri",
|
"--successUri",
|
||||||
"https://federated.nexus/success",
|
"https://federated.nexus/success",
|
||||||
|
"--failureUri",
|
||||||
|
"https://federated.nexus/failure",
|
||||||
"--botPasswordFile",
|
"--botPasswordFile",
|
||||||
"secrets/botPassword.txt",
|
"secrets/botPassword.txt",
|
||||||
"--smtpPasswordFile",
|
"--smtpPasswordFile",
|
||||||
|
|
|
@ -17,6 +17,7 @@ void main(List<String> argsRaw) async {
|
||||||
final parser = ConfigParser()
|
final parser = ConfigParser()
|
||||||
..addOption("socket", mandatory: true)
|
..addOption("socket", mandatory: true)
|
||||||
..addOption("homeserver", mandatory: true)
|
..addOption("homeserver", mandatory: true)
|
||||||
|
..addOption("failureUri", mandatory: true)
|
||||||
..addOption("successUri", mandatory: true)
|
..addOption("successUri", mandatory: true)
|
||||||
..addOption("name", mandatory: true)
|
..addOption("name", mandatory: true)
|
||||||
..addOption("adminName", mandatory: true)
|
..addOption("adminName", mandatory: true)
|
||||||
|
@ -120,6 +121,8 @@ If you have any issues, reply to this email.""",
|
||||||
.addMiddleware(logRequests())
|
.addMiddleware(logRequests())
|
||||||
.addHandler(
|
.addHandler(
|
||||||
(Router()..post("/", (Request request) async {
|
(Router()..post("/", (Request request) async {
|
||||||
|
final settings = container.read(SettingsController.provider)!;
|
||||||
|
try {
|
||||||
final body = await request.readAsString();
|
final body = await request.readAsString();
|
||||||
final registration = Registration.fromJson(
|
final registration = Registration.fromJson(
|
||||||
Uri.splitQueryString(
|
Uri.splitQueryString(
|
||||||
|
@ -127,17 +130,18 @@ If you have any issues, reply to this email.""",
|
||||||
).map((key, value) => MapEntry(key, value.toLowerCase())),
|
).map((key, value) => MapEntry(key, value.toLowerCase())),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
throw "test error";
|
||||||
|
|
||||||
final client = await container.read(
|
final client = await container.read(
|
||||||
ClientController.provider.future,
|
ClientController.provider.future,
|
||||||
);
|
);
|
||||||
|
|
||||||
final settings = container.read(SettingsController.provider)!;
|
final room = client.getRoomByAlias(settings.adminRoom)!;
|
||||||
final room = client.getRoomByAlias(settings.adminRoom);
|
|
||||||
final message =
|
final message =
|
||||||
"""# Registration request
|
"""# Registration request
|
||||||
- Username: `${registration.username}`
|
- Username: `${registration.username}`
|
||||||
- Email: `${registration.email}`""";
|
- Email: `${registration.email}`""";
|
||||||
final event = await room!.sendEvent({
|
final event = await room.sendEvent({
|
||||||
"body": message,
|
"body": message,
|
||||||
"msgtype": MessageTypes.Text,
|
"msgtype": MessageTypes.Text,
|
||||||
"format": "org.matrix.custom.html",
|
"format": "org.matrix.custom.html",
|
||||||
|
@ -148,6 +152,17 @@ If you have any issues, reply to this email.""",
|
||||||
await room.sendReaction(event!, "✅");
|
await room.sendReaction(event!, "✅");
|
||||||
|
|
||||||
return Response.found(settings.successUri);
|
return Response.found(settings.successUri);
|
||||||
|
} catch (error) {
|
||||||
|
final message = "An error occurred: $error";
|
||||||
|
|
||||||
|
try {
|
||||||
|
final room = client.getRoomByAlias(settings.adminRoom)!;
|
||||||
|
await room.sendTextEvent(message);
|
||||||
|
} catch (_) {
|
||||||
|
print(message);
|
||||||
|
}
|
||||||
|
return Response.found(settings.failureUri);
|
||||||
|
}
|
||||||
}))
|
}))
|
||||||
.call,
|
.call,
|
||||||
);
|
);
|
||||||
|
|
|
@ -8,6 +8,7 @@ abstract class Settings with _$Settings {
|
||||||
const factory Settings({
|
const factory Settings({
|
||||||
required String socket,
|
required String socket,
|
||||||
required Uri homeserver,
|
required Uri homeserver,
|
||||||
|
required Uri failureUri,
|
||||||
required Uri successUri,
|
required Uri successUri,
|
||||||
required String name,
|
required String name,
|
||||||
required String adminName,
|
required String adminName,
|
||||||
|
|
|
@ -16,7 +16,7 @@ T _$identity<T>(T value) => value;
|
||||||
/// @nodoc
|
/// @nodoc
|
||||||
mixin _$Settings {
|
mixin _$Settings {
|
||||||
|
|
||||||
String get socket; Uri get homeserver; Uri get successUri; String get name; String get adminName; String get adminRoom; String get email; String get mailName; String? get inviteTo; String get mailDomain; String get smtpPasswordFile; String get botPasswordFile;
|
String get socket; Uri get homeserver; Uri get failureUri; Uri get successUri; String get name; String get adminName; String get adminRoom; String get email; String get mailName; String? get inviteTo; String get mailDomain; String get smtpPasswordFile; String get botPasswordFile;
|
||||||
/// Create a copy of Settings
|
/// Create a copy of Settings
|
||||||
/// with the given fields replaced by the non-null parameter values.
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
@ -29,16 +29,16 @@ $SettingsCopyWith<Settings> get copyWith => _$SettingsCopyWithImpl<Settings>(thi
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool operator ==(Object other) {
|
bool operator ==(Object other) {
|
||||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is Settings&&(identical(other.socket, socket) || other.socket == socket)&&(identical(other.homeserver, homeserver) || other.homeserver == homeserver)&&(identical(other.successUri, successUri) || other.successUri == successUri)&&(identical(other.name, name) || other.name == name)&&(identical(other.adminName, adminName) || other.adminName == adminName)&&(identical(other.adminRoom, adminRoom) || other.adminRoom == adminRoom)&&(identical(other.email, email) || other.email == email)&&(identical(other.mailName, mailName) || other.mailName == mailName)&&(identical(other.inviteTo, inviteTo) || other.inviteTo == inviteTo)&&(identical(other.mailDomain, mailDomain) || other.mailDomain == mailDomain)&&(identical(other.smtpPasswordFile, smtpPasswordFile) || other.smtpPasswordFile == smtpPasswordFile)&&(identical(other.botPasswordFile, botPasswordFile) || other.botPasswordFile == botPasswordFile));
|
return identical(this, other) || (other.runtimeType == runtimeType&&other is Settings&&(identical(other.socket, socket) || other.socket == socket)&&(identical(other.homeserver, homeserver) || other.homeserver == homeserver)&&(identical(other.failureUri, failureUri) || other.failureUri == failureUri)&&(identical(other.successUri, successUri) || other.successUri == successUri)&&(identical(other.name, name) || other.name == name)&&(identical(other.adminName, adminName) || other.adminName == adminName)&&(identical(other.adminRoom, adminRoom) || other.adminRoom == adminRoom)&&(identical(other.email, email) || other.email == email)&&(identical(other.mailName, mailName) || other.mailName == mailName)&&(identical(other.inviteTo, inviteTo) || other.inviteTo == inviteTo)&&(identical(other.mailDomain, mailDomain) || other.mailDomain == mailDomain)&&(identical(other.smtpPasswordFile, smtpPasswordFile) || other.smtpPasswordFile == smtpPasswordFile)&&(identical(other.botPasswordFile, botPasswordFile) || other.botPasswordFile == botPasswordFile));
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
int get hashCode => Object.hash(runtimeType,socket,homeserver,successUri,name,adminName,adminRoom,email,mailName,inviteTo,mailDomain,smtpPasswordFile,botPasswordFile);
|
int get hashCode => Object.hash(runtimeType,socket,homeserver,failureUri,successUri,name,adminName,adminRoom,email,mailName,inviteTo,mailDomain,smtpPasswordFile,botPasswordFile);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
return 'Settings(socket: $socket, homeserver: $homeserver, successUri: $successUri, name: $name, adminName: $adminName, adminRoom: $adminRoom, email: $email, mailName: $mailName, inviteTo: $inviteTo, mailDomain: $mailDomain, smtpPasswordFile: $smtpPasswordFile, botPasswordFile: $botPasswordFile)';
|
return 'Settings(socket: $socket, homeserver: $homeserver, failureUri: $failureUri, successUri: $successUri, name: $name, adminName: $adminName, adminRoom: $adminRoom, email: $email, mailName: $mailName, inviteTo: $inviteTo, mailDomain: $mailDomain, smtpPasswordFile: $smtpPasswordFile, botPasswordFile: $botPasswordFile)';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ abstract mixin class $SettingsCopyWith<$Res> {
|
||||||
factory $SettingsCopyWith(Settings value, $Res Function(Settings) _then) = _$SettingsCopyWithImpl;
|
factory $SettingsCopyWith(Settings value, $Res Function(Settings) _then) = _$SettingsCopyWithImpl;
|
||||||
@useResult
|
@useResult
|
||||||
$Res call({
|
$Res call({
|
||||||
String socket, Uri homeserver, Uri successUri, String name, String adminName, String adminRoom, String email, String mailName, String? inviteTo, String mailDomain, String smtpPasswordFile, String botPasswordFile
|
String socket, Uri homeserver, Uri failureUri, Uri successUri, String name, String adminName, String adminRoom, String email, String mailName, String? inviteTo, String mailDomain, String smtpPasswordFile, String botPasswordFile
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -66,10 +66,11 @@ class _$SettingsCopyWithImpl<$Res>
|
||||||
|
|
||||||
/// Create a copy of Settings
|
/// Create a copy of Settings
|
||||||
/// with the given fields replaced by the non-null parameter values.
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@pragma('vm:prefer-inline') @override $Res call({Object? socket = null,Object? homeserver = null,Object? successUri = null,Object? name = null,Object? adminName = null,Object? adminRoom = null,Object? email = null,Object? mailName = null,Object? inviteTo = freezed,Object? mailDomain = null,Object? smtpPasswordFile = null,Object? botPasswordFile = null,}) {
|
@pragma('vm:prefer-inline') @override $Res call({Object? socket = null,Object? homeserver = null,Object? failureUri = null,Object? successUri = null,Object? name = null,Object? adminName = null,Object? adminRoom = null,Object? email = null,Object? mailName = null,Object? inviteTo = freezed,Object? mailDomain = null,Object? smtpPasswordFile = null,Object? botPasswordFile = null,}) {
|
||||||
return _then(_self.copyWith(
|
return _then(_self.copyWith(
|
||||||
socket: null == socket ? _self.socket : socket // ignore: cast_nullable_to_non_nullable
|
socket: null == socket ? _self.socket : socket // ignore: cast_nullable_to_non_nullable
|
||||||
as String,homeserver: null == homeserver ? _self.homeserver : homeserver // ignore: cast_nullable_to_non_nullable
|
as String,homeserver: null == homeserver ? _self.homeserver : homeserver // ignore: cast_nullable_to_non_nullable
|
||||||
|
as Uri,failureUri: null == failureUri ? _self.failureUri : failureUri // ignore: cast_nullable_to_non_nullable
|
||||||
as Uri,successUri: null == successUri ? _self.successUri : successUri // ignore: cast_nullable_to_non_nullable
|
as Uri,successUri: null == successUri ? _self.successUri : successUri // ignore: cast_nullable_to_non_nullable
|
||||||
as Uri,name: null == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
|
as Uri,name: null == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
|
||||||
as String,adminName: null == adminName ? _self.adminName : adminName // ignore: cast_nullable_to_non_nullable
|
as String,adminName: null == adminName ? _self.adminName : adminName // ignore: cast_nullable_to_non_nullable
|
||||||
|
@ -91,11 +92,12 @@ as String,
|
||||||
@JsonSerializable()
|
@JsonSerializable()
|
||||||
|
|
||||||
class _Settings implements Settings {
|
class _Settings implements Settings {
|
||||||
const _Settings({required this.socket, required this.homeserver, required this.successUri, required this.name, required this.adminName, required this.adminRoom, required this.email, required this.mailName, required this.inviteTo, required this.mailDomain, required this.smtpPasswordFile, required this.botPasswordFile});
|
const _Settings({required this.socket, required this.homeserver, required this.failureUri, required this.successUri, required this.name, required this.adminName, required this.adminRoom, required this.email, required this.mailName, required this.inviteTo, required this.mailDomain, required this.smtpPasswordFile, required this.botPasswordFile});
|
||||||
factory _Settings.fromJson(Map<String, dynamic> json) => _$SettingsFromJson(json);
|
factory _Settings.fromJson(Map<String, dynamic> json) => _$SettingsFromJson(json);
|
||||||
|
|
||||||
@override final String socket;
|
@override final String socket;
|
||||||
@override final Uri homeserver;
|
@override final Uri homeserver;
|
||||||
|
@override final Uri failureUri;
|
||||||
@override final Uri successUri;
|
@override final Uri successUri;
|
||||||
@override final String name;
|
@override final String name;
|
||||||
@override final String adminName;
|
@override final String adminName;
|
||||||
|
@ -120,16 +122,16 @@ Map<String, dynamic> toJson() {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool operator ==(Object other) {
|
bool operator ==(Object other) {
|
||||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _Settings&&(identical(other.socket, socket) || other.socket == socket)&&(identical(other.homeserver, homeserver) || other.homeserver == homeserver)&&(identical(other.successUri, successUri) || other.successUri == successUri)&&(identical(other.name, name) || other.name == name)&&(identical(other.adminName, adminName) || other.adminName == adminName)&&(identical(other.adminRoom, adminRoom) || other.adminRoom == adminRoom)&&(identical(other.email, email) || other.email == email)&&(identical(other.mailName, mailName) || other.mailName == mailName)&&(identical(other.inviteTo, inviteTo) || other.inviteTo == inviteTo)&&(identical(other.mailDomain, mailDomain) || other.mailDomain == mailDomain)&&(identical(other.smtpPasswordFile, smtpPasswordFile) || other.smtpPasswordFile == smtpPasswordFile)&&(identical(other.botPasswordFile, botPasswordFile) || other.botPasswordFile == botPasswordFile));
|
return identical(this, other) || (other.runtimeType == runtimeType&&other is _Settings&&(identical(other.socket, socket) || other.socket == socket)&&(identical(other.homeserver, homeserver) || other.homeserver == homeserver)&&(identical(other.failureUri, failureUri) || other.failureUri == failureUri)&&(identical(other.successUri, successUri) || other.successUri == successUri)&&(identical(other.name, name) || other.name == name)&&(identical(other.adminName, adminName) || other.adminName == adminName)&&(identical(other.adminRoom, adminRoom) || other.adminRoom == adminRoom)&&(identical(other.email, email) || other.email == email)&&(identical(other.mailName, mailName) || other.mailName == mailName)&&(identical(other.inviteTo, inviteTo) || other.inviteTo == inviteTo)&&(identical(other.mailDomain, mailDomain) || other.mailDomain == mailDomain)&&(identical(other.smtpPasswordFile, smtpPasswordFile) || other.smtpPasswordFile == smtpPasswordFile)&&(identical(other.botPasswordFile, botPasswordFile) || other.botPasswordFile == botPasswordFile));
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
@override
|
@override
|
||||||
int get hashCode => Object.hash(runtimeType,socket,homeserver,successUri,name,adminName,adminRoom,email,mailName,inviteTo,mailDomain,smtpPasswordFile,botPasswordFile);
|
int get hashCode => Object.hash(runtimeType,socket,homeserver,failureUri,successUri,name,adminName,adminRoom,email,mailName,inviteTo,mailDomain,smtpPasswordFile,botPasswordFile);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
return 'Settings(socket: $socket, homeserver: $homeserver, successUri: $successUri, name: $name, adminName: $adminName, adminRoom: $adminRoom, email: $email, mailName: $mailName, inviteTo: $inviteTo, mailDomain: $mailDomain, smtpPasswordFile: $smtpPasswordFile, botPasswordFile: $botPasswordFile)';
|
return 'Settings(socket: $socket, homeserver: $homeserver, failureUri: $failureUri, successUri: $successUri, name: $name, adminName: $adminName, adminRoom: $adminRoom, email: $email, mailName: $mailName, inviteTo: $inviteTo, mailDomain: $mailDomain, smtpPasswordFile: $smtpPasswordFile, botPasswordFile: $botPasswordFile)';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -140,7 +142,7 @@ abstract mixin class _$SettingsCopyWith<$Res> implements $SettingsCopyWith<$Res>
|
||||||
factory _$SettingsCopyWith(_Settings value, $Res Function(_Settings) _then) = __$SettingsCopyWithImpl;
|
factory _$SettingsCopyWith(_Settings value, $Res Function(_Settings) _then) = __$SettingsCopyWithImpl;
|
||||||
@override @useResult
|
@override @useResult
|
||||||
$Res call({
|
$Res call({
|
||||||
String socket, Uri homeserver, Uri successUri, String name, String adminName, String adminRoom, String email, String mailName, String? inviteTo, String mailDomain, String smtpPasswordFile, String botPasswordFile
|
String socket, Uri homeserver, Uri failureUri, Uri successUri, String name, String adminName, String adminRoom, String email, String mailName, String? inviteTo, String mailDomain, String smtpPasswordFile, String botPasswordFile
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -157,10 +159,11 @@ class __$SettingsCopyWithImpl<$Res>
|
||||||
|
|
||||||
/// Create a copy of Settings
|
/// Create a copy of Settings
|
||||||
/// with the given fields replaced by the non-null parameter values.
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
@override @pragma('vm:prefer-inline') $Res call({Object? socket = null,Object? homeserver = null,Object? successUri = null,Object? name = null,Object? adminName = null,Object? adminRoom = null,Object? email = null,Object? mailName = null,Object? inviteTo = freezed,Object? mailDomain = null,Object? smtpPasswordFile = null,Object? botPasswordFile = null,}) {
|
@override @pragma('vm:prefer-inline') $Res call({Object? socket = null,Object? homeserver = null,Object? failureUri = null,Object? successUri = null,Object? name = null,Object? adminName = null,Object? adminRoom = null,Object? email = null,Object? mailName = null,Object? inviteTo = freezed,Object? mailDomain = null,Object? smtpPasswordFile = null,Object? botPasswordFile = null,}) {
|
||||||
return _then(_Settings(
|
return _then(_Settings(
|
||||||
socket: null == socket ? _self.socket : socket // ignore: cast_nullable_to_non_nullable
|
socket: null == socket ? _self.socket : socket // ignore: cast_nullable_to_non_nullable
|
||||||
as String,homeserver: null == homeserver ? _self.homeserver : homeserver // ignore: cast_nullable_to_non_nullable
|
as String,homeserver: null == homeserver ? _self.homeserver : homeserver // ignore: cast_nullable_to_non_nullable
|
||||||
|
as Uri,failureUri: null == failureUri ? _self.failureUri : failureUri // ignore: cast_nullable_to_non_nullable
|
||||||
as Uri,successUri: null == successUri ? _self.successUri : successUri // ignore: cast_nullable_to_non_nullable
|
as Uri,successUri: null == successUri ? _self.successUri : successUri // ignore: cast_nullable_to_non_nullable
|
||||||
as Uri,name: null == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
|
as Uri,name: null == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
|
||||||
as String,adminName: null == adminName ? _self.adminName : adminName // ignore: cast_nullable_to_non_nullable
|
as String,adminName: null == adminName ? _self.adminName : adminName // ignore: cast_nullable_to_non_nullable
|
||||||
|
|
|
@ -9,6 +9,7 @@ part of 'settings.dart';
|
||||||
_Settings _$SettingsFromJson(Map<String, dynamic> json) => _Settings(
|
_Settings _$SettingsFromJson(Map<String, dynamic> json) => _Settings(
|
||||||
socket: json['socket'] as String,
|
socket: json['socket'] as String,
|
||||||
homeserver: Uri.parse(json['homeserver'] as String),
|
homeserver: Uri.parse(json['homeserver'] as String),
|
||||||
|
failureUri: Uri.parse(json['failureUri'] as String),
|
||||||
successUri: Uri.parse(json['successUri'] as String),
|
successUri: Uri.parse(json['successUri'] as String),
|
||||||
name: json['name'] as String,
|
name: json['name'] as String,
|
||||||
adminName: json['adminName'] as String,
|
adminName: json['adminName'] as String,
|
||||||
|
@ -24,6 +25,7 @@ _Settings _$SettingsFromJson(Map<String, dynamic> json) => _Settings(
|
||||||
Map<String, dynamic> _$SettingsToJson(_Settings instance) => <String, dynamic>{
|
Map<String, dynamic> _$SettingsToJson(_Settings instance) => <String, dynamic>{
|
||||||
'socket': instance.socket,
|
'socket': instance.socket,
|
||||||
'homeserver': instance.homeserver.toString(),
|
'homeserver': instance.homeserver.toString(),
|
||||||
|
'failureUri': instance.failureUri.toString(),
|
||||||
'successUri': instance.successUri.toString(),
|
'successUri': instance.successUri.toString(),
|
||||||
'name': instance.name,
|
'name': instance.name,
|
||||||
'adminName': instance.adminName,
|
'adminName': instance.adminName,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue