Add Waylume Manifesto and update API routes for peer management
This commit is contained in:
@@ -11,15 +11,52 @@ class PeerRoutes {
|
||||
Router get router {
|
||||
final router = Router();
|
||||
|
||||
router.post('/peers', _createPeer);
|
||||
router.post('/peers/delete', _deletePeer);
|
||||
router.post('/peers/config', _getPeerConfig);
|
||||
router.post('/peers/speed-limit', _setSpeedLimit);
|
||||
router.post('/peers/data-cap', _setDataCap);
|
||||
router.get('/peers', _getPeers);
|
||||
router.post('/peer', _createPeer);
|
||||
router.delete('/peer/<publicKey>', _deletePeer);
|
||||
router.get('/peer/<publicKey>/config', _getPeerConfig);
|
||||
router.patch('/peer/<publicKey>/speed-limit', _setSpeedLimit);
|
||||
router.patch('/peer/<publicKey>/data-cap', _setDataCap);
|
||||
|
||||
return router;
|
||||
}
|
||||
|
||||
Future<Response> _getPeers(Request request) async {
|
||||
try {
|
||||
final statusParam = request.url.queryParameters['status']?.toUpperCase();
|
||||
|
||||
List<Map<String, dynamic>> peers;
|
||||
|
||||
if (statusParam == 'DEAD') {
|
||||
peers = await VpnSessionService.getInactivePeers();
|
||||
} else if (statusParam == 'ALIVE') {
|
||||
final allPeers = await VpnSessionService.getAllLocalPeers();
|
||||
peers = allPeers.where((peer) => peer['status'] == 'ALIVE').toList();
|
||||
} else {
|
||||
// No filter or invalid filter - return all peers
|
||||
peers = await VpnSessionService.getAllLocalPeers();
|
||||
}
|
||||
|
||||
return Response.ok(
|
||||
jsonEncode({
|
||||
'success': true,
|
||||
'peers': peers,
|
||||
'total_count': peers.length,
|
||||
'filter': statusParam,
|
||||
}),
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
);
|
||||
} catch (e) {
|
||||
return Response.internalServerError(
|
||||
body: jsonEncode({
|
||||
'success': false,
|
||||
'error': e.toString(),
|
||||
}),
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Future<Response> _createPeer(Request request) async {
|
||||
try {
|
||||
final peer = await createPeer();
|
||||
@@ -57,11 +94,9 @@ class PeerRoutes {
|
||||
|
||||
Future<Response> _deletePeer(Request request) async {
|
||||
try {
|
||||
final body = await request.readAsString();
|
||||
final data = jsonDecode(body) as Map<String, dynamic>;
|
||||
final publicKey = data['publicKey'] as String?;
|
||||
final publicKey = request.params['publicKey'];
|
||||
|
||||
if (publicKey == null) {
|
||||
if (publicKey == null || publicKey.isEmpty) {
|
||||
return Response.badRequest(
|
||||
body: jsonEncode({
|
||||
'success': false,
|
||||
@@ -93,11 +128,9 @@ class PeerRoutes {
|
||||
|
||||
Future<Response> _getPeerConfig(Request request) async {
|
||||
try {
|
||||
final body = await request.readAsString();
|
||||
final data = jsonDecode(body) as Map<String, dynamic>;
|
||||
final publicKey = data['publicKey'] as String?;
|
||||
final publicKey = request.params['publicKey'];
|
||||
|
||||
if (publicKey == null) {
|
||||
if (publicKey == null || publicKey.isEmpty) {
|
||||
return Response.badRequest(
|
||||
body: jsonEncode({
|
||||
'success': false,
|
||||
@@ -127,12 +160,12 @@ class PeerRoutes {
|
||||
|
||||
Future<Response> _setSpeedLimit(Request request) async {
|
||||
try {
|
||||
final publicKey = request.params['publicKey'];
|
||||
final body = await request.readAsString();
|
||||
final data = jsonDecode(body) as Map<String, dynamic>;
|
||||
final publicKey = data['publicKey'] as String?;
|
||||
final bytesPerSecond = data['bytesPerSecond'] as int?;
|
||||
|
||||
if (publicKey == null) {
|
||||
if (publicKey == null || publicKey.isEmpty) {
|
||||
return Response.badRequest(
|
||||
body: jsonEncode({
|
||||
'success': false,
|
||||
@@ -174,12 +207,12 @@ class PeerRoutes {
|
||||
|
||||
Future<Response> _setDataCap(Request request) async {
|
||||
try {
|
||||
final publicKey = request.params['publicKey'];
|
||||
final body = await request.readAsString();
|
||||
final data = jsonDecode(body) as Map<String, dynamic>;
|
||||
final publicKey = data['publicKey'] as String?;
|
||||
final quotaBytes = data['quotaBytes'] as int?;
|
||||
|
||||
if (publicKey == null) {
|
||||
if (publicKey == null || publicKey.isEmpty) {
|
||||
return Response.badRequest(
|
||||
body: jsonEncode({
|
||||
'success': false,
|
||||
|
||||
Reference in New Issue
Block a user