display api stuff in frontend

This commit is contained in:
2023-12-29 18:13:51 +01:00
parent 6faa995b19
commit ce7a260760
28 changed files with 441 additions and 183 deletions

View File

@@ -0,0 +1,4 @@
import 'api_client.dart';
/// use this variable to access global api
final ApiClient API = ApiClient();

View File

@@ -0,0 +1,16 @@
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
class ApiClient {
static const String _apiBase = kDebugMode ? "http://localhost:8081" : "";
final Dio _dio = Dio(BaseOptions(baseUrl: _apiBase));
String? token;
DateTime? tokenValidUntil;
ApiClient();
Dio getRawClient() {
return _dio;
}
}

View File

@@ -0,0 +1,13 @@
import '../core/models/build.dart';
import 'api_client.dart';
extension BuildsAPI on ApiClient {
Future<List<Build>> listAllBuilds() async {
final resp = await getRawClient().get("/builds");
final responseObject = resp.data as List;
final List<Build> packages =
responseObject.map((e) => Build.fromJson(e)).toList(growable: false);
return packages;
}
}

View File

@@ -0,0 +1,22 @@
import '../core/models/package.dart';
import 'api_client.dart';
extension PackagesAPI on ApiClient {
Future<List<Package>> listPackages() async {
final resp = await getRawClient().get("/packages/list");
print(resp.data);
// todo error handling
final responseObject = resp.data as List;
final List<Package> packages =
responseObject.map((e) => Package.fromJson(e)).toList(growable: false);
return packages;
}
Future<void> addPackage({bool force = false, required String name}) async {
final resp = await getRawClient().post("/packages/add", data: {'force_build': force, 'name': name});
print(resp.data);
}
}