{-# LANGUAGE QuasiQuotes #-} import Criterion.Main import Auth.Biscuit import Data.Maybe (fromJust) buildToken :: SecretKey -> IO (Biscuit Open Verified) buildToken sk = do mkBiscuit sk [block|user_id("user_1234");|] -- Our benchmark harness. main = do sk <- newSecret biscuit <- buildToken sk let pk = toPublic sk let biscuitBs = serialize biscuit defaultMain [ bgroup "biscuit" [ bench "mkBiscuit" $ whnfIO (buildToken sk) , bench "parse" $ whnf (parse pk) biscuitBs , bench "serialize" $ whnf serialize biscuit , bench "verify" $ whnfIO (authorizeBiscuit biscuit [authorizer|allow if user_id("user_1234");|]) ] ]