2018-11-11 17:35:37 +00:00
|
|
|
import 'dart:io';
|
2024-10-13 01:45:27 +00:00
|
|
|
import 'package:protevus_framework/protevus_framework.dart';
|
|
|
|
import 'package:protevus_framework/http.dart';
|
|
|
|
import 'package:protevus_shelf/protevus_shelf.dart';
|
2019-10-14 15:28:50 +00:00
|
|
|
import 'package:logging/logging.dart';
|
2021-09-25 15:04:25 +00:00
|
|
|
import 'package:belatuk_pretty_logging/belatuk_pretty_logging.dart';
|
2018-11-11 17:35:37 +00:00
|
|
|
import 'package:shelf_static/shelf_static.dart';
|
|
|
|
|
2021-06-26 13:13:43 +00:00
|
|
|
void main() async {
|
2019-10-14 15:28:50 +00:00
|
|
|
Logger.root
|
|
|
|
..level = Level.ALL
|
|
|
|
..onRecord.listen(prettyLog);
|
2019-10-14 16:38:30 +00:00
|
|
|
|
2024-10-13 01:45:27 +00:00
|
|
|
var app = Protevus(logger: Logger('protevus_shelf_demo'));
|
2024-10-12 10:35:14 +00:00
|
|
|
var http = ProtevusHttp(app);
|
2018-11-11 17:35:37 +00:00
|
|
|
|
|
|
|
// `shelf` request handler
|
|
|
|
var shelfHandler = createStaticHandler('.',
|
|
|
|
defaultDocument: 'index.html', listDirectories: true);
|
|
|
|
|
2024-10-12 10:35:14 +00:00
|
|
|
// Use `embedShelf` to adapt a `shelf` handler for use within Protevus.
|
2018-11-11 17:35:37 +00:00
|
|
|
var wrappedHandler = embedShelf(shelfHandler);
|
|
|
|
|
2024-10-12 10:35:14 +00:00
|
|
|
// A normal Protevus route.
|
|
|
|
app.get('/protevus', (req, ResponseContext res) {
|
2024-10-13 01:45:27 +00:00
|
|
|
res.write('Hooray for `package:protevus_shelf`!');
|
2018-11-11 17:35:37 +00:00
|
|
|
return false; // End execution of handlers, so we don't proxy to dartlang.org when we don't need to.
|
|
|
|
});
|
|
|
|
|
2019-10-14 15:28:50 +00:00
|
|
|
// Pass any other request through to the static file handler
|
2018-11-11 17:35:37 +00:00
|
|
|
app.fallback(wrappedHandler);
|
|
|
|
|
|
|
|
await http.startServer(InternetAddress.loopbackIPv4, 8080);
|
2019-10-14 15:28:50 +00:00
|
|
|
print('Running at ${http.uri}');
|
2018-11-11 17:35:37 +00:00
|
|
|
}
|