skype4hs-0.0.0.0: src/Network/Skype/Command/Misc.hs
module Network.Skype.Command.Misc where
import Control.Monad.Error
import Control.Monad.Trans.Control
import Data.Monoid ((<>))
import Network.Skype.Command.Utils
import Network.Skype.Core
import qualified Data.ByteString as BS
import qualified Data.ByteString.Char8 as BC
import qualified Data.ByteString.Lazy as BL
authenticate :: (MonadBaseControl IO m, MonadIO m, MonadSkype m) => BS.ByteString -> SkypeT m ()
authenticate clientName = handleCommand command $ \response ->
case response of
"OK" -> return $ Just ()
"CONNSTATUS OFFLINE" -> throwError $ SkypeError 0 command "Skype is offline"
"ERROR 68" -> throwError $ SkypeError 0 command "Connection refused"
_ -> return Nothing
where
command = "NAME " <> clientName
protocol :: (MonadBaseControl IO m, MonadIO m, MonadSkype m) => Int -> SkypeT m ()
protocol version = handleCommand command $ \response ->
if BL.isPrefixOf "PROTOCOL " response
then return $ Just ()
else return Nothing
where
command = "PROTOCOL " <> BC.pack (show version)