diff options
-rw-r--r-- | TODO | 1 | ||||
-rw-r--r-- | bangs-ddgless.cabal | 1 | ||||
-rw-r--r-- | package.yaml | 2 | ||||
-rw-r--r-- | src/BangState.hs | 10 |
4 files changed, 12 insertions, 2 deletions
@@ -0,0 +1 @@ +- testen, ob das brotli-ding im browser funktioniert (braucht vermutlich eine https proxy) diff --git a/bangs-ddgless.cabal b/bangs-ddgless.cabal index 1136542..ff5e79c 100644 --- a/bangs-ddgless.cabal +++ b/bangs-ddgless.cabal @@ -27,6 +27,7 @@ executable bangs-ddgless aeson , atomic-write , base >=4.7 && <5 + , brotli , bytestring , containers , ghc-prim diff --git a/package.yaml b/package.yaml index c9a6703..49cf0f7 100644 --- a/package.yaml +++ b/package.yaml @@ -22,6 +22,8 @@ dependencies: - ghc-prim - atomic-write - stm +- warp +- brotli ghc-options: - -Wall diff --git a/src/BangState.hs b/src/BangState.hs index 6175289..582deca 100644 --- a/src/BangState.hs +++ b/src/BangState.hs @@ -8,6 +8,7 @@ module BangState ( addBang, ) where +import Codec.Compression.Brotli (compress) import Control.Concurrent.STM.TChan import Control.Monad (forever) import Data.Aeson @@ -23,6 +24,7 @@ data BangState = BangState { ownBangs :: TVar Bangs, ddgBangs :: TVar Bangs, serializedBangs :: TVar ByteString, + brotliBangs :: TVar ByteString, syncFileNotifications :: TChan () } @@ -30,7 +32,10 @@ reserialize :: BangState -> STM () reserialize s = do own <- readTVar $ ownBangs s ddg <- readTVar $ ddgBangs s - writeTVar (serializedBangs s) $ toStrict $ encode $ own <> ddg -- left biased union + + let jsonBs = encode $ own <> ddg -- left biased union + writeTVar (serializedBangs s) $ toStrict $ jsonBs + writeTVar (brotliBangs s) $ toStrict $ compress jsonBs writeTChan (syncFileNotifications s) () -- spawns a thread for syncing the current state to disk. do *NOT* use forkIO on this @@ -61,6 +66,7 @@ initBangState = do <$> (loadOwnBangs >>= newTVarIO) <*> newTVarIO (toBangs $ getResponseBody ans) <*> newTVarIO empty -- initially filled in by 'spawnFileSyncThread' + <*> newTVarIO empty -- same as above <*> newBroadcastTChanIO spawnFileSyncThread s @@ -70,7 +76,7 @@ getBangsJSON :: BangState -> IO ByteString getBangsJSON s = readTVarIO $ serializedBangs s getBangsBrotli :: BangState -> IO ByteString -getBangsBrotli s = error "TODO" +getBangsBrotli s = readTVarIO $ brotliBangs s addBang :: Text -> Text -> BangState -> IO () addBang bang url s = error "TODO" |