module Yu.Core.View.Query
(
queryVersion
, queryVersionAuthor
, queryVersionUtils
, queryVersionCore
,
queryName
,
queryBuildInfo
,
queryServerTime
,
queryNav
,
queryIndex
,
queryQuery
) where
import Data.Time
import Yesod.Core
import Yu.Auth.Info
import Yu.Core.Info
import Yu.Core.Model.Internal (Nav, ResT)
import Yu.Core.View.Internal
import Yu.Core.View.Query.Parsec
import Yu.Import
import Yu.Import.Aeson
import Yu.Import.Text (Text)
import qualified Yu.Import.Text as T
import Yu.Utils.Info
queryVersion :: Hamletic a (HandlerT a IO)
=> HandlerT a IO TypedContent
queryVersion = getVersion >>= respondSource "text/plain" . sendChunkText
queryVersionAuthor :: HandlerT a IO TypedContent
queryVersionAuthor = respondSource "text/plain" $ sendChunkText $yuAuthVersionQuote
queryVersionUtils :: HandlerT a IO TypedContent
queryVersionUtils = respondSource "text/plain" $ sendChunkText $yuUtilsVersionQuote
queryVersionCore :: HandlerT a IO TypedContent
queryVersionCore = respondSource "text/plain" $ sendChunkText $yuCoreVersionQuote
queryName :: HandlerT a IO TypedContent
queryName = respondSource "text/plain" $ sendChunkText "Yu"
queryBuildInfo :: HandlerT a IO TypedContent
queryBuildInfo = respondSource "text/plain" $ sendChunkText $yuBuildInfoQuote
queryServerTime :: HandlerT a IO TypedContent
queryServerTime = T.show <$> (liftIO getCurrentTime) >>= respondSource "text/plain" . sendChunkText
queryNav :: [Nav]
-> HandlerT a IO TypedContent
queryNav = respondSource "application/json" . sendChunkLBS . encode
queryIndex :: String
-> [ResT]
-> HandlerT a IO TypedContent
queryIndex t = respondSource "application/json" . sendChunkLBS . encode . (run $ runQp t)
where run (Left e) = error $ show e
run (Right i) = i
queryQuery :: Text
-> HandlerT a IO TypedContent
queryQuery t = respondSource "text/plain" $ do
sendChunkText t
sendFlush