CozyBot/bin/cozybot.dart
2025-11-20 17:51:25 -05:00

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}");
}