commit from livecd

This commit is contained in:
2025-07-24 13:46:46 +01:00
parent 9fbdd97b15
commit e6ed9d01c2
6 changed files with 251 additions and 38 deletions

View File

@@ -1,15 +1,32 @@
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:mileograph_flutter/services/authservice.dart';
typedef TokenProvider = String? Function();
class ApiService {
final String baseUrl;
TokenProvider? _getToken;
ApiService({required this.baseUrl});
void setTokenProvider(TokenProvider provider) {
_getToken = provider;
}
Map<String, String> _buildHeaders(Map<String, String>? extra) {
final token = _getToken?.call();
final headers = {'accept': 'application/json', ...?extra};
if (token != null && token.isNotEmpty) {
headers['Authorization'] = 'Bearer $token';
}
return headers;
}
Future<dynamic> get(String endpoint, {Map<String, String>? headers}) async {
final response = await http.get(
Uri.parse('$baseUrl$endpoint'),
headers: headers,
headers: _buildHeaders(headers),
);
return _processResponse(response);
}
@@ -21,7 +38,7 @@ class ApiService {
}) async {
final response = await http.post(
Uri.parse('$baseUrl$endpoint'),
headers: _jsonHeaders(headers),
headers: _buildHeaders(_jsonHeaders(headers)),
body: jsonEncode(data),
);
return _processResponse(response);
@@ -30,10 +47,10 @@ class ApiService {
Future<dynamic> postForm(String endpoint, Map<String, String> data) async {
final response = await http.post(
Uri.parse('$baseUrl$endpoint'),
headers: {
headers: _buildHeaders({
'Content-Type': 'application/x-www-form-urlencoded',
'accept': 'application/json',
},
}),
body: data, // http package handles form-encoding for Map<String, String>
);
return _processResponse(response);
@@ -46,7 +63,7 @@ class ApiService {
}) async {
final response = await http.put(
Uri.parse('$baseUrl$endpoint'),
headers: _jsonHeaders(headers),
headers: _buildHeaders(_jsonHeaders(headers)),
body: jsonEncode(data),
);
return _processResponse(response);
@@ -58,7 +75,7 @@ class ApiService {
}) async {
final response = await http.delete(
Uri.parse('$baseUrl$endpoint'),
headers: headers,
headers: _buildHeaders(headers),
);
return _processResponse(response);
}