<?php
/** 仅供 PHP CLI 内置服务器的本地集成测试使用，不进入 public 目录。 */
if(PHP_SAPI!=='cli-server'){http_response_code(404);exit;}
$prefix=getenv('OMS_CHAT_TEST_PREFIX');
if(!is_string($prefix)||!preg_match('/^chat_test_[a-f0-9]{8}_$/',$prefix)){http_response_code(404);exit;}
require dirname(__DIR__).'/vendor/autoload.php';
$app=new \think\App(dirname(__DIR__).'/');$app->initialize();
$database=$app->config->get('database');$connection=$database['connections'][$database['default']];
if(!in_array($connection['hostname'],['127.0.0.1','localhost'],true)){http_response_code(404);exit;}
$connection['prefix']=$prefix;$database['connections']['chat_test']=$connection;$database['default']='chat_test';
$app->config->set($database,'database');\think\facade\Db::setConfig($app->config);
$app->config->set(['image_root'=>dirname(__DIR__).'/runtime/'.$prefix.'images'],'chat');
$action=basename(parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH));
if($action==='charsetProbe'){
    json(['code'=>0,'data'=>\think\facade\Db::query('SELECT @@character_set_client AS charset, DATABASE() AS db')[0]])->send();exit;
}
if(!in_array($action,['hall','rooms','room','messages','create','send','session','sessionV2','image','imageContent','mentionMembers'],true)){http_response_code(404);exit;}
try{$response=(new \app\mobile\controller\Chat($app))->$action();}
catch(\think\exception\HttpResponseException$error){$response=$error->getResponse();}
$response->send();
