{-# 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] metaGet :: ClientM MT.MetaInformation ( 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 :<|> metaGet ) = client mateApi getClients clientEnv = hoistClient mateApi ( fmap (either (error . show) id) . (`runClientM` mkClientEnv clientEnv (BaseUrl Http "localhost" 8000 "/"))) (client mateApi)