diff options
author | William Carroll <wpcarro@gmail.com> | 2020-08-09T21·17+0100 |
---|---|---|
committer | William Carroll <wpcarro@gmail.com> | 2020-08-09T21·17+0100 |
commit | bbcd0bf27d2663a9673983ccf6e2cf7034ddf240 (patch) | |
tree | 18c6fa980ffce4a598e4889ea56510fd2f21495f /website/sandbox/learnpianochords/src/server/GoogleSignIn.hs | |
parent | 7d85ba559dd50e0552abccb45d1cf5766ebcb541 (diff) |
Replace Prelude with RIO
I believe RIO stands for: "ReaderT <something-something> IO", which is a nod to the top-level application data type: ```haskell -- This is a simplification newtype RIO env a = RIO { runRIO :: ReaderT env a () } ``` I read about RIO from an FP-Complete blog post a few months ago, and now I'm excited to try it out for a real project. Bon voyage!
Diffstat (limited to 'website/sandbox/learnpianochords/src/server/GoogleSignIn.hs')
-rw-r--r-- | website/sandbox/learnpianochords/src/server/GoogleSignIn.hs | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/website/sandbox/learnpianochords/src/server/GoogleSignIn.hs b/website/sandbox/learnpianochords/src/server/GoogleSignIn.hs index 0f48a9a1d36b..dcccadcb7022 100644 --- a/website/sandbox/learnpianochords/src/server/GoogleSignIn.hs +++ b/website/sandbox/learnpianochords/src/server/GoogleSignIn.hs @@ -1,8 +1,8 @@ -------------------------------------------------------------------------------- module GoogleSignIn where -------------------------------------------------------------------------------- +import RIO import Data.String.Conversions (cs) -import Data.Text import Web.JWT import Utils @@ -23,7 +23,7 @@ instance Eq DecodedJWT where data ValidationResult = Valid DecodedJWT - | DecodeError + | CannotDecodeJWT | GoogleSaysInvalid Text | NoMatchingClientIDs [StringOrURI] | WrongIssuer StringOrURI @@ -46,7 +46,7 @@ validateJWT :: Bool -> IO ValidationResult validateJWT skipHTTP (EncodedJWT encodedJWT) = do case encodedJWT |> decode of - Nothing -> pure DecodeError + Nothing -> pure CannotDecodeJWT Just jwt -> do if skipHTTP then continue jwt @@ -101,7 +101,7 @@ validateJWT skipHTTP (EncodedJWT encodedJWT) = do -- | Attempt to explain the `ValidationResult` to a human. explainResult :: ValidationResult -> String explainResult (Valid _) = "Everything appears to be valid" -explainResult DecodeError = "We had difficulty decoding the provided JWT" +explainResult CannotDecodeJWT = "We had difficulty decoding the provided JWT" explainResult (GoogleSaysInvalid x) = "After checking with Google, they claimed that the provided JWT was invalid: " ++ cs x explainResult (NoMatchingClientIDs audFields) = "None of the values in the `aud` field on the provided JWT match our client ID: " ++ show audFields explainResult (WrongIssuer issuer) = "The `iss` field in the provided JWT does not match what we expect: " ++ show issuer |