136 lines
3.4 KiB
Haskell
136 lines
3.4 KiB
Haskell
{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
|
|
{-# LANGUAGE DataKinds #-}
|
|
{-# LANGUAGE FlexibleContexts #-}
|
|
{-# LANGUAGE FlexibleInstances #-}
|
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
|
{-# LANGUAGE ScopedTypeVariables #-}
|
|
{-# LANGUAGE TypeFamilies #-}
|
|
{-# LANGUAGE TypeOperators #-}
|
|
{-# LANGUAGE UndecidableInstances #-}
|
|
{-# LANGUAGE PackageImports #-}
|
|
module Client where
|
|
|
|
import Servant
|
|
import Servant.Client
|
|
import Servant.Client.Core.Auth
|
|
import Servant.Client.Core.Request
|
|
|
|
-- imports from mateamt
|
|
|
|
import qualified "mateamt" API as MA
|
|
import qualified "mateamt" Types as MT
|
|
|
|
-- internal imports
|
|
|
|
mateApi :: Proxy MA.MateAPI
|
|
mateApi = Proxy
|
|
|
|
authGet :: MT.TicketRequest -> ClientM MT.AuthInfo
|
|
authSend :: MT.AuthRequest -> ClientM MT.AuthResult
|
|
authLogout :: AuthenticatedRequest (AuthProtect "header-auth") -> ClientM ()
|
|
authManageList
|
|
:: AuthenticatedRequest (AuthProtect "header-auth")
|
|
-> ClientM [MT.AuthOverview]
|
|
authManageNewAuth
|
|
:: AuthenticatedRequest (AuthProtect "header-auth")
|
|
-> MT.AuthSubmit
|
|
-> ClientM Int
|
|
authManageDeleteAuth
|
|
:: AuthenticatedRequest (AuthProtect "header-auth")
|
|
-> Int
|
|
-> ClientM ()
|
|
userNew :: MT.UserSubmit -> ClientM Int
|
|
userGet
|
|
:: AuthenticatedRequest (AuthProtect "header-auth")
|
|
-> ClientM MT.UserDetails
|
|
userUpdate
|
|
:: AuthenticatedRequest (AuthProtect "header-auth")
|
|
-> MT.UserDetailsSubmit
|
|
-> ClientM ()
|
|
userList :: Maybe MT.UserRefine -> ClientM [MT.UserSummary]
|
|
userRecharge
|
|
:: AuthenticatedRequest (AuthProtect "header-auth")
|
|
-> MT.UserRecharge
|
|
-> ClientM ()
|
|
userTransfer
|
|
:: AuthenticatedRequest (AuthProtect "header-auth")
|
|
-> MT.UserTransfer
|
|
-> ClientM ()
|
|
productNew
|
|
:: AuthenticatedRequest (AuthProtect "header-auth")
|
|
-> MT.ProductSubmit
|
|
-> ClientM Int
|
|
productOverview :: Int -> ClientM MT.ProductOverview
|
|
productStockRefill
|
|
:: AuthenticatedRequest (AuthProtect "header-auth")
|
|
-> [MT.AmountRefill]
|
|
-> ClientM ()
|
|
productStockUpdate
|
|
:: AuthenticatedRequest (AuthProtect "header-auth")
|
|
-> [MT.AmountUpdate]
|
|
-> ClientM ()
|
|
productList :: Maybe MT.ProductRefine -> ClientM [MT.ProductOverview]
|
|
productShortList :: Maybe MT.ProductRefine -> ClientM [MT.ProductShortOverview]
|
|
buy
|
|
:: AuthenticatedRequest (AuthProtect "header-auth")
|
|
-> [MT.PurchaseDetail]
|
|
-> ClientM MT.PurchaseResult
|
|
journalShow
|
|
:: AuthenticatedRequest (AuthProtect "header-auth")
|
|
-> Maybe Int
|
|
-> Maybe Int
|
|
-> ClientM [MT.JournalEntry]
|
|
avatarGet
|
|
:: Int
|
|
-> (Servant.Client.Core.Request.Request
|
|
-> Servant.Client.Core.Request.Request)
|
|
-> ClientM Response
|
|
avatarInsert
|
|
:: AuthenticatedRequest (AuthProtect "header-auth")
|
|
-> MT.AvatarData
|
|
-> ClientM Int
|
|
avatarUpdate
|
|
:: AuthenticatedRequest (AuthProtect "header-auth")
|
|
-> Int
|
|
-> MT.AvatarData
|
|
-> ClientM ()
|
|
avatarList :: ClientM [MT.Avatar]
|
|
|
|
( authGet :<|>
|
|
authSend :<|>
|
|
authLogout :<|>
|
|
|
|
authManageList :<|>
|
|
authManageNewAuth :<|>
|
|
authManageDeleteAuth :<|>
|
|
|
|
userNew :<|>
|
|
userGet :<|>
|
|
userUpdate :<|>
|
|
userList :<|>
|
|
userRecharge :<|>
|
|
userTransfer :<|>
|
|
|
|
productNew :<|>
|
|
productOverview :<|>
|
|
productStockRefill :<|>
|
|
productStockUpdate :<|>
|
|
productList :<|>
|
|
productShortList :<|>
|
|
|
|
buy :<|>
|
|
|
|
journalShow :<|>
|
|
journalPostCashCheck :<|>
|
|
|
|
avatarGet :<|>
|
|
avatarInsert :<|>
|
|
avatarUpdate :<|>
|
|
avatarList
|
|
) = client mateApi
|
|
|
|
getClients clientEnv = hoistClient
|
|
mateApi
|
|
( fmap (either (error . show) id)
|
|
. (`runClientM` mkClientEnv clientEnv (BaseUrl Http "localhost" 8000 "/")))
|
|
(client mateApi)
|