packages feed

couchdb-conduit 0.2.0.1 → 0.2.1

raw patch · 2 files changed

+36/−4 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Database.CouchDB.Conduit.DB: couchSecureDB :: MonadCouch m => Path -> [ByteString] -> [ByteString] -> [ByteString] -> [ByteString] -> ResourceT m ()

Files

couchdb-conduit.cabal view
@@ -1,5 +1,5 @@ name:           couchdb-conduit-version:        0.2.0.1
+version:        0.2.1
 cabal-version:  >= 1.8 build-type:     Simple stability:      Experimental
src/Database/CouchDB/Conduit/DB.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DeriveDataTypeable #-} 
 {-# LANGUAGE OverloadedStrings #-} 
 
 {- | CouchDB database methods.
@@ -13,11 +14,18 @@     couchPutDB,
     couchPutDB_,
     couchDeleteDB,
-    couchReplicateDB
+    -- * Replication
+    couchReplicateDB,
+    -- * Security
+    couchSecureDB
 ) where
 
+--import Control.Applicative ((<$>), (<*>), empty)
+
 import qualified Data.ByteString as B
 import qualified Data.Aeson as A
+--import Data.Generics (Data, Typeable)
+--import Data.Default (Default (def))
 
 import Data.Conduit (ResourceT)
 
@@ -27,6 +35,7 @@ import Database.CouchDB.Conduit (MonadCouch(..), Path)
 import Database.CouchDB.Conduit.LowLevel (couch, protect, protect')
 
+
 -- | Create CouchDB database. 
 couchPutDB :: MonadCouch m =>
        Path     -- ^ CouchDB Database name.
@@ -75,5 +84,28 @@             "target" A..= target,
             "create_target" A..= createTarget,
             "continuous" A..= continuous,
-            "cancel" A..= cancel
-        ]+            "cancel" A..= cancel ]
+
+couchSecureDB :: MonadCouch m => 
+       Path             -- ^ Database
+    -> [B.ByteString]   -- ^ Admin roles 
+    -> [B.ByteString]   -- ^ Admin names
+    -> [B.ByteString]   -- ^ Readers roles 
+    -> [B.ByteString]   -- ^ Readers names
+    -> ResourceT m ()       
+couchSecureDB p adminRoles adminNames readersRoles readersNames = 
+    couch HT.methodPut (`B.append` B.append "/" p) [] []
+            reqBody protect' 
+            >> return ()
+  where
+    reqBody = H.RequestBodyLBS $ A.encode $ A.object [
+            "admins" A..= A.object [ "roles" A..= adminRoles,
+                                     "names" A..= adminNames ],
+            "readers" A..= A.object [ "roles" A..= readersRoles,
+                                     "names" A..= readersNames ] ]
+        
+        
+        
+        
+        
+