[Fencommits] fenserve: I can get and put data!

Benja Fallenstein benja.fallenstein at gmail.com
Thu Apr 5 18:57:49 EEST 2007


Thu Apr  5 18:57:27 EEST 2007  Benja Fallenstein <benja.fallenstein at gmail.com>
  * I can get and put data!
diff -rN -u old-fenserve/FenServe.hs new-fenserve/FenServe.hs
--- old-fenserve/FenServe.hs	2007-04-05 18:57:49.000000000 +0300
+++ new-fenserve/FenServe.hs	2007-04-05 18:57:49.000000000 +0300
@@ -145,8 +145,10 @@
                        
 data File = File Node
 
-instance FromRDF File where fromRDF = error "FenServe: XXX"
-instance ToRDF File where toRDF = error "FenServe: XXX"
+instance FromRDF File where 
+  fromRDF g n = fmap File $ fromRDFConn fs_representation fromRDF g n
+instance ToRDF File where
+  toRDF (File n) = toResourceRDF fs_File [addRDFConn fs_representation toRDF n]
 
 resolveFile rs (File n) put' [] = return $ Resource {
     getResource = getData n,
@@ -169,8 +171,12 @@
              (toRDFPair fs_filename toRDF fs_spec toRDF) (Map.toList m)
         ]
 
-resolveDir rs (Dir m) put' (p:ps) =
-    resolve' rs (m Map.! p) (\n -> put' $ Dir $ Map.insert p n m) ps
+resolveDir rs (Dir m) put' (p:ps) = case Map.lookup p m of
+    Just n -> resolve' rs n (\n' -> put' $ Dir $ Map.insert p n' m) ps
+    Nothing -> do emptyBlock <- liftM bIRI $ addBlock ByteString.empty
+                  resolveFile rs (File emptyBlock)
+                                 (\f' -> do n' <- addData f'
+                                            put' $ Dir $ Map.insert p n' m) ps
 resolveDir rs dir put' [] = resolveDir rs dir put' [""]
 
 




More information about the Fencommits mailing list