oauth2-mock-server/src/Server.hs
David Mosbach 83a25504d7 init
2023-12-18 05:51:51 +01:00

40 lines
944 B
Haskell

{-# LANGUAGE DataKinds, TypeOperators, OverloadedStrings #-}
module Server
( insecureOAuthMock
) where
import User
import Control.Monad.IO.Class
import Data.Aeson
import Data.List
import Data.Maybe
import Data.Text hiding (find)
import Servant
import Servant.API
testUsers :: [User]
testUsers =
[ User {name = "TestName", email = "foo@bar.com", uID = "1"}]
type Query = "query" :> QueryParam "userID" Text :> Get '[JSON] (Maybe User)
type Insert = "insert" :> Post '[JSON] User
queryServer :: Server Query
queryServer = handleQuery
where
handleQuery :: Maybe Text -> Handler (Maybe User)
handleQuery Nothing = liftIO (putStrLn "no query param given") >> return Nothing
handleQuery (Just x) = liftIO (putStrLn $ "query param: " ++ show x) >> (return $ find (\u -> uID u == x) testUsers)
queryAPI :: Proxy Query
queryAPI = Proxy
insecureOAuthMock :: Application
insecureOAuthMock = queryAPI `serve` queryServer