54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
import { getHeader } from 'h3'
|
|
import { useRuntimeConfig, useRequestEvent } from 'nuxt/app'
|
|
|
|
export const useGetGameAlias = () => {
|
|
const config = useRuntimeConfig()
|
|
const baseDomain = (config.public.baseDomain || '.onstove.com') as string
|
|
|
|
// 서버 사이드에서 실행되는 경우
|
|
if (!import.meta.client) {
|
|
try {
|
|
const event = useRequestEvent()
|
|
|
|
if (event) {
|
|
// 미들웨어에서 설정한 gameAlias가 있다면 우선 사용
|
|
if (event.context.gameAlias) {
|
|
return event.context.gameAlias
|
|
}
|
|
|
|
const host = getHeader(event, 'host') || ''
|
|
const isGameAliasExtractable = host.includes(baseDomain)
|
|
|
|
if (isGameAliasExtractable) {
|
|
const subdomain = host.split('.')[0]
|
|
|
|
if (subdomain && subdomain !== 'www') {
|
|
return subdomain
|
|
}
|
|
}
|
|
}
|
|
} catch (error) {
|
|
console.error('useGetGameAlias server error: ', error)
|
|
}
|
|
}
|
|
|
|
// 클라이언트 사이드에서 실행되는 경우
|
|
if (import.meta.client) {
|
|
try {
|
|
const host = window.location.host
|
|
const isGameAliasExtractable = host.includes(baseDomain)
|
|
|
|
if (isGameAliasExtractable) {
|
|
const subdomain = host.split('.')[0]
|
|
|
|
if (subdomain && subdomain !== 'www') {
|
|
return subdomain
|
|
}
|
|
}
|
|
} catch (error) {
|
|
console.error('useGetGameAlias client error: ', error)
|
|
}
|
|
}
|
|
return ''
|
|
}
|