save auth code

This commit is contained in:
zoe 2022-07-01 16:14:13 +02:00
parent bb8680e3f6
commit 21e130b6f6
3 changed files with 41 additions and 4 deletions

View file

@ -36,7 +36,7 @@ Response readAuthcode(Request request) {
Map<String, String> params = request.url.queryParameters; Map<String, String> params = request.url.queryParameters;
if (params.containsKey("code") && params["code"] != null) { if (params.containsKey("code") && params["code"] != null) {
String code = params["code"].toString(); String code = params["code"].toString();
print(code); settings.saveAuthCode(code);
} }
return Response(200, return Response(200,
body: body:
@ -51,16 +51,28 @@ Future<int> handleFullOauth() async {
return response.statusCode; return response.statusCode;
} }
await settings.saveAuthCode("");
var handler = const Pipeline().addHandler(readAuthcode); var handler = const Pipeline().addHandler(readAuthcode);
var server = await shelf_io.serve(handler, 'localhost', 1312); var server = await shelf_io.serve(handler, 'localhost', 1312);
server.idleTimeout = const Duration(minutes: 5); server.idleTimeout = const Duration(minutes: 5);
server.autoCompress = true; await pollCode();
server.close();
return 200; return 200;
} catch (e) { } catch (e) {
return 400; return 400;
} }
} }
Future<String> pollCode() async {
String code = "";
while (code == "") {
await Future.delayed(const Duration(seconds: 3));
code = await settings.loadAuthCode();
}
print(code);
return code;
}
Future<http.Response> doOauthFlow() async { Future<http.Response> doOauthFlow() async {
String url = await settings.loadInstanceUrl(); String url = await settings.loadInstanceUrl();
try { try {

View file

@ -12,7 +12,7 @@ void saveSetting(Settings setting, dynamic value) async {
Future<bool> saveInstanceUrl(String url) async { Future<bool> saveInstanceUrl(String url) async {
final prefs = await SharedPreferences.getInstance(); final prefs = await SharedPreferences.getInstance();
return prefs.setString("instance-url", url); return await prefs.setString("instance-url", url);
} }
Future<String> loadInstanceUrl() async { Future<String> loadInstanceUrl() async {
@ -27,5 +27,19 @@ Future<String> loadInstanceUrl() async {
Future<bool> saveUsername(String username) async { Future<bool> saveUsername(String username) async {
final prefs = await SharedPreferences.getInstance(); final prefs = await SharedPreferences.getInstance();
return prefs.setString("username", username); return await prefs.setString("username", username);
}
Future<bool> saveAuthCode(String code) async {
final prefs = await SharedPreferences.getInstance();
return await prefs.setString("authcode", code);
}
Future<String> loadAuthCode() async {
final prefs = await SharedPreferences.getInstance();
String? code = prefs.getString("authcode");
if (code == null) {
return "";
}
return code;
} }

11
test/user/regex_test.dart Normal file
View file

@ -0,0 +1,11 @@
import 'package:flutter_test/flutter_test.dart';
void main() {
matchWords();
}
void matchWords() {
test("try matching some words", () {
expect(RegExp(r"tiger").hasMatch("tigerfucker"), true);
});
}