2889211efd
Android build is now almost entirely automated, except for the installation of cross-built libs needed for XMPP. Haskell packages updated to current newest versions. Am not currently pinning the versions, as that didn't work out last time I tried it (must have missed some pins before).
377 lines
13 KiB
Diff
377 lines
13 KiB
Diff
From 2b5fc33607720d0cccd7d8f9cb7232042ead73e6 Mon Sep 17 00:00:00 2001
|
|
From: foo <foo@bar>
|
|
Date: Sun, 22 Sep 2013 00:36:56 +0000
|
|
Subject: [PATCH] expand TH
|
|
|
|
used the EvilSplicer
|
|
+ manual fix ups
|
|
---
|
|
DAV.cabal | 20 +--
|
|
Network/Protocol/HTTP/DAV.hs | 73 ++++++-----
|
|
Network/Protocol/HTTP/DAV/TH.hs | 196 +++++++++++++++++++++++++++-
|
|
dist/build/HSDAV-0.4.1.o | Bin 140080 -> 0 bytes
|
|
dist/build/Network/Protocol/HTTP/DAV.hi | Bin 34549 -> 57657 bytes
|
|
dist/build/Network/Protocol/HTTP/DAV.o | Bin 160248 -> 201932 bytes
|
|
dist/build/Network/Protocol/HTTP/DAV/TH.hi | Bin 17056 -> 18733 bytes
|
|
dist/build/Network/Protocol/HTTP/DAV/TH.o | Bin 19672 -> 28120 bytes
|
|
dist/build/autogen/Paths_DAV.hs | 18 ++-
|
|
dist/build/autogen/cabal_macros.h | 45 +++----
|
|
dist/build/libHSDAV-0.4.1.a | Bin 200082 -> 260188 bytes
|
|
dist/package.conf.inplace | 2 -
|
|
dist/setup-config | 2 -
|
|
13 files changed, 266 insertions(+), 90 deletions(-)
|
|
delete mode 100644 dist/build/HSDAV-0.4.1.o
|
|
delete mode 100644 dist/package.conf.inplace
|
|
delete mode 100644 dist/setup-config
|
|
|
|
diff --git a/DAV.cabal b/DAV.cabal
|
|
index 06b3a8b..90368c6 100644
|
|
--- a/DAV.cabal
|
|
+++ b/DAV.cabal
|
|
@@ -38,25 +38,7 @@ library
|
|
, transformers >= 0.3
|
|
, xml-conduit >= 1.0 && <= 1.2
|
|
, xml-hamlet >= 0.4 && <= 0.5
|
|
-executable hdav
|
|
- main-is: hdav.hs
|
|
- ghc-options: -Wall
|
|
- build-depends: base >= 4.5 && <= 5
|
|
- , bytestring
|
|
- , bytestring
|
|
- , case-insensitive >= 0.4
|
|
- , containers
|
|
- , http-conduit >= 1.9.0
|
|
- , http-types >= 0.7
|
|
- , lens >= 3.0
|
|
- , lifted-base >= 0.1
|
|
- , mtl >= 2.1
|
|
- , network >= 2.3
|
|
- , optparse-applicative
|
|
- , resourcet >= 0.3
|
|
- , transformers >= 0.3
|
|
- , xml-conduit >= 1.0 && <= 1.2
|
|
- , xml-hamlet >= 0.4 && <= 0.5
|
|
+ , text
|
|
|
|
source-repository head
|
|
type: git
|
|
diff --git a/Network/Protocol/HTTP/DAV.hs b/Network/Protocol/HTTP/DAV.hs
|
|
index 8ffc270..d064a8f 100644
|
|
--- a/Network/Protocol/HTTP/DAV.hs
|
|
+++ b/Network/Protocol/HTTP/DAV.hs
|
|
@@ -28,12 +28,12 @@ module Network.Protocol.HTTP.DAV (
|
|
, deleteContent
|
|
, moveContent
|
|
, makeCollection
|
|
- , caldavReport
|
|
, module Network.Protocol.HTTP.DAV.TH
|
|
) where
|
|
|
|
import Network.Protocol.HTTP.DAV.TH
|
|
|
|
+import qualified Data.Text
|
|
import Control.Applicative (liftA2)
|
|
import Control.Exception.Lifted (catchJust, finally, bracketOnError)
|
|
import Control.Lens ((.~), (^.))
|
|
@@ -200,11 +200,6 @@ props2patch = XML.renderLBS XML.def . patch . props . fromDocument
|
|
, "{DAV:}supportedlock"
|
|
]
|
|
|
|
-caldavReportM :: MonadResourceBase m => DAVState m XML.Document
|
|
-caldavReportM = do
|
|
- let ahs = [(hContentType, "application/xml; charset=\"utf-8\"")]
|
|
- calrresp <- davRequest "REPORT" ahs (xmlBody calendarquery)
|
|
- return $ (XML.parseLBS_ def . responseBody) calrresp
|
|
|
|
getProps :: String -> B.ByteString -> B.ByteString -> Maybe Depth -> IO XML.Document
|
|
getProps url username password md = withDS url username password md getPropsM
|
|
@@ -246,9 +241,6 @@ moveContent :: String -> B.ByteString -> B.ByteString -> B.ByteString -> IO ()
|
|
moveContent url newurl username password = withDS url username password Nothing $
|
|
moveContentM newurl
|
|
|
|
-caldavReport :: String -> B.ByteString -> B.ByteString -> IO XML.Document
|
|
-caldavReport url username password = withDS url username password (Just Depth1) $ caldavReportM
|
|
-
|
|
-- | Creates a WebDAV collection, which is similar to a directory.
|
|
--
|
|
-- Returns False if the collection could not be made due to an intermediate
|
|
@@ -264,28 +256,45 @@ makeCollection url username password = withDS url username password Nothing $
|
|
propname :: XML.Document
|
|
propname = XML.Document (XML.Prologue [] Nothing []) root []
|
|
where
|
|
- root = XML.Element "D:propfind" (Map.fromList [("xmlns:D", "DAV:")]) [xml|
|
|
-<D:allprop>
|
|
-|]
|
|
-
|
|
+ root = XML.Element "D:propfind" (Map.fromList [("xmlns:D", "DAV:")]) $ concat
|
|
+ [[XML.NodeElement
|
|
+ (XML.Element
|
|
+ (XML.Name
|
|
+ (Data.Text.pack "D:allprop") Nothing Nothing)
|
|
+ Map.empty
|
|
+ (concat []))]]
|
|
locky :: XML.Document
|
|
locky = XML.Document (XML.Prologue [] Nothing []) root []
|
|
- where
|
|
- root = XML.Element "D:lockinfo" (Map.fromList [("xmlns:D", "DAV:")]) [xml|
|
|
-<D:lockscope>
|
|
- <D:exclusive>
|
|
-<D:locktype>
|
|
- <D:write>
|
|
-<D:owner>Haskell DAV user
|
|
-|]
|
|
-
|
|
-calendarquery :: XML.Document
|
|
-calendarquery = XML.Document (XML.Prologue [] Nothing []) root []
|
|
- where
|
|
- root = XML.Element "C:calendar-query" (Map.fromList [("xmlns:D", "DAV:"),("xmlns:C", "urn:ietf:params:xml:ns:caldav")]) [xml|
|
|
-<D:prop>
|
|
- <D:getetag>
|
|
- <C:calendar-data>
|
|
-<C:filter>
|
|
- <C:comp-filter name="VCALENDAR">
|
|
-|]
|
|
+ where
|
|
+ root = XML.Element "D:lockinfo" (Map.fromList [("xmlns:D", "DAV:")]) $ concat
|
|
+ [[XML.NodeElement
|
|
+ (XML.Element
|
|
+ (XML.Name
|
|
+ (Data.Text.pack "D:lockscope") Nothing Nothing)
|
|
+ Map.empty
|
|
+ (concat
|
|
+ [[XML.NodeElement
|
|
+ (XML.Element
|
|
+ (XML.Name
|
|
+ (Data.Text.pack "D:exclusive") Nothing Nothing)
|
|
+ Map.empty
|
|
+ (concat []))]]))],
|
|
+ [XML.NodeElement
|
|
+ (XML.Element
|
|
+ (XML.Name
|
|
+ (Data.Text.pack "D:locktype") Nothing Nothing)
|
|
+ Map.empty
|
|
+ (concat
|
|
+ [[XML.NodeElement
|
|
+ (XML.Element
|
|
+ (XML.Name (Data.Text.pack "D:write") Nothing Nothing)
|
|
+ Map.empty
|
|
+ (concat []))]]))],
|
|
+ [XML.NodeElement
|
|
+ (XML.Element
|
|
+ (XML.Name (Data.Text.pack "D:owner") Nothing Nothing)
|
|
+ Map.empty
|
|
+ (concat
|
|
+ [[XML.NodeContent
|
|
+ (Data.Text.pack "Haskell DAV user")]]))]]
|
|
+
|
|
diff --git a/Network/Protocol/HTTP/DAV/TH.hs b/Network/Protocol/HTTP/DAV/TH.hs
|
|
index 9fb3495..18b8df7 100644
|
|
--- a/Network/Protocol/HTTP/DAV/TH.hs
|
|
+++ b/Network/Protocol/HTTP/DAV/TH.hs
|
|
@@ -20,7 +20,8 @@
|
|
|
|
module Network.Protocol.HTTP.DAV.TH where
|
|
|
|
-import Control.Lens (makeLenses)
|
|
+import qualified Control.Lens.Type
|
|
+import qualified Data.Functor
|
|
import qualified Data.ByteString as B
|
|
import Network.HTTP.Conduit (Manager, Request)
|
|
|
|
@@ -46,4 +47,195 @@ data DAVContext a = DAVContext {
|
|
, _basicpassword :: B.ByteString
|
|
, _depth :: Maybe Depth
|
|
}
|
|
-makeLenses ''DAVContext
|
|
+allowedMethods ::
|
|
+ Control.Lens.Type.Lens' (DAVContext a_a4I4) [B.ByteString]
|
|
+allowedMethods
|
|
+ _f_a5GM
|
|
+ (DAVContext __allowedMethods'_a5GN
|
|
+ __baseRequest_a5GP
|
|
+ __complianceClasses_a5GQ
|
|
+ __httpManager_a5GR
|
|
+ __lockToken_a5GS
|
|
+ __basicusername_a5GT
|
|
+ __basicpassword_a5GU
|
|
+ __depth_a5GV)
|
|
+ = ((\ __allowedMethods_a5GO
|
|
+ -> DAVContext
|
|
+ __allowedMethods_a5GO
|
|
+ __baseRequest_a5GP
|
|
+ __complianceClasses_a5GQ
|
|
+ __httpManager_a5GR
|
|
+ __lockToken_a5GS
|
|
+ __basicusername_a5GT
|
|
+ __basicpassword_a5GU
|
|
+ __depth_a5GV)
|
|
+ Data.Functor.<$> (_f_a5GM __allowedMethods'_a5GN))
|
|
+{-# INLINE allowedMethods #-}
|
|
+baseRequest ::
|
|
+ Control.Lens.Type.Lens (DAVContext a_a4I4) (DAVContext a_a5GW) (Request a_a4I4) (Request a_a5GW)
|
|
+baseRequest
|
|
+ _f_a5GX
|
|
+ (DAVContext __allowedMethods_a5GY
|
|
+ __baseRequest'_a5GZ
|
|
+ __complianceClasses_a5H1
|
|
+ __httpManager_a5H2
|
|
+ __lockToken_a5H3
|
|
+ __basicusername_a5H4
|
|
+ __basicpassword_a5H5
|
|
+ __depth_a5H6)
|
|
+ = ((\ __baseRequest_a5H0
|
|
+ -> DAVContext
|
|
+ __allowedMethods_a5GY
|
|
+ __baseRequest_a5H0
|
|
+ __complianceClasses_a5H1
|
|
+ __httpManager_a5H2
|
|
+ __lockToken_a5H3
|
|
+ __basicusername_a5H4
|
|
+ __basicpassword_a5H5
|
|
+ __depth_a5H6)
|
|
+ Data.Functor.<$> (_f_a5GX __baseRequest'_a5GZ))
|
|
+{-# INLINE baseRequest #-}
|
|
+basicpassword ::
|
|
+ Control.Lens.Type.Lens' (DAVContext a_a4I4) B.ByteString
|
|
+basicpassword
|
|
+ _f_a5H7
|
|
+ (DAVContext __allowedMethods_a5H8
|
|
+ __baseRequest_a5H9
|
|
+ __complianceClasses_a5Ha
|
|
+ __httpManager_a5Hb
|
|
+ __lockToken_a5Hc
|
|
+ __basicusername_a5Hd
|
|
+ __basicpassword'_a5He
|
|
+ __depth_a5Hg)
|
|
+ = ((\ __basicpassword_a5Hf
|
|
+ -> DAVContext
|
|
+ __allowedMethods_a5H8
|
|
+ __baseRequest_a5H9
|
|
+ __complianceClasses_a5Ha
|
|
+ __httpManager_a5Hb
|
|
+ __lockToken_a5Hc
|
|
+ __basicusername_a5Hd
|
|
+ __basicpassword_a5Hf
|
|
+ __depth_a5Hg)
|
|
+ Data.Functor.<$> (_f_a5H7 __basicpassword'_a5He))
|
|
+{-# INLINE basicpassword #-}
|
|
+basicusername ::
|
|
+ Control.Lens.Type.Lens' (DAVContext a_a4I4) B.ByteString
|
|
+basicusername
|
|
+ _f_a5Hh
|
|
+ (DAVContext __allowedMethods_a5Hi
|
|
+ __baseRequest_a5Hj
|
|
+ __complianceClasses_a5Hk
|
|
+ __httpManager_a5Hl
|
|
+ __lockToken_a5Hm
|
|
+ __basicusername'_a5Hn
|
|
+ __basicpassword_a5Hp
|
|
+ __depth_a5Hq)
|
|
+ = ((\ __basicusername_a5Ho
|
|
+ -> DAVContext
|
|
+ __allowedMethods_a5Hi
|
|
+ __baseRequest_a5Hj
|
|
+ __complianceClasses_a5Hk
|
|
+ __httpManager_a5Hl
|
|
+ __lockToken_a5Hm
|
|
+ __basicusername_a5Ho
|
|
+ __basicpassword_a5Hp
|
|
+ __depth_a5Hq)
|
|
+ Data.Functor.<$> (_f_a5Hh __basicusername'_a5Hn))
|
|
+{-# INLINE basicusername #-}
|
|
+complianceClasses ::
|
|
+ Control.Lens.Type.Lens' (DAVContext a_a4I4) [B.ByteString]
|
|
+complianceClasses
|
|
+ _f_a5Hr
|
|
+ (DAVContext __allowedMethods_a5Hs
|
|
+ __baseRequest_a5Ht
|
|
+ __complianceClasses'_a5Hu
|
|
+ __httpManager_a5Hw
|
|
+ __lockToken_a5Hx
|
|
+ __basicusername_a5Hy
|
|
+ __basicpassword_a5Hz
|
|
+ __depth_a5HA)
|
|
+ = ((\ __complianceClasses_a5Hv
|
|
+ -> DAVContext
|
|
+ __allowedMethods_a5Hs
|
|
+ __baseRequest_a5Ht
|
|
+ __complianceClasses_a5Hv
|
|
+ __httpManager_a5Hw
|
|
+ __lockToken_a5Hx
|
|
+ __basicusername_a5Hy
|
|
+ __basicpassword_a5Hz
|
|
+ __depth_a5HA)
|
|
+ Data.Functor.<$> (_f_a5Hr __complianceClasses'_a5Hu))
|
|
+{-# INLINE complianceClasses #-}
|
|
+depth ::
|
|
+ Control.Lens.Type.Lens' (DAVContext a_a4I4) (Maybe Depth)
|
|
+depth
|
|
+ _f_a5HB
|
|
+ (DAVContext __allowedMethods_a5HC
|
|
+ __baseRequest_a5HD
|
|
+ __complianceClasses_a5HE
|
|
+ __httpManager_a5HF
|
|
+ __lockToken_a5HG
|
|
+ __basicusername_a5HH
|
|
+ __basicpassword_a5HI
|
|
+ __depth'_a5HJ)
|
|
+ = ((\ __depth_a5HK
|
|
+ -> DAVContext
|
|
+ __allowedMethods_a5HC
|
|
+ __baseRequest_a5HD
|
|
+ __complianceClasses_a5HE
|
|
+ __httpManager_a5HF
|
|
+ __lockToken_a5HG
|
|
+ __basicusername_a5HH
|
|
+ __basicpassword_a5HI
|
|
+ __depth_a5HK)
|
|
+ Data.Functor.<$> (_f_a5HB __depth'_a5HJ))
|
|
+{-# INLINE depth #-}
|
|
+httpManager ::
|
|
+ Control.Lens.Type.Lens' (DAVContext a_a4I4) Manager
|
|
+httpManager
|
|
+ _f_a5HL
|
|
+ (DAVContext __allowedMethods_a5HM
|
|
+ __baseRequest_a5HN
|
|
+ __complianceClasses_a5HO
|
|
+ __httpManager'_a5HP
|
|
+ __lockToken_a5HR
|
|
+ __basicusername_a5HS
|
|
+ __basicpassword_a5HT
|
|
+ __depth_a5HU)
|
|
+ = ((\ __httpManager_a5HQ
|
|
+ -> DAVContext
|
|
+ __allowedMethods_a5HM
|
|
+ __baseRequest_a5HN
|
|
+ __complianceClasses_a5HO
|
|
+ __httpManager_a5HQ
|
|
+ __lockToken_a5HR
|
|
+ __basicusername_a5HS
|
|
+ __basicpassword_a5HT
|
|
+ __depth_a5HU)
|
|
+ Data.Functor.<$> (_f_a5HL __httpManager'_a5HP))
|
|
+{-# INLINE httpManager #-}
|
|
+lockToken ::
|
|
+ Control.Lens.Type.Lens' (DAVContext a_a4I4) (Maybe B.ByteString)
|
|
+lockToken
|
|
+ _f_a5HV
|
|
+ (DAVContext __allowedMethods_a5HW
|
|
+ __baseRequest_a5HX
|
|
+ __complianceClasses_a5HY
|
|
+ __httpManager_a5HZ
|
|
+ __lockToken'_a5I0
|
|
+ __basicusername_a5I2
|
|
+ __basicpassword_a5I3
|
|
+ __depth_a5I4)
|
|
+ = ((\ __lockToken_a5I1
|
|
+ -> DAVContext
|
|
+ __allowedMethods_a5HW
|
|
+ __baseRequest_a5HX
|
|
+ __complianceClasses_a5HY
|
|
+ __httpManager_a5HZ
|
|
+ __lockToken_a5I1
|
|
+ __basicusername_a5I2
|
|
+ __basicpassword_a5I3
|
|
+ __depth_a5I4)
|
|
+ Data.Functor.<$> (_f_a5HV __lockToken'_a5I0))
|
|
+{-# INLINE lockToken #-}
|