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 body; final Result res; const Response({required this.body, required this.res}); } Future usePostApi( {required OutbagServer target, String path = '', required Map headers, required Map 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 postWithCreadentials( {required OutbagServer target, String path = '', required Map body, required User credentials}) async { Map 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 postWithToken( {required OutbagServer target, String path = '', required Map body, required String token}) async { Map headers = { "Content-Type": "application/json", 'Authorization': 'Bearer $token' }; return await usePostApi( target: target, path: path, headers: headers, body: body); } Future postUnauthorized( {required OutbagServer target, String path = '', required Map body}) async { Map headers = { "Content-Type": "application/json", }; return await usePostApi( target: target, path: path, headers: headers, body: body); }