{-# LANGUAGE OverloadedStrings #-} module Database.Bolt.Protocol.Ver1 ( init , exec , AuthToken(..) , open ) where import Prelude hiding (init) import Control.Monad import Database.Bolt.Exception import Database.Bolt.Protocol.Ver1.Message (AuthToken(..)) import Database.Bolt.Protocol.Ver1.Request (init, exec) import Database.Bolt.Protocol.Ver1.Types import Database.Bolt.Transport useragent :: UserAgent useragent = "haskell-bolt/0.0" open :: Transport t => (a -> IO t) -> a -> AuthToken -> IO t open c a auth = do conn <- c a agreed <- handshake conn (OfferProtocols 1 noProto noProto noProto) unless (agreed == 1) $ protocolErr "Can't negotiate protocol version" init conn useragent auth return conn