2023-03-17 21:06:41 +01:00
|
|
|
import 'package:http/http.dart' as http;
|
|
|
|
import 'dart:convert';
|
|
|
|
import './resolve_url.dart';
|
2023-03-18 20:24:48 +01:00
|
|
|
import './user.dart';
|
2023-03-17 21:06:41 +01:00
|
|
|
|
2023-03-20 21:19:25 +01:00
|
|
|
enum Result { ok, err }
|
|
|
|
|
2023-03-17 21:06:41 +01:00
|
|
|
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);
|
2023-03-20 21:19:25 +01:00
|
|
|
return Response(
|
|
|
|
body: json, res: resp.statusCode == 200 ? Result.ok : Result.err);
|
2023-03-17 21:06:41 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
Future<Response> postWithCreadentials(
|
|
|
|
{required OutbagServer target,
|
|
|
|
String path = '',
|
|
|
|
required Map<String, dynamic> body,
|
2023-03-18 20:24:48 +01:00
|
|
|
required User credentials}) async {
|
2023-03-17 21:06:41 +01:00
|
|
|
Map<String, String> headers = {
|
|
|
|
"Content-Type": "application/json",
|
|
|
|
'Authorization':
|
2023-03-18 20:24:48 +01:00
|
|
|
'Digest name=${credentials.username} server=${target.tag} accountKey=${credentials.password}'
|
2023-03-17 21:06:41 +01:00
|
|
|
};
|
|
|
|
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);
|
|
|
|
}
|