31a84b5ec7
This is prevents the current route from being reset, when reloading the tab and also prevents the welcome screen from showing (when running on slow connections) NOTE: This also means that the home screen will be loaded even if the client has never been logged in. This means that some functions might return null
64 lines
1.8 KiB
Dart
64 lines
1.8 KiB
Dart
import 'package:http/http.dart' as http;
|
|
import 'dart:convert';
|
|
import './resolve_url.dart';
|
|
import './user.dart';
|
|
|
|
enum Result {
|
|
ok,
|
|
err
|
|
}
|
|
class Response {
|
|
final Map<String, dynamic> body;
|
|
final Result res;
|
|
|
|
const Response({required this.body, required this.res});
|
|
}
|
|
|
|
Future<Response> usePostApi(
|
|
{required OutbagServer target,
|
|
String path = '',
|
|
required Map<String, String> headers,
|
|
required Map<String, dynamic> body}) async {
|
|
final resp = await http.post(Uri.parse('${target.base}api/$path'),
|
|
headers: headers, body: jsonEncode({'data': body}));
|
|
final json = jsonDecode(resp.body);
|
|
return Response(body: json, res: resp.statusCode==200?Result.ok:Result.err);
|
|
}
|
|
|
|
Future<Response> postWithCreadentials(
|
|
{required OutbagServer target,
|
|
String path = '',
|
|
required Map<String, dynamic> body,
|
|
required User credentials}) async {
|
|
Map<String, String> headers = {
|
|
"Content-Type": "application/json",
|
|
'Authorization':
|
|
'Digest name=${credentials.username} server=${target.tag} accountKey=${credentials.password}'
|
|
};
|
|
return await usePostApi(
|
|
target: target, path: path, headers: headers, body: body);
|
|
}
|
|
|
|
Future<Response> postWithToken(
|
|
{required OutbagServer target,
|
|
String path = '',
|
|
required Map<String, dynamic> body,
|
|
required String token}) async {
|
|
Map<String, String> headers = {
|
|
"Content-Type": "application/json",
|
|
'Authorization': 'Bearer $token'
|
|
};
|
|
return await usePostApi(
|
|
target: target, path: path, headers: headers, body: body);
|
|
}
|
|
|
|
Future<Response> postUnauthorized(
|
|
{required OutbagServer target,
|
|
String path = '',
|
|
required Map<String, dynamic> body}) async {
|
|
Map<String, String> headers = {
|
|
"Content-Type": "application/json",
|
|
};
|
|
return await usePostApi(
|
|
target: target, path: path, headers: headers, body: body);
|
|
}
|