feat : 보스레이드 신청 메시지 응답 패킷 구현

This commit is contained in:
qornwh1
2026-03-16 19:19:59 +09:00
parent f6b378cad7
commit dd8dcc58d2
4 changed files with 52 additions and 12 deletions

View File

@@ -70,8 +70,8 @@ public class RestApi : Singleton<RestApi>
}
// 레이드 채널 접속 여부 체크
// 성공 시 sessionName 반환, 실패/거절 시 null 반환
public async Task<bool?> BossRaidAccesssAsync(List<string> userNames, int bossId)
// 성공 시 BossRaidResult 반환, 실패/거절 시 null 반환
public async Task<BossRaidResult?> BossRaidAccesssAsync(List<string> userNames, int bossId)
{
string url = AppConfig.RestApi.BaseUrl + "/api/internal/bossraid/entry";
@@ -85,20 +85,31 @@ public class RestApi : Singleton<RestApi>
if (response.StatusCode == HttpStatusCode.Unauthorized)
{
Log.Warning("[RestApi] 보스 레이드 접속 인증 실패 (401)");
return false;
return null;
}
// 400: 입장 조건 미충족 (레벨 부족, 이미 진행중 등)
if (response.StatusCode == HttpStatusCode.BadRequest)
{
Log.Warning("[RestApi] 보스 레이드 입장 거절 (400) BossId={BossId}", bossId);
return false;
return null;
}
response.EnsureSuccessStatusCode();
BossRaidAccessResponse? result = await response.Content.ReadFromJsonAsync<BossRaidAccessResponse>();
return result?.BossId > 0 ? true : false;
BossRaidAccessResponse? raw = await response.Content.ReadFromJsonAsync<BossRaidAccessResponse>();
if (raw == null) return null;
// API 응답 → 도메인 모델 매핑
return new BossRaidResult
{
RoomId = raw.RoomId,
SessionName = raw.SessionName ?? string.Empty,
BossId = raw.BossId,
Players = raw.Players,
Status = raw.Status ?? string.Empty,
Tokens = raw.Tokens
};
}
catch (Exception ex) when (attempt < MAX_RETRY)
{
@@ -111,7 +122,7 @@ public class RestApi : Singleton<RestApi>
}
}
return false;
return null;
}
private sealed class BossRaidAccessResponse
@@ -152,10 +163,10 @@ public class RestApi : Singleton<RestApi>
}
[JsonPropertyName("tokens")]
public Dictionary<string, string> Tokens
public string? Tokens
{
get;
set;
} = new();
}
}
}