71 lines
1.9 KiB
Dart
71 lines
1.9 KiB
Dart
import "dart:convert";
|
|
import "dart:io";
|
|
import "package:cozybot/controllers/record_controller.dart";
|
|
import "package:riverpod/riverpod.dart";
|
|
import "package:shelf/shelf.dart";
|
|
import "package:shelf/shelf_io.dart";
|
|
import "package:shelf_router/shelf_router.dart";
|
|
|
|
void main(List<String> argsRaw) async {
|
|
final container = ProviderContainer();
|
|
final isDebug = await File("./README.md").exists();
|
|
|
|
final handler = const Pipeline()
|
|
.addMiddleware(logRequests())
|
|
.addHandler(
|
|
(Router()
|
|
..get(
|
|
"/",
|
|
(_) => Response.ok(
|
|
"""
|
|
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<script>
|
|
setInterval(async () => {
|
|
const response = await fetch("/data")
|
|
const data = await response.json()
|
|
document.body.innerText = data
|
|
console.log(data)
|
|
}, 1000)
|
|
</script>
|
|
<style>
|
|
@import url('https://fonts.googleapis.com/css2?family=Momo+Trust+Sans:wght@800');
|
|
body {
|
|
background-color: rgba(0, 0, 0, 0);
|
|
font-size: 10vw;
|
|
color: white;
|
|
font-family: "Momo Trust Sans", sans-serif;
|
|
text-align: right;
|
|
}
|
|
</style>
|
|
</head>
|
|
</html>""",
|
|
headers: {"content-type": "text/html"},
|
|
),
|
|
)
|
|
..get(
|
|
"/data",
|
|
(_) => Response.ok(
|
|
json.encode(container.read(RecordController.provider)),
|
|
headers: {"content-type": "text/json"},
|
|
),
|
|
))
|
|
.call,
|
|
);
|
|
|
|
final server = HttpServer.listenOn(
|
|
isDebug
|
|
? await ServerSocket.bind(InternetAddress.loopbackIPv4, 8080)
|
|
: await ServerSocket.bind(
|
|
InternetAddress(
|
|
"/var/run/cozybot/socket",
|
|
type: InternetAddressType.unix,
|
|
),
|
|
0,
|
|
),
|
|
);
|
|
|
|
serveRequests(server, handler);
|
|
print("Bot listening at ${server.address.address}:${server.port}");
|
|
}
|