40 lines
944 B
Haskell
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
|
|
|