diff options
author | Lia Lenckowski <lialenck@protonmail.com> | 2023-07-24 21:50:32 +0200 |
---|---|---|
committer | Lia Lenckowski <lialenck@protonmail.com> | 2023-07-24 21:50:32 +0200 |
commit | cf1d61b67ccd8336dce87b076379a787ba231102 (patch) | |
tree | 787bde20a47b403aa4cdedb2d69fda8bcea04318 /src/Main.hs | |
parent | 5a1201ec1f47b393ce40437bf9b3a478538bac51 (diff) | |
download | fastbangs-cf1d61b67ccd8336dce87b076379a787ba231102.tar fastbangs-cf1d61b67ccd8336dce87b076379a787ba231102.tar.bz2 fastbangs-cf1d61b67ccd8336dce87b076379a787ba231102.tar.zst |
add search.xml
Diffstat (limited to 'src/Main.hs')
-rw-r--r-- | src/Main.hs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/Main.hs b/src/Main.hs index feb199b..54e6e20 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -6,11 +6,13 @@ module Main (main) where import Yesod import Network.Wai.Handler.Warp import Data.Function ((&)) +import Data.Functor ((<&>)) import qualified Data.ByteString as BS import Bangs import BangState +import Config data Search = Search { bangState :: BangState @@ -20,6 +22,7 @@ mkYesod "Search" [parseRoutes| / HomeR GET /bangs.json BangsR GET /submitBang SubmitR POST +/search.xml OpenSearchR GET |] instance Yesod Search where @@ -32,7 +35,7 @@ getBangsR :: Handler TypedContent getBangsR = do bangsAccessor <- lookupHeader "accept-encoding" >>= \case Just ae | "br" `BS.isInfixOf` ae -> do - addHeader "transfer-encoding" "br" + addHeader "content-encoding" "br" return getBangsBrotli _ -> do return getBangsJSON @@ -43,6 +46,17 @@ getBangsR = do postSubmitR :: Handler String postSubmitR = return "TODO" +getOpenSearchR :: Handler TypedContent +getOpenSearchR = do + url <- lookupGetParam "default" <&> \case + Nothing -> baseUrl <> "/#{searchTerms}" + Just b -> baseUrl <> "/#" <> b <> "#{searchTerms}" + + return + $ TypedContent "application/opensearchdescription+xml" + $ toContent + $ makeOpenSearch url + main :: IO () main = do s <- Search |