feat. 데이터 구조 변경에 따른 수정
This commit is contained in:
69
layers/server/middleware/gameInfo.ts
Normal file
69
layers/server/middleware/gameInfo.ts
Normal file
@@ -0,0 +1,69 @@
|
||||
import {
|
||||
getHeader,
|
||||
getRequestHost,
|
||||
defineEventHandler,
|
||||
getRequestURL,
|
||||
} from "h3";
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const url = getRequestURL(event);
|
||||
|
||||
// 정적 자산, API, 파비콘 등은 제외하고 페이지 요청만 처리
|
||||
if (
|
||||
url.pathname.startsWith("/api/") ||
|
||||
url.pathname.startsWith("/_nuxt/") ||
|
||||
url.pathname.startsWith("/favicon") ||
|
||||
url.pathname.includes(".") ||
|
||||
url.pathname.startsWith("/_")
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
const host =
|
||||
(getHeader(event, "host") || getRequestHost(event)).toString() || "";
|
||||
const baseDomain = process.env.BASE_DOMAIN || ".onstove.com";
|
||||
const isGameAliasExtractable = host.includes(baseDomain);
|
||||
|
||||
if (isGameAliasExtractable) {
|
||||
const gameAlias = host.split(".")[0];
|
||||
|
||||
if (gameAlias && gameAlias !== "www") {
|
||||
event.context.gameAlias = gameAlias;
|
||||
}
|
||||
}
|
||||
|
||||
// gameData를 직접 가져와서 context에 저장 (API 호출 없이)
|
||||
try {
|
||||
const config = useRuntimeConfig();
|
||||
const stoveApiBaseUrl = config.public.stoveApiUrl;
|
||||
const apiUrl = `${stoveApiBaseUrl}/pub-comm/v1.0/template/game`;
|
||||
|
||||
// URL의 첫 번째 path를 lang_code로 사용 (파비콘, API 경로 제외)
|
||||
const url = getRequestURL(event);
|
||||
const pathSegments = url.pathname
|
||||
.split("/")
|
||||
.filter(
|
||||
(segment) =>
|
||||
segment &&
|
||||
!segment.includes("favicon") &&
|
||||
!segment.includes("api") &&
|
||||
!segment.startsWith("_")
|
||||
);
|
||||
const langCode = pathSegments[0] || "ko";
|
||||
|
||||
const queryParams: Record<string, string> = {
|
||||
game_alias: event.context.gameAlias || "",
|
||||
lang_code: langCode,
|
||||
};
|
||||
|
||||
const response = await $fetch(apiUrl, {
|
||||
query: queryParams,
|
||||
});
|
||||
|
||||
if (response?.code === 0 && "value" in response) {
|
||||
event.context.gameData = response.value;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("gameData load error:", error);
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user