]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Resource/TrackBack.hs
Resurrection from bitrot
[Rakka.git] / Rakka / Resource / TrackBack.hs
index ad367cd0f287fbb783d30356c153cf410d2665df..df1f5c3f4e07a13cc114ca2c991d490ea4639660 100644 (file)
@@ -13,7 +13,7 @@ import           Data.Time
 import           Network.Browser
 import           Network.HTTP
 import           Network.HTTP.Lucu
-import           Network.HTTP.Lucu.Utils
+import           Network.HTTP.Lucu.Response
 import           Network.URI
 import           Rakka.Environment
 import           Rakka.Page
@@ -46,7 +46,7 @@ resTrackBack env
       }
     where
       toPageName :: [String] -> PageName
-      toPageName = decodePageName . joinWith "/"
+      toPageName = UTF8.decodeString . joinPath
 
 
 handlePost :: Environment -> PageName -> Resource ()
@@ -74,14 +74,17 @@ handlePost env name
           | otherwise
               = do tbListM <- return . fromMaybe [] =<< getAttachment (envStorage env) (pageName page) "trackbacks" Nothing
                    st      <- putAttachment (envStorage env) Nothing Nothing (pageName page) "trackbacks" (tbParam : tbListM)
-                   setStatus st
+                   if isSuccessful st then
+                       outputResponse NoError
+                     else
+                       setStatus st
 
 
 validateTrackBack :: [(String, String)] -> Resource (Maybe TrackBack)
 validateTrackBack form
     = do let title    = get' "title"
              excerpt  = get' "excerpt"
-             blogName = get' "blogName"
+             blogName = get' "blog_name"
          case get' "url" of
            Nothing
                -> do outputResponse (Error 1 "Parameter `url' is missing.")
@@ -112,9 +115,11 @@ outputResponse res
                                      >>>
                                      mkResponseTree
                                      >>>
-                                     writeDocumentToString [ (a_indent, v_1) ]
+                                     writeDocumentToString [ (a_indent         , v_1 )
+                                                           , (a_output_encoding, utf8)
+                                                           , (a_no_xml_pi      , v_0 ) ]
                                    )
-         output xmlStr
+         output $ UTF8.encodeString xmlStr
     where
       mkResponseTree :: ArrowXml a => a b XmlTree
       mkResponseTree