runServer function
Future<void>
runServer(
- dynamic scheme,
- dynamic host,
- dynamic port,
- dynamic dataDir,
)
Implementation
Future<void> runServer(scheme, host, port, dataDir) async {
final overrideHeaders = {
ACCESS_CONTROL_ALLOW_ORIGIN: 'https://chat.openai.com',
ACCESS_CONTROL_ALLOW_METHODS: 'GET,POST,DELETE,PUT,OPTIONS',
ACCESS_CONTROL_ALLOW_HEADERS: "*"
};
final catalogDir = "$dataDir/catalog";
final metaDir = "$dataDir/meta";
final publicDir = "$dataDir/public";
final serviceMapFile = File('$catalogDir/domain-map.json');
final serviceIdMap = await readMap(serviceMapFile);
final contentTypesFile = File('$catalogDir/content-types.json');
final contentTypesMap = await readMap(contentTypesFile);
final proxyMapFile = File('$catalogDir/api-map.json');
final proxyMap = await readMap(proxyMapFile);
final staticHandler =
createStaticHandler(publicDir, defaultDocument: 'index.html');
final handler = const shelf.Pipeline()
.addMiddleware(shelf.logRequests())
.addMiddleware(corsHeaders(headers: overrideHeaders))
.addHandler(RequestHandler(
serviceIdMap: serviceIdMap,
proxyMap: proxyMap,
contentTypes: contentTypesMap,
catalogDir: catalogDir,
metaDir: metaDir,
host: host,
scheme: scheme,
staticHandler: staticHandler,
).handle);
final ip = InternetAddress.anyIPv4;
final server = await io.serve(handler, ip, port);
print('Server listening on port ${server.port}');
}