aboutsummaryrefslogtreecommitdiff
path: root/src/Main.hs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-07-24 22:34:04 +0200
committermetamuffin <metamuffin@disroot.org>2023-07-24 22:34:04 +0200
commit99e23a8fc293d496dec270c556068698f4accb7f (patch)
tree6b18e909c947c113c6776ae20d72d0b2984ddf35 /src/Main.hs
parent1f639b98e07bcb4f7901e678e670894fbc370d8f (diff)
parentcf1d61b67ccd8336dce87b076379a787ba231102 (diff)
downloadfastbangs-99e23a8fc293d496dec270c556068698f4accb7f.tar
fastbangs-99e23a8fc293d496dec270c556068698f4accb7f.tar.bz2
fastbangs-99e23a8fc293d496dec270c556068698f4accb7f.tar.zst
Merge branch 'main' of codeberg.org:lialenck/bangs-ddgless
Diffstat (limited to 'src/Main.hs')
-rw-r--r--src/Main.hs16
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