feat: APIHelper에서 recovery 반환 타입 경로 추가
This commit is contained in:
+57
-18
@@ -2,13 +2,45 @@
|
|||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
|
use sammo\Enums\APIRecoveryType;
|
||||||
|
|
||||||
class APIHelper
|
class APIHelper
|
||||||
{
|
{
|
||||||
|
|
||||||
private function __construct()
|
private function __construct()
|
||||||
{
|
{
|
||||||
//static only
|
//static only
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getSession(int $sessionMode): Session | APIRecoveryType
|
||||||
|
{
|
||||||
|
if ($sessionMode === BaseAPI::NO_SESSION) {
|
||||||
|
return DummySession::getInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
$session = Session::getInstance();
|
||||||
|
if($sessionMode & BaseAPI::REQ_LOGIN || $sessionMode & BaseAPI::REQ_GAME_LOGIN){
|
||||||
|
if(!$session->isLoggedIn()){
|
||||||
|
return APIRecoveryType::Login;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($sessionMode & BaseAPI::REQ_GAME_LOGIN){
|
||||||
|
if(!$session->isGameLoggedIn()){
|
||||||
|
$tmpResult = false;
|
||||||
|
$session->loginGame($tmpResult);
|
||||||
|
if(!$tmpResult){
|
||||||
|
return APIRecoveryType::Gateway;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($sessionMode & BaseAPI::REQ_READ_ONLY) {
|
||||||
|
$session->setReadOnly();
|
||||||
|
}
|
||||||
|
return $session;
|
||||||
|
}
|
||||||
|
|
||||||
public static function launch(string $rootPath, string $actionPath, array $eParams = [], bool $loadRawInput = true)
|
public static function launch(string $rootPath, string $actionPath, array $eParams = [], bool $loadRawInput = true)
|
||||||
{
|
{
|
||||||
if ($loadRawInput) {
|
if ($loadRawInput) {
|
||||||
@@ -19,8 +51,7 @@ class APIHelper
|
|||||||
Json::dieWithReason($e->getMessage());
|
Json::dieWithReason($e->getMessage());
|
||||||
$input = null;
|
$input = null;
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$input = null;
|
$input = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,8 +68,7 @@ class APIHelper
|
|||||||
if (class_exists('\\sammo\\UniqueConst')) {
|
if (class_exists('\\sammo\\UniqueConst')) {
|
||||||
$serverID = UniqueConst::$serverID;
|
$serverID = UniqueConst::$serverID;
|
||||||
$logPath = "{$rootPath}/logs/{$serverID}/api_log.db";
|
$logPath = "{$rootPath}/logs/{$serverID}/api_log.db";
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$realYearMonth = date('Y_m');
|
$realYearMonth = date('Y_m');
|
||||||
$logPath = "{$rootPath}/d_log/{$realYearMonth}_api_log.db";
|
$logPath = "{$rootPath}/d_log/{$realYearMonth}_api_log.db";
|
||||||
}
|
}
|
||||||
@@ -75,21 +105,13 @@ class APIHelper
|
|||||||
$filteredArgs = $obj->getFilteredArgs();
|
$filteredArgs = $obj->getFilteredArgs();
|
||||||
|
|
||||||
$sessionMode = $obj->getRequiredSessionMode();
|
$sessionMode = $obj->getRequiredSessionMode();
|
||||||
if ($sessionMode === BaseAPI::NO_SESSION) {
|
$sessionOrFail = static::getSession($sessionMode);
|
||||||
$session = DummySession::getInstance();
|
|
||||||
} else {
|
|
||||||
if ($sessionMode & BaseAPI::REQ_GAME_LOGIN) {
|
|
||||||
$session = Session::requireGameLogin(null);
|
|
||||||
} else if ($sessionMode & BaseAPI::REQ_LOGIN) {
|
|
||||||
$session = Session::requireLogin(null);
|
|
||||||
} else {
|
|
||||||
$session = Session::getInstance();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($sessionMode & BaseAPI::REQ_READ_ONLY) {
|
if(!($sessionOrFail instanceof Session)){
|
||||||
$session->setReadOnly();
|
$recoveryType = $sessionOrFail;
|
||||||
}
|
Json::dieWithReason($recoveryType->info(), $recoveryType);
|
||||||
}
|
}
|
||||||
|
$session = $sessionOrFail;
|
||||||
|
|
||||||
$modifiedSince = WebUtil::parseLastModified();
|
$modifiedSince = WebUtil::parseLastModified();
|
||||||
$reqEtags = WebUtil::parseETag();
|
$reqEtags = WebUtil::parseETag();
|
||||||
@@ -105,11 +127,28 @@ class APIHelper
|
|||||||
'aux' => JSON::encode([
|
'aux' => JSON::encode([
|
||||||
'result' => false,
|
'result' => false,
|
||||||
'state' => 'launch',
|
'state' => 'launch',
|
||||||
'reason'=>$validateResult
|
'reason' => $result
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
Json::dieWithReason($result);
|
Json::dieWithReason($result);
|
||||||
}
|
}
|
||||||
|
else if($result instanceof APIRecoveryType){
|
||||||
|
$recoveryType = $result;
|
||||||
|
$logDB->insert('api_log', [
|
||||||
|
'user_id' => $session->userID ?? 0,
|
||||||
|
'ip' => $ip,
|
||||||
|
'date' => $date,
|
||||||
|
'path' => $actionPath,
|
||||||
|
'arg' => JSON::encode($filteredArgs),
|
||||||
|
'aux' => JSON::encode([
|
||||||
|
'result' => false,
|
||||||
|
'state' => 'launch',
|
||||||
|
'reason' => $recoveryType->info(),
|
||||||
|
'recovery' => $recoveryType->value,
|
||||||
|
]),
|
||||||
|
]);
|
||||||
|
Json::dieWithReason($recoveryType->info(), $recoveryType);
|
||||||
|
}
|
||||||
|
|
||||||
$cache = $obj->tryCache();
|
$cache = $obj->tryCache();
|
||||||
$setCache = false;
|
$setCache = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user