summaryrefslogtreecommitdiff
path: root/fig-web/src/Fig/Web/Module/TCG.hs
blob: 0636ad7caf9567bd0a4dc0a0f7a771430f93e8e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
module Fig.Web.Module.TCG
  ( public
  ) where

import Fig.Prelude

import qualified Data.Text as Text

import Fig.Web.Utils
import Fig.Web.Types
import qualified Fig.Web.DB as DB

public :: PublicModule
public a = do
  onGet "/api/tcg/card/:uuid.png" do
    uuidpng <- pathParam "uuid.png"
    case Text.stripSuffix ".png" uuidpng of
      Nothing -> do
        status status400
        respondText "malformed card path"
      Just uuid -> DB.hget a.db "tcg:cards" (encodeUtf8 uuid) >>= \case
        Nothing -> do
          status status404
          respondText "card does not exist"
        Just image -> do
          addHeader "Content-Type" "image/png"
          respondBytes image
  onGet "/api/tcg/binder/:userid" do
    userid <- pathParam "userid"
    cards <- DB.lrange a.db ("tcg-inventory:" <> userid) 0 (-1)
    respondHTML do
      head_ do
        title_ "LCOLONQ: The Game"
      body_ do
        forM_ cards $ \c -> do
          img_ [src_ $ mconcat ["/api/tcg/card/", decodeUtf8 c, ".png"]]