initial commit
This commit is contained in:
commit
e8e678bc2b
23 changed files with 2339 additions and 0 deletions
36
lib/controllers/login_controller.dart
Normal file
36
lib/controllers/login_controller.dart
Normal file
|
@ -0,0 +1,36 @@
|
|||
import "dart:io";
|
||||
import "dart:convert";
|
||||
import "package:http/http.dart";
|
||||
import "package:nexusbot/controllers/settings_controller.dart";
|
||||
import "package:riverpod/riverpod.dart";
|
||||
|
||||
class LoginController extends AsyncNotifier<String> {
|
||||
@override
|
||||
Future<String> build() async {
|
||||
final settings = ref.watch(SettingsController.provider)!;
|
||||
final response = await post(
|
||||
settings.homeserver.replace(path: "_matrix/client/v3/login"),
|
||||
headers: {HttpHeaders.contentTypeHeader: "application/json"},
|
||||
body: json.encode({
|
||||
"type": "m.login.password",
|
||||
"device_id": "script",
|
||||
"identifier": {"type": "m.id.user", "user": settings.name},
|
||||
"password": (await File(
|
||||
settings.botPasswordFile,
|
||||
).readAsString()).trim(),
|
||||
}),
|
||||
);
|
||||
|
||||
if (response.statusCode != 200) {
|
||||
throw Exception(
|
||||
"Login failed, check your name, homeserver and botPasswordFile: ${response.body}",
|
||||
);
|
||||
}
|
||||
|
||||
return json.decode(response.body)["access_token"];
|
||||
}
|
||||
|
||||
static final provider = AsyncNotifierProvider<LoginController, String>(
|
||||
LoginController.new,
|
||||
);
|
||||
}
|
16
lib/controllers/settings_controller.dart
Normal file
16
lib/controllers/settings_controller.dart
Normal file
|
@ -0,0 +1,16 @@
|
|||
import "package:args/args.dart";
|
||||
import "package:nexusbot/models/settings.dart";
|
||||
import "package:riverpod/riverpod.dart";
|
||||
|
||||
class SettingsController extends Notifier<Settings?> {
|
||||
@override
|
||||
Settings? build() => null;
|
||||
|
||||
void set(ArgResults args) => state = Settings.fromJson(<String, dynamic>{
|
||||
for (final opt in args.options) opt: args.option(opt),
|
||||
});
|
||||
|
||||
static final provider = NotifierProvider<SettingsController, Settings?>(
|
||||
SettingsController.new,
|
||||
);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue