packages feed

pg-harness-client 0.3.0 → 0.3.1

raw patch · 3 files changed

+83/−83 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Data.PostgreSQL.Harness.Client: ConnectionInformation :: String -> String -> String -> String -> String -> ConnectionInformation
- Data.PostgreSQL.Harness.Client: ciDatabaseName :: ConnectionInformation -> String
- Data.PostgreSQL.Harness.Client: ciHost :: ConnectionInformation -> String
- Data.PostgreSQL.Harness.Client: ciPassword :: ConnectionInformation -> String
- Data.PostgreSQL.Harness.Client: ciPort :: ConnectionInformation -> String
- Data.PostgreSQL.Harness.Client: ciUser :: ConnectionInformation -> String
- Data.PostgreSQL.Harness.Client: createTemporaryDatabase :: String -> IO ConnectionInformation
- Data.PostgreSQL.Harness.Client: data ConnectionInformation
- Data.PostgreSQL.Harness.Client: toConnectionString :: ConnectionInformation -> ByteString
+ Database.PostgreSQL.Harness.Client: ConnectionInformation :: String -> String -> String -> String -> String -> ConnectionInformation
+ Database.PostgreSQL.Harness.Client: ciDatabaseName :: ConnectionInformation -> String
+ Database.PostgreSQL.Harness.Client: ciHost :: ConnectionInformation -> String
+ Database.PostgreSQL.Harness.Client: ciPassword :: ConnectionInformation -> String
+ Database.PostgreSQL.Harness.Client: ciPort :: ConnectionInformation -> String
+ Database.PostgreSQL.Harness.Client: ciUser :: ConnectionInformation -> String
+ Database.PostgreSQL.Harness.Client: createTemporaryDatabase :: String -> IO ConnectionInformation
+ Database.PostgreSQL.Harness.Client: data ConnectionInformation
+ Database.PostgreSQL.Harness.Client: toConnectionString :: ConnectionInformation -> ByteString

Files

pg-harness-client.cabal view
@@ -1,5 +1,5 @@ Name:                pg-harness-client-Version:             0.3.0+Version:             0.3.1 Synopsis:            Client library for pg-harness-server Description:   Client library for <https://hackage.haskell.org/package/pg-harness-server pg-harness-server>@@ -25,4 +25,4 @@   Default-language:   Haskell2010   Ghc-options:        -Wall   Hs-source-dirs:     src-  Exposed-modules:    Data.PostgreSQL.Harness.Client+  Exposed-modules:    Database.PostgreSQL.Harness.Client
− src/Data/PostgreSQL/Harness/Client.hs
@@ -1,81 +0,0 @@-{--    Copyright (c) 2015, Bardur Arantsson-    All rights reserved.--    Redistribution and use in source and binary forms, with or without-    modification, are permitted provided that the following conditions are-    met:--    1. Redistributions of source code must retain the above copyright-    notice, this list of conditions and the following disclaimer.--    2. Redistributions in binary form must reproduce the above copyright-    notice, this list of conditions and the following disclaimer in the-    documentation and/or other materials provided with the distribution.--    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS-    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT-    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR-    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT-    HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,-    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT-    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,-    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY-    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT-    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE-    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.--}-{-|--  Client library for <https://hackage.haskell.org/package/pg-harness-server pg-harness-server>.--  Use the 'createTemporaryDatabase' function to create databases.---}-module Data.PostgreSQL.Harness.Client-    ( ConnectionInformation(..)-    , createTemporaryDatabase-    , toConnectionString-    ) where--import           Data.ByteString (ByteString)-import qualified Data.ByteString.Char8 as B8-import           Network.HTTP (simpleHTTP, postRequest, getResponseBody)---- | Connection information to use for connecting to a database.-data ConnectionInformation = ConnectionInformation-    { ciHost :: String-    , ciPort :: String-    , ciDatabaseName :: String-    , ciUser :: String-    , ciPassword :: String-    }---- | Create temporary database using the given URL to a--- running @pg-harness-server@ REST service. Returns the connection--- information for connecting to the newly created temporary--- database.-createTemporaryDatabase :: String -> IO ConnectionInformation-createTemporaryDatabase url = do-  rsp <- simpleHTTP (postRequest url)-  body <- getResponseBody rsp-  return $ parse body-  where-    parse :: String -> ConnectionInformation-    parse s =-      let (userPass, (_:hostPortDatabase)) = break ((==) '@') s in-      let (user, (_:password)) = break ((==) ':') userPass in-      let (hostPort, (_:databaseName)) = break ((==) '/') hostPortDatabase in-      let (host, (_:port)) = break ((==) ':') hostPort in-        ConnectionInformation host port databaseName user password---- | Convert connection information to a @libpq@ or--- @postgresql-simple@ compatible connection string.-toConnectionString :: ConnectionInformation -> ByteString-toConnectionString (ConnectionInformation host port databaseName user password) =-  B8.pack $-    "host=" ++ host ++ " " ++-    "port=" ++ port ++ " " ++-    "dbname=" ++ databaseName ++ " " ++-    "user=" ++ user ++ " " ++-    "password=" ++ password
+ src/Database/PostgreSQL/Harness/Client.hs view
@@ -0,0 +1,81 @@+{-+    Copyright (c) 2015, Bardur Arantsson+    All rights reserved.++    Redistribution and use in source and binary forms, with or without+    modification, are permitted provided that the following conditions are+    met:++    1. Redistributions of source code must retain the above copyright+    notice, this list of conditions and the following disclaimer.++    2. Redistributions in binary form must reproduce the above copyright+    notice, this list of conditions and the following disclaimer in the+    documentation and/or other materials provided with the distribution.++    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+    HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.+-}+{-|++  Client library for <https://hackage.haskell.org/package/pg-harness-server pg-harness-server>.++  Use the 'createTemporaryDatabase' function to create databases.++-}+module Database.PostgreSQL.Harness.Client+    ( ConnectionInformation(..)+    , createTemporaryDatabase+    , toConnectionString+    ) where++import           Data.ByteString (ByteString)+import qualified Data.ByteString.Char8 as B8+import           Network.HTTP (simpleHTTP, postRequest, getResponseBody)++-- | Connection information to use for connecting to a database.+data ConnectionInformation = ConnectionInformation+    { ciHost :: String+    , ciPort :: String+    , ciDatabaseName :: String+    , ciUser :: String+    , ciPassword :: String+    }++-- | Create temporary database using the given URL to a+-- running @pg-harness-server@ REST service. Returns the connection+-- information for connecting to the newly created temporary+-- database.+createTemporaryDatabase :: String -> IO ConnectionInformation+createTemporaryDatabase url = do+  rsp <- simpleHTTP (postRequest url)+  body <- getResponseBody rsp+  return $ parse body+  where+    parse :: String -> ConnectionInformation+    parse s =+      let (userPass, (_:hostPortDatabase)) = break ((==) '@') s in+      let (user, (_:password)) = break ((==) ':') userPass in+      let (hostPort, (_:databaseName)) = break ((==) '/') hostPortDatabase in+      let (host, (_:port)) = break ((==) ':') hostPort in+        ConnectionInformation host port databaseName user password++-- | Convert connection information to a @libpq@ or+-- @postgresql-simple@ compatible connection string.+toConnectionString :: ConnectionInformation -> ByteString+toConnectionString (ConnectionInformation host port databaseName user password) =+  B8.pack $+    "host=" ++ host ++ " " +++    "port=" ++ port ++ " " +++    "dbname=" ++ databaseName ++ " " +++    "user=" ++ user ++ " " +++    "password=" ++ password