Skip to content

Commit

Permalink
Update: [Server][ChannelsRouter] チャンネルロゴ API に NID0-SID0 or gr000 が指定…
Browse files Browse the repository at this point in the history
…された場合のみ、決め打ちでデフォルトのロゴ画像を返す

タイミング次第ではリクエストが飛んでしまい、さらにリクエストに失敗すると一瞬見栄えが悪くなるため
  • Loading branch information
tsukumijima committed Nov 9, 2023
1 parent caeaf06 commit 68f7a49
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion server/app/routers/ChannelsRouter.py
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ async def ChannelAPI(
)
async def ChannelLogoAPI(
request: Request,
channel: Channel = Depends(GetChannel),
channel_id: str = Path(..., description='チャンネル ID (id or display_channel_id) 。ex: NID32736-SID1024, gr011')
):
"""
指定されたチャンネルに紐づくロゴを取得する。
Expand Down Expand Up @@ -463,6 +463,18 @@ def GetETag(logo_data: bytes) -> str:
## 1日キャッシュする
CACHE_CONTROL = 'public, no-transform, immutable, max-age=86400'

# ***** チャンネル情報を取得 *****

# チャンネル ID からチャンネル情報を取得する
# "NID0-SID0" "gr000" はフロントエンド側のチャンネル情報のデフォルト値になっているため、特別にデフォルトのロゴ画像を返す
# Depends だと GetChannel() が実行された時点で 422 エラーになるので、意図的に手動で GetChannel() を実行している
if channel_id == 'NID0-SID0' or channel_id == 'gr000':
return FileResponse(LOGO_DIR / 'default.png', headers={
'Cache-Control': CACHE_CONTROL,
'ETag': GetETag('default'.encode()),
})
channel = await GetChannel(channel_id)

# ***** 同梱のロゴを利用(存在する場合)*****

# 同梱されているロゴがあれば取得する (ない場合は None が返る)
Expand Down

0 comments on commit 68f7a49

Please sign in to comment.