Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- newtype PrivateData = PrivateData { ssshhh :: Text }
- deriving (Eq, Show, Generic)
- newtype PublicData = PublicData { somedata :: Text }
- deriving (Eq, Show, Generic)
- instance ToJSON PrivateData
- instance ToJSON PublicData
- type PublicAPI = Get '[JSON] [PublicData]
- type PrivateAPI = Get '[JSON] PrivateData
- type BasicAPI = "public" :> PublicAPI
- :<|> "private" :> BasicAuth "foo-realm" Text :> PrivateAPI
- authCheck :: BasicAuthCheck Text
- authCheck =
- let check (BasicAuthData username password) =
- if username == "bob" && password == "secret"
- then return (Authorized "You're in!")
- else return Unauthorized
- in BasicAuthCheck check
- basicAuthApi :: Proxy BasicAPI
- basicAuthApi = Proxy
- basicAuthServerContext :: Context (BasicAuthCheck Text ': '[])
- basicAuthServerContext = authCheck :. EmptyContext
- basicAuthServer :: ServerT BasicAPI App
- basicAuthServer =
- let publicApi = return [PublicData "lol", PublicData "bro"]
- privateApi (res :: Text) = return (PrivateData res)
- in publicApi :<|> privateApi
- app :: Config -> Application
- app config =
- serveWithContext
- basicAuthApi
- basicAuthServerContext
- (hoistServerWithContext
- basicAuthApi
- (Proxy :: Proxy (BasicAuthCheck Text ': '[]))
- (convertApp config)
- basicAuthServer
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement