{-# 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