diff options
author | William Carroll <wpcarro@gmail.com> | 2020-08-06T21·21+0100 |
---|---|---|
committer | William Carroll <wpcarro@gmail.com> | 2020-08-06T21·23+0100 |
commit | a7ddb56b9bdca9773d6d0b71ffa128cd64c9485e (patch) | |
tree | 07e799b99b9f9a72e247e1133acf835aed641d3a /website/sandbox/learnpianochords/src/server/Main.hs | |
parent | 1fc1087014a235a4fd153ea239ec3e5509757c17 (diff) |
Support echo server to test POST /verify
TL;DR: - Add common dependencies like Servant, Aeson, Warp, Cors - Define a POST /verify endpoint for our client to hit - POST to /verify client-side onSignIn
Diffstat (limited to 'website/sandbox/learnpianochords/src/server/Main.hs')
-rw-r--r-- | website/sandbox/learnpianochords/src/server/Main.hs | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/website/sandbox/learnpianochords/src/server/Main.hs b/website/sandbox/learnpianochords/src/server/Main.hs index 5fca22a4567a..2d7120bd614c 100644 --- a/website/sandbox/learnpianochords/src/server/Main.hs +++ b/website/sandbox/learnpianochords/src/server/Main.hs @@ -1,6 +1,35 @@ +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE TypeApplications #-} +{-# LANGUAGE RecordWildCards #-} -------------------------------------------------------------------------------- module Main where -------------------------------------------------------------------------------- +import Servant +import API +import Control.Monad.IO.Class (liftIO) + +import qualified Network.Wai.Handler.Warp as Warp +import qualified Network.Wai.Middleware.Cors as Cors +import qualified Types as T +-------------------------------------------------------------------------------- + +server :: Server API +server = verifyGoogleSignIn + where + verifyGoogleSignIn :: T.VerifyGoogleSignInRequest -> Handler NoContent + verifyGoogleSignIn T.VerifyGoogleSignInRequest{..} = do + liftIO $ putStrLn $ "Received: " ++ idToken + pure NoContent main :: IO () -main = putStrLn "Working!" +main = do + Warp.run 3000 (enforceCors $ serve (Proxy @ API) $ server) + where + enforceCors = Cors.cors (const $ Just corsPolicy) + corsPolicy :: Cors.CorsResourcePolicy + corsPolicy = + Cors.simpleCorsResourcePolicy + { Cors.corsOrigins = Just (["http://localhost:8000"], True) + , Cors.corsMethods = Cors.simpleMethods ++ ["PUT", "PATCH", "DELETE", "OPTIONS"] + , Cors.corsRequestHeaders = Cors.simpleHeaders ++ ["Content-Type", "Authorization"] + } |