import 'dart:convert'; import 'package:http/http.dart' as http; import 'package:url_launcher/url_launcher.dart'; import '../../global.dart' as global; import '../../business_logic/settings.dart' as settings; class App { late String clientSecret; late String clientId; late String id; late String name; late String website; late String redirectUri; App( {required this.clientSecret, required this.clientId, required this.id, required this.name, required this.website, required this.redirectUri}); factory App.fromJson(Map json) { return App( id: json["id"].toString(), name: json["name"].toString(), website: json["website"].toString(), redirectUri: json["redirect_uri"].toString(), clientId: json["client_id"].toString(), clientSecret: json["client_secret"].toString()); } } Future askKnownServerForAppRegistration() async { String url = await settings.loadInstanceUrl(); try { return await registerApp(url); } catch (e) { return http.Response(jsonEncode({}), 404); } } Future registerApp(String baseurl) async { //String url = baseurl Uri."api/v1/apps"; Uri url = Uri.https(baseurl, "/api/v1/apps"); final response = await http.post(url, headers: global.defaultHeaders, body: jsonEncode({ 'client_name': global.name, 'redirect_uris': "urn:ietf:wg:oauth:2.0:oob", 'scopes': "read write", 'website': global.website })); return response; } void openBrowserForAuthCode(String baseurl, App app) { Uri url = Uri.https( baseurl, // ignore: prefer_interpolation_to_compose_strings "/oauth/authorize" "?client_id=" + app.clientId + "&scope=read+write" + "&redirect_uri=urn:ietf:wg:oauth:2.0:oob" + "&response_type=code"); launchUrl(url); }