packages feed

heroku 0.1.2.2 → 0.1.2.3

raw patch · 4 files changed

+58/−7 lines, 4 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ Web.Heroku.RabbitMQ: AmqpSettings :: !String -> !Text -> !Text -> !Text -> !Int -> AmqpSettings
+ Web.Heroku.RabbitMQ: amqpConnSettings :: IO AmqpSettings
+ Web.Heroku.RabbitMQ: amqpHostName :: AmqpSettings -> !String
+ Web.Heroku.RabbitMQ: amqpPass :: AmqpSettings -> !Text
+ Web.Heroku.RabbitMQ: amqpPort :: AmqpSettings -> !Int
+ Web.Heroku.RabbitMQ: amqpUser :: AmqpSettings -> !Text
+ Web.Heroku.RabbitMQ: amqpVirtualHost :: AmqpSettings -> !Text
+ Web.Heroku.RabbitMQ: data AmqpSettings
+ Web.Heroku.RabbitMQ: instance Eq AmqpSettings
+ Web.Heroku.RabbitMQ: instance Show AmqpSettings
+ Web.Heroku.RabbitMQ: parseAmqpUrl :: String -> AmqpSettings

Files

Web/Heroku.hs view
@@ -3,8 +3,4 @@   , parseDatabaseUrl   ) where -import System.Environment-import Network.URI-import Data.Text-import Prelude import Web.Heroku.Postgres (dbConnParams, parseDatabaseUrl)
+ Web/Heroku/RabbitMQ.hs view
@@ -0,0 +1,42 @@+module Web.Heroku.RabbitMQ +  ( AmqpSettings(..)+  , amqpConnSettings+  , parseAmqpUrl+  ) where++import Control.Monad+import Data.Text ( Text, pack )+import System.Environment++data AmqpSettings = AmqpSettings+    { amqpHostName    :: !String+    , amqpVirtualHost :: !Text+    , amqpUser        :: !Text+    , amqpPass        :: !Text+    , amqpPort        :: !Int +    } deriving (Show, Eq)++amqpConnSettings :: IO AmqpSettings+amqpConnSettings = liftM parseAmqpUrl (getEnv "RABBITMQ_BIGWIG_URL")++parseAmqpUrl :: String -> AmqpSettings+parseAmqpUrl = parse . pieces "" [] . trimProtocol+  where+    parse :: [String] -> AmqpSettings+    parse [ user+          , pass+          , host+          , port+          , vhst +          ] = AmqpSettings host (pack vhst) (pack user) (pack pass) (read port)+    parse _ = error "Unexpected environment variable format."++    trimProtocol :: String -> String+    trimProtocol ('a':'m':'q':'p':':':'/':'/':rest) = rest+    trimProtocol str = str++    pieces acc ys [] = reverse (reverse acc:ys)+    pieces acc ys (x:xs) +        | x `elem` "@:/" = pieces "" (reverse acc:ys) xs +        | otherwise = pieces (x:acc) ys xs +
heroku.cabal view
@@ -1,5 +1,5 @@ Name:                heroku-Version:             0.1.2.2+Version:             0.1.2.3 Synopsis:            helpers for deploying to Heroku Description:         currently just a parser for DATABASE_URL Homepage:            https://github.com/gregwebs/haskell-heroku@@ -17,6 +17,7 @@   Exposed-modules: Web.Heroku                  , Web.Heroku.Postgres                  , Web.Heroku.MongoDB+                 , Web.Heroku.RabbitMQ    Other-modules: Web.Heroku.Internal   
test.hs view
@@ -1,11 +1,12 @@ {-# LANGUAGE OverloadedStrings #-} module Main where -import Web.Heroku import Test.Hspec+import Web.Heroku+import Web.Heroku.RabbitMQ  main :: IO ()-main = hspec $+main = hspec $ do   describe "parseDatabaseUrl" $     it "extracts individual items" $       parseDatabaseUrl "postgres://db:pass@ec2-1-1-1-1.compute-1.amazonaws.com:1234/db" `shouldBe`@@ -15,3 +16,14 @@         , ("port","1234")         , ("dbname","db")         ]+  describe "parseAmqpUrl" $+    it "extracts amqp connection settings" $+      parseAmqpUrl "amqp://ebA3ec8f:54EnktG1MgGvwPftC4y7BfZIQTYqrtvD@massive-scale-12.bigwig.lshift.net:10210/Uao4j39t8qD_" `shouldBe`+        AmqpSettings+            { amqpHostName    = "massive-scale-12.bigwig.lshift.net"+            , amqpVirtualHost = "Uao4j39t8qD_"+            , amqpUser        = "ebA3ec8f"+            , amqpPass        = "54EnktG1MgGvwPftC4y7BfZIQTYqrtvD"+            , amqpPort        = 10210+            }+