add cache rules to haskell, alphabetize soem types, remove Cookies type
This commit is contained in:
parent
9ec9c55912
commit
870d8ec257
7 changed files with 209 additions and 239 deletions
|
@ -32,7 +32,6 @@ index compiledElmApp = renderHtml $ do
|
|||
port :: Port
|
||||
port = 8080
|
||||
|
||||
|
||||
adminContact :: String
|
||||
adminContact = "[Matrix] @mtgmonkey:calitabby.net"
|
||||
|
||||
|
@ -69,18 +68,20 @@ main = do
|
|||
|
||||
-- GET requests
|
||||
get "/" $ do
|
||||
shortCache
|
||||
status ok200
|
||||
S.html $ index $ do
|
||||
compiledElmApp
|
||||
"\n"
|
||||
boilerplateJs
|
||||
|
||||
get "/favicon.ico/" $ do
|
||||
shortCache
|
||||
status notFound404
|
||||
S.html $ "you want a favi-<i>what</i>now!?"
|
||||
|
||||
-- ERR
|
||||
notFound $ do
|
||||
noCache
|
||||
status methodNotAllowed405
|
||||
S.text "Verb disallowed; OR, route doesn't exist :("
|
||||
|
||||
|
@ -93,6 +94,12 @@ serverErrorReadFile e = H.toHtml $ "document.getElementById('body').innerHTML='S
|
|||
++ adminContact
|
||||
++ "';"
|
||||
|
||||
shortCache :: ActionM ()
|
||||
shortCache = addHeader "Cache-Control" "private, must-understand, stale-if-error=43200, max-age=43200"
|
||||
|
||||
noCache :: ActionM ()
|
||||
noCache = addHeader "Cache-Control" "no-cache"
|
||||
|
||||
embedJs :: Js -> H.Html
|
||||
embedJs js = H.script $ js
|
||||
|
||||
|
|
|
@ -10,39 +10,27 @@ import Data.Aeson (ToJSON (..), FromJSON (..))
|
|||
import Elm
|
||||
import GHC.Generics
|
||||
|
||||
data Font = Font
|
||||
{ fontFontSize :: Float
|
||||
} deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet Font
|
||||
|
||||
data Cookies = Cookies
|
||||
{ cookiesCookiesKept :: CookiesKept
|
||||
, cookiesFont :: Font
|
||||
, cookiesPrompt :: Prompt
|
||||
, cookiesTheme :: Theme
|
||||
} deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet Cookies
|
||||
|
||||
data Theme
|
||||
= Pit
|
||||
| Dim
|
||||
| Sky
|
||||
| Sun
|
||||
data Command
|
||||
= ClearCommand
|
||||
| ColorsCommand
|
||||
| CookiesCommand
|
||||
| DebugCommand
|
||||
| FontCommand
|
||||
| HelloCommand
|
||||
| HelpCommand
|
||||
| PromptCommand
|
||||
| ThemeCommand
|
||||
| TodoCommand
|
||||
deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet Theme
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet Command
|
||||
|
||||
data CookiesKept = CookiesKept
|
||||
{ cookiesKeptKeepTheme :: Bool
|
||||
, cookiesKeptKeepFont :: Bool
|
||||
{ cookiesKeptKeepFont :: Bool
|
||||
, cookiesKeptKeepPrompt :: Bool
|
||||
, cookiesKeptKeepTheme :: Bool
|
||||
} deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet CookiesKept
|
||||
|
||||
data Prompt = Prompt
|
||||
{ promptPrompt :: String
|
||||
} deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet Prompt
|
||||
|
||||
data CoreColor
|
||||
= Red
|
||||
| Green
|
||||
|
@ -59,6 +47,31 @@ data CoreColor
|
|||
deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet CoreColor
|
||||
|
||||
data Font = Font
|
||||
{ fontFontSize :: Float
|
||||
} deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet Font
|
||||
|
||||
data Input = Input
|
||||
{ inputCommand :: Command
|
||||
, inputArgs :: [String]
|
||||
}
|
||||
deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet Input
|
||||
|
||||
data Prompt = Prompt
|
||||
{ promptPrompt :: String
|
||||
} deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet Prompt
|
||||
|
||||
data Theme
|
||||
= Pit
|
||||
| Dim
|
||||
| Sky
|
||||
| Sun
|
||||
deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet Theme
|
||||
|
||||
data ThemeColor
|
||||
= Background
|
||||
| Foreground
|
||||
|
@ -70,37 +83,15 @@ data ThemeColor
|
|||
deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet ThemeColor
|
||||
|
||||
data Command
|
||||
= ClearCommand
|
||||
| ColorsCommand
|
||||
| CookiesCommand
|
||||
| DebugCommand
|
||||
| FontCommand
|
||||
| HelloCommand
|
||||
| HelpCommand
|
||||
| PromptCommand
|
||||
| ThemeCommand
|
||||
| TodoCommand
|
||||
deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet Command
|
||||
|
||||
data Input = Input
|
||||
{ inputCommand :: Command
|
||||
, inputArgs :: [String]
|
||||
}
|
||||
deriving (Generic)
|
||||
deriving (Elm, ToJSON, FromJSON) via ElmStreet Input
|
||||
|
||||
type Types =
|
||||
'[Font
|
||||
, Cookies
|
||||
, Theme
|
||||
'[Command
|
||||
, CookiesKept
|
||||
, Prompt
|
||||
, CoreColor
|
||||
, ThemeColor
|
||||
, Command
|
||||
, Font
|
||||
, Input
|
||||
, Prompt
|
||||
, Theme
|
||||
, ThemeColor
|
||||
]
|
||||
|
||||
generateElmskellTypes :: IO ()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue