musicbrainz-email-1.0.0.0: src/MusicBrainz/Messaging.hs
{-# LANGUAGE RecordWildCards #-}
module MusicBrainz.Messaging
( RabbitMQConnection(..)
, connect
, rabbitOptparse
) where
--------------------------------------------------------------------------------
import Control.Applicative ((<*>), (<$>))
import Data.Monoid (mconcat)
--------------------------------------------------------------------------------
import qualified Network.AMQP as AMQP
import qualified Options.Applicative as Optparse
--------------------------------------------------------------------------------
data RabbitMQConnection = RabbitMQConnection { rabbitHost :: String
, rabbitVHost :: String
, rabbitUser :: String
, rabbitPassword :: String
}
--------------------------------------------------------------------------------
connect :: RabbitMQConnection -> IO AMQP.Connection
connect RabbitMQConnection {..} =
AMQP.openConnection rabbitHost rabbitVHost rabbitUser rabbitPassword
--------------------------------------------------------------------------------
rabbitOptparse :: Optparse.Parser RabbitMQConnection
rabbitOptparse =
RabbitMQConnection
<$> Optparse.strOption (mconcat [ Optparse.long "rabbit-host"
, Optparse.value "127.0.0.1"
, Optparse.help "RabbitMQ host"
])
<*> Optparse.strOption (mconcat [ Optparse.long "rabbit-vhost"
, Optparse.value "/email"
, Optparse.help "RabbitMQ virtual host for email"
])
<*> Optparse.strOption (mconcat [ Optparse.long "rabbit-user"
, Optparse.value "guest"
, Optparse.help "RabbitMQ username"
])
<*> Optparse.strOption (mconcat [ Optparse.long "rabbit-password"
, Optparse.value "guest"
, Optparse.help "RabbitMQ username"
])