helic-0.1.1.0: lib/Helic/Yank.hs
{-# options_haddock prune #-}
-- |Yank Logic, Internal
module Helic.Yank where
import qualified Data.Text.IO as Text
import Polysemy.Chronos.Time (ChronosTime)
import Polysemy.Http (Manager)
import Polysemy.Log (Log)
import Helic.Data.AgentId (AgentId (AgentId))
import qualified Helic.Data.Event as Event
import Helic.Data.InstanceName (InstanceName)
import qualified Helic.Data.NetConfig as NetConfig
import Helic.Data.NetConfig (NetConfig)
import Helic.Data.YankConfig (YankConfig (YankConfig))
import Helic.Net.Client (localhost, sendTo)
-- |Send an event to the server.
yank ::
Members [Reader InstanceName, Reader NetConfig, ChronosTime, Manager, Log, Race, Error Text, Embed IO] r =>
YankConfig ->
Sem r ()
yank (YankConfig agent) = do
text <- embed (Text.hGetContents stdin)
event <- Event.now (AgentId (fromMaybe "cli" agent)) text
host <- localhost
timeout <- asks NetConfig.timeout
sendTo timeout host event