chore(avs): add basic servant api for person search
This commit is contained in:
parent
0a68ea8591
commit
4818b8518e
@ -29,6 +29,8 @@ import Handler.Utils.AuthorshipStatement as Handler.Utils
|
|||||||
|
|
||||||
import Handler.Utils.Term as Handler.Utils
|
import Handler.Utils.Term as Handler.Utils
|
||||||
|
|
||||||
|
import Handler.Utils.Servant.AVS as Handler.Utils
|
||||||
|
|
||||||
import Control.Monad.Logger
|
import Control.Monad.Logger
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
72
src/Handler/Utils/Servant/AVS.hs
Normal file
72
src/Handler/Utils/Servant/AVS.hs
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
{-# OPTIONS_GHC -fno-warn-orphans #-}
|
||||||
|
{-# LANGUAGE DataKinds #-}
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
{-# LANGUAGE TypeOperators #-}
|
||||||
|
|
||||||
|
module Handler.Utils.Servant.AVS where
|
||||||
|
|
||||||
|
import Import
|
||||||
|
import Servant
|
||||||
|
import Servant.Client
|
||||||
|
import qualified Network.HTTP.Client as HTTP (newManager, defaultManagerSettings)
|
||||||
|
|
||||||
|
data AvsPersonQuery = AvsPersonQuery
|
||||||
|
{ avsPersonQueryCardNo :: Maybe String
|
||||||
|
, avsPersonQueryFirstName :: Maybe String
|
||||||
|
, avsPersonQueryLastName :: Maybe String
|
||||||
|
, avsPersonQueryInternalPersonalNo :: Maybe String
|
||||||
|
, avsPersonQueryVersionNo :: Maybe String
|
||||||
|
}
|
||||||
|
deriving (Eq, Ord, Read, Show, Generic, Typeable)
|
||||||
|
|
||||||
|
instance Default AvsPersonQuery where
|
||||||
|
def = AvsPersonQuery Nothing Nothing Nothing Nothing Nothing
|
||||||
|
|
||||||
|
deriveJSON defaultOptions
|
||||||
|
{ fieldLabelModifier = mconcat . drop 3 . splitCamel
|
||||||
|
, omitNothingFields = True
|
||||||
|
, tagSingleConstructors = True
|
||||||
|
} ''AvsPersonQuery
|
||||||
|
|
||||||
|
{-
|
||||||
|
data PersonResponse = Person {..TODO..}
|
||||||
|
data StatusResponse = StatusResponse
|
||||||
|
-}
|
||||||
|
|
||||||
|
-- data StatusQuery = StatusQuery
|
||||||
|
newtype AvsStatusQuery = AvsStatusQuery (Set UserMatriculation)
|
||||||
|
deriveJSON defaultOptions ''AvsStatusQuery
|
||||||
|
|
||||||
|
type AvsPersonResponse = Value
|
||||||
|
type AvsStatusResponse = Value
|
||||||
|
|
||||||
|
type AVS = BasicAuth "avs_fradrive" String :> "FraVSMService" :> "v1" :> "PersonSearch" :> ReqBody '[JSON] AvsPersonQuery :> Post '[JSON] AvsPersonResponse
|
||||||
|
-- :<|> ("PersonStatus" :> ReqBody '[JSON] AvsStatusQuery :> Post '[JSON] AvsStatusResponse))
|
||||||
|
|
||||||
|
avsApi :: Proxy AVS
|
||||||
|
avsApi = Proxy
|
||||||
|
|
||||||
|
|
||||||
|
avsPersonSearch :: BasicAuthData -> AvsPersonQuery -> ClientM AvsPersonResponse
|
||||||
|
-- avsPersonStatus :: BasicAuthData -> AvsStatusQuery -> ClientM AvsStatusResponse
|
||||||
|
--(avsPersonSearch :<|> avsPersonStatus) = client avsApi
|
||||||
|
avsPersonSearch = client avsApi
|
||||||
|
|
||||||
|
avsServer :: BaseUrl
|
||||||
|
avsServer = BaseUrl
|
||||||
|
{ baseUrlScheme = Https
|
||||||
|
, baseUrlHost = "skytest.fra.fraport.de"
|
||||||
|
, baseUrlPort = 80
|
||||||
|
, baseUrlPath = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
run :: IO ()
|
||||||
|
run = do
|
||||||
|
manager' <- HTTP.newManager HTTP.defaultManagerSettings
|
||||||
|
let query = avsPersonSearch (BasicAuthData "foo" "bar") $ def { avsPersonQueryFirstName = Just "Steffen" }
|
||||||
|
res <- runClientM query (mkClientEnv manager' avsServer)
|
||||||
|
case res of
|
||||||
|
Left err -> putStrLn $ "Error: " ++ tshow err
|
||||||
|
Right resp -> do
|
||||||
|
print resp
|
||||||
14
src/Utils.hs
14
src/Utils.hs
@ -388,6 +388,20 @@ stepTextCounter text
|
|||||||
fromText :: (IsString a, Textual t) => t -> a
|
fromText :: (IsString a, Textual t) => t -> a
|
||||||
fromText = fromString . unpack
|
fromText = fromString . unpack
|
||||||
|
|
||||||
|
{-
|
||||||
|
-- | Captialize the first character and leave all others as they were
|
||||||
|
textToCapital :: Text -> Text
|
||||||
|
textToCapital s
|
||||||
|
| Just (h,t) <- Text.uncons s
|
||||||
|
= Text.Cons (Char.toUpper h) t
|
||||||
|
| otherwise = s
|
||||||
|
|
||||||
|
snakecase2camelcase :: Text -> Text
|
||||||
|
snakecase2camelcase t = Text.concat $ map textToCapital words
|
||||||
|
where
|
||||||
|
words = Text.splitOn '_' t
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
-----------
|
-----------
|
||||||
-- Fixed --
|
-- Fixed --
|
||||||
|
|||||||
Reference in New Issue
Block a user