module Test.TestAPIImpl where
import GHC.Generics
import qualified Data.Text as T
import Data.Aeson
import Network.YAML
data User = User {fullName :: T.Text, login :: T.Text}
deriving (Eq, Show)
deriving instance Generic User
instance FromJSON User
instance ToJSON User
data Something = Something {smthText :: T.Text, smthList :: [T.Text]}
deriving (Eq, Show, Generic)
instance FromJSON Something
instance ToJSON Something
sayHello :: User -> IO T.Text
sayHello user = return $ "Hello, " `T.append` fullName user `T.append` "!"
testSmth :: T.Text -> Something -> IO User
testSmth t s = return $ User {login = t `T.append` smthText s, fullName = T.intercalate " " (smthList s)}
api :: API
api = $(makeAPI "http://home.iportnov.ru/test.api" [''User, ''Something] ['sayHello, 'testSmth])
$(writeAPI "test.api" "http://home.iportnov.ru/test.api" [''User, ''Something] ['sayHello, 'testSmth])