from aiohttp import web


def build_meta_app(instance_id: str, version: str, commit: str) -> web.Application:

    async def handle_meta(request: web.Request) -> web.Response:
        return web.json_response({
            "product": "open-autosecure",
            "version": version,
            "instance_id": instance_id,
            "commit": commit,
        })

    app = web.Application()
    app.add_routes([web.get("/__meta", handle_meta)])
    return app


async def start_meta_server(app: web.Application, host: str, port: int) -> web.AppRunner:
    runner = web.AppRunner(app)
    await runner.setup()
    site = web.TCPSite(runner, host, port)
    await site.start()
    return runner
