Start to build synchronization logic
This commit is contained in:
@@ -24,7 +24,11 @@ class ApiClient {
|
||||
: client = Dio(BaseOptions(baseUrl: token.apiUrl));
|
||||
|
||||
/// Get Dio instance
|
||||
Future<Response<T>> execute<T>(String uri, {String method = "GET"}) async {
|
||||
Future<Response<T>> execute<T>(
|
||||
String uri, {
|
||||
String method = "GET",
|
||||
Object? data,
|
||||
}) async {
|
||||
Logger.root.fine("Request on ${token.apiUrl} - URI $uri");
|
||||
return client.request(
|
||||
uri,
|
||||
@@ -32,6 +36,7 @@ class ApiClient {
|
||||
method: method,
|
||||
headers: {apiTokenHeader: _genJWT(method, uri)},
|
||||
),
|
||||
data: data,
|
||||
);
|
||||
}
|
||||
|
||||
|
43
moneymgr_mobile/lib/services/api/files_api.dart
Normal file
43
moneymgr_mobile/lib/services/api/files_api.dart
Normal file
@@ -0,0 +1,43 @@
|
||||
import 'dart:typed_data';
|
||||
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:http_parser/http_parser.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:moneymgr_mobile/services/api/api_client.dart';
|
||||
|
||||
part 'files_api.freezed.dart';
|
||||
part 'files_api.g.dart';
|
||||
|
||||
@freezed
|
||||
abstract class UploadResult with _$UploadResult {
|
||||
const factory UploadResult({required int id}) = _UploadResult;
|
||||
|
||||
factory UploadResult.fromJson(Map<String, dynamic> json) =>
|
||||
_$UploadResultFromJson(json);
|
||||
}
|
||||
|
||||
extension FilesApi on ApiClient {
|
||||
/// Upload a file
|
||||
Future<UploadResult> uploadFile({
|
||||
required String filename,
|
||||
required String mimeType,
|
||||
required Uint8List bytes,
|
||||
}) async {
|
||||
final res = await execute(
|
||||
"/file",
|
||||
method: "POST",
|
||||
data: FormData.fromMap({
|
||||
"file": MultipartFile.fromBytes(
|
||||
bytes,
|
||||
filename: filename,
|
||||
contentType: MediaType.parse(mimeType),
|
||||
),
|
||||
}),
|
||||
);
|
||||
|
||||
Logger.root.fine("Successfully uploaded file with response=${res.data}");
|
||||
|
||||
return UploadResult.fromJson(res.data);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user