feat: add Swagger UI docs at /api_info endpoint
This commit is contained in:
@@ -7,6 +7,7 @@ import '../database/database_provider.dart';
|
||||
import '../middleware/auth_middleware.dart';
|
||||
import '../middleware/request_logger.dart';
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
class AuthRoutes {
|
||||
final DatabaseProvider database;
|
||||
@@ -18,6 +19,7 @@ class AuthRoutes {
|
||||
router.post('/login', _login);
|
||||
router.post('/reg', _register);
|
||||
router.get('/watch', AuthMiddleware(_watch).call);
|
||||
router.get('/api_info', _apiInfo);
|
||||
return router;
|
||||
}
|
||||
|
||||
@@ -112,4 +114,12 @@ class AuthRoutes {
|
||||
logRequest(method: 'GET', url: '/watch', status: 200, duration: stopwatch.elapsed, responseHeaders: response.headers);
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<Response> _apiInfo(Request request) async {
|
||||
final swaggerDir = Directory('web/swagger');
|
||||
final swaggerFile = File('${swaggerDir.path}/index.html');
|
||||
final html = await swaggerFile.readAsString();
|
||||
final response = Response(200, body: html, headers: {'Content-Type': 'text/html'});
|
||||
return response;
|
||||
}
|
||||
}
|
||||
+2
-3
@@ -38,18 +38,17 @@ void main(List<String> args) async {
|
||||
final authRoutes = AuthRoutes(database);
|
||||
final geoRoutes = GeoRoutes(database);
|
||||
|
||||
final router = Router()
|
||||
|
||||
final router = Router()
|
||||
..mount('/', authRoutes.routes.call)
|
||||
..mount('/', geoRoutes.routes.call);
|
||||
|
||||
final staticHandler = createStaticHandler('web', defaultDocument: 'index.html');
|
||||
final apiHandler = createStaticHandler('web/swagger', defaultDocument: 'index.html');
|
||||
|
||||
final handler = Pipeline()
|
||||
.addMiddleware(_corsMiddleware)
|
||||
.addMiddleware(logRequests())
|
||||
.addHandler(Cascade()
|
||||
.add(apiHandler)
|
||||
.add(staticHandler)
|
||||
.add(router.call)
|
||||
.handler);
|
||||
|
||||
Reference in New Issue
Block a user