packages feed

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"
                                    ])