]> gitweb.factorcode.org Git - factor.git/commitdiff
couchdb: make it so couch-put and couch-post calls <json-post-data>
authorBjörn Lindqvist <bjourne@gmail.com>
Fri, 18 Nov 2016 19:05:23 +0000 (20:05 +0100)
committerBjörn Lindqvist <bjourne@gmail.com>
Fri, 18 Nov 2016 19:10:39 +0000 (20:10 +0100)
basis/furnace/auth/providers/couchdb/couchdb.factor
extra/couchdb/couchdb-tests.factor
extra/couchdb/couchdb.factor

index 8c9d47cb045f13e9daa6af678c95959518eefbeb..62accc64106a12a3bdaf82cd07d1f100aea0b754 100644 (file)
@@ -161,7 +161,7 @@ TUPLE: couchdb-auth-provider
     ] H{ } make
     reserve-multiple
     [
-        user>user-hash >json
+        user>user-hash
         "" get-url
         couch-post
     ] [
@@ -219,7 +219,7 @@ M: couchdb-auth-provider update-user ( user provider -- )
         [ drop "_id" of get-url ]
         [ user>user-hash swapd
           2dup check-update drop
-          unify-users >json swap couch-put drop
+          unify-users swap couch-put drop
         ]
         tri
     ] with-variable ;
index 5b4c40e3edf5826d496bd5b03a741f8101f359a6..3cb84d59e09a5b4d432b63c294c2dff5592934d8 100644 (file)
@@ -1,6 +1,7 @@
 ! Copyright (C) 2008 Alex Chapman
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs couchdb kernel namespaces sequences strings tools.test ;
+USING: accessors assocs couchdb hashtables kernel namespaces
+random.data sequences strings tools.test ;
 IN: couchdb.tests
 
 ! You must have a CouchDB server (currently only the version from svn will
@@ -42,5 +43,12 @@ IN: couchdb.tests
        } save-doc ] unit-test
     [ t ] [ "id" get load-doc delete-doc string? ] unit-test
     [ "id" get load-doc ] must-fail
+
+    { t } [
+        "oga" "boga" associate
+        couch get db-url 10 random-string append
+        couch-put "ok" of
+    ] unit-test
+
     [ ] [ couch get delete-db ] unit-test
 ] with-couch
index f0faf94e99bfc09a46c49e4c3641afdb2c31c762..0de1cb95b8bbf6de0027ab0bebf5c42933d80a36 100644 (file)
@@ -42,11 +42,14 @@ PREDICATE: file-exists-error < couchdb-error
 : couch-get ( url -- assoc )
     <get-request> couch-request ;
 
-: couch-put ( post-data url -- assoc )
-    <put-request> couch-request ;
+: <json-post-data> ( assoc -- post-data )
+    >json utf8 encode "application/json" <post-data> swap >>data ;
+
+: couch-put ( assoc url -- assoc' )
+    [ <json-post-data> ] dip <put-request> couch-request ;
 
-: couch-post ( post-data url -- assoc )
-    <post-request> couch-request ;
+: couch-post ( assoc url -- assoc' )
+    [ <json-post-data> ] dip <post-request> couch-request ;
 
 : couch-delete ( url -- assoc )
     <delete-request> couch-request ;
@@ -122,11 +125,8 @@ C: <db> db
     ! TODO: queries. Maybe pass in a hashtable with options
     db-url "_all_docs" append couch-get ;
 
-: <json-post-data> ( assoc -- post-data )
-    >json utf8 encode "application/json" <post-data> swap >>data ;
-
 : compact-db ( db -- )
-    f <json-post-data> swap db-url "_compact" append couch-post response-ok* ;
+    f swap db-url "_compact" append couch-post response-ok* ;
 
 ! documents
 : id> ( assoc -- id ) "_id" of ;
@@ -153,13 +153,13 @@ C: <db> db
     id> id-url ;
 
 : temp-view ( view -- results )
-    <json-post-data> couch get db-url "_temp_view" append couch-post ;
+    couch get db-url "_temp_view" append couch-post ;
 
 : temp-view-map ( map -- results )
     "map" associate temp-view ;
 
 : save-doc-as ( assoc id -- )
-    [ dup <json-post-data> ] dip id-url couch-put response-ok
+    dupd id-url couch-put response-ok
     [ copy-id ] [ copy-rev ] 2bi ;
 
 : save-new-doc ( assoc -- )