summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-07-04 19:31:45 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-07-04 19:33:11 -0400
commit5c69ac14eb47e284ab4f4dec44ed6ab3581d416f (patch)
tree74edda6e54f71a61176e5487e36ebe3198a13825
parent71c783bf24f2aa4ab911d8279081bcad08951ece (diff)
Drop the dependency on the haskell curl bindings, use regular haskell HTTP.
-rw-r--r--Remote/Web.hs29
-rw-r--r--debian/changelog1
-rw-r--r--debian/control2
-rw-r--r--doc/install.mdwn2
-rw-r--r--doc/install/Fedora.mdwn1
-rw-r--r--doc/install/OSX.mdwn1
-rw-r--r--git-annex.cabal4
7 files changed, 25 insertions, 15 deletions
diff --git a/Remote/Web.hs b/Remote/Web.hs
index 71591b7aa..d3d140d73 100644
--- a/Remote/Web.hs
+++ b/Remote/Web.hs
@@ -14,10 +14,9 @@ module Remote.Web (
import Control.Monad.State (liftIO)
import Control.Exception
import System.FilePath
-import Network.Curl.Easy
-import Network.Curl.Opts
-import Network.Curl.Types
-import Network.Curl.Code
+import Network.Browser
+import Network.HTTP
+import Network.URI
import Types
import Types.Remote
@@ -31,6 +30,8 @@ import PresenceLog
import LocationLog
import Locations
+type URLString = String
+
remote :: RemoteType Annex
remote = RemoteType {
typename = "web",
@@ -111,13 +112,19 @@ checkKey' (u:us) = do
urlexists :: URLString -> IO Bool
urlexists url = do
- curl <- initialize
- _ <- setopt curl (CurlURL url)
- _ <- setopt curl (CurlNoBody True)
- _ <- setopt curl (CurlFailOnError True)
- _ <- setopt curl (CurlFollowLocation True)
- res <- perform curl
- return $ res == CurlOK
+ case parseURI url of
+ Nothing -> return False
+ Just u -> do
+ (_, r) <- Network.Browser.browse $ do
+ setErrHandler ignore
+ setOutHandler ignore
+ setAllowRedirects True
+ request (mkRequest HEAD u :: Request_String)
+ case rspCode r of
+ (2,_,_) -> return True
+ _ -> return False
+ where
+ ignore = const $ return ()
download :: [URLString] -> FilePath -> Annex Bool
download [] _ = return False
diff --git a/debian/changelog b/debian/changelog
index 8f559bb02..37d03ceb2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,6 +5,7 @@ git-annex (3.20110703) UNRELEASED; urgency=low
hard link made to it.
* uninit: Use unannex in --fast mode, to support unannexing multiple
files that link to the same content.
+ * Drop the dependency on the haskell curl bindings, use regular haskell HTTP.
-- Joey Hess <joeyh@debian.org> Mon, 04 Jul 2011 15:50:21 -0400
diff --git a/debian/control b/debian/control
index 07a9e4bbb..434723384 100644
--- a/debian/control
+++ b/debian/control
@@ -9,8 +9,8 @@ Build-Depends:
libghc-pcre-light-dev,
libghc-sha-dev,
libghc-dataenc-dev,
+ libghc-http-dev,
libghc-utf8-string-dev,
- libghc-curl-dev,
libghc-hs3-dev (>= 0.5.6),
libghc-testpack-dev [any-i386 any-amd64],
ikiwiki,
diff --git a/doc/install.mdwn b/doc/install.mdwn
index 23a0da902..38963695b 100644
--- a/doc/install.mdwn
+++ b/doc/install.mdwn
@@ -25,7 +25,7 @@ To build and use git-annex, you will need:
* [dataenc](http://hackage.haskell.org/package/dataenc)
* [TestPack](http://hackage.haskell.org/cgi-bin/hackage-scripts/package/testpack)
* [QuickCheck 2](http://hackage.haskell.org/package/QuickCheck)
- * [curl](http://hackage.haskell.org/package/curl)
+ * [HTTP](http://hackage.haskell.org/package/HTTP)
* [hS3](http://hackage.haskell.org/package/hS3) (optional, but recommended)
* Shell commands
* [git](http://git-scm.com/)
diff --git a/doc/install/Fedora.mdwn b/doc/install/Fedora.mdwn
index 0050295e8..7814eec94 100644
--- a/doc/install/Fedora.mdwn
+++ b/doc/install/Fedora.mdwn
@@ -9,6 +9,7 @@ sudo cabal install pcre-light
sudo cabal install quickcheck
sudo cabal install SHA
sudo cabal install dataenc
+sudo cabal install HTTP
sudo cabal install hS3
git clone git://git-annex.branchable.com/
diff --git a/doc/install/OSX.mdwn b/doc/install/OSX.mdwn
index 81ffe1d03..ade4fa30e 100644
--- a/doc/install/OSX.mdwn
+++ b/doc/install/OSX.mdwn
@@ -7,6 +7,7 @@ sudo cabal install pcre-light
sudo cabal install quickcheck
sudo cabal install SHA
sudo cabal install dataenc
+sudo cabal install HTTP
sudo cabal install hS3 # optional
# optional: this will enable the gnu tools, (to give sha224sum etc..., it does not override the BSD userland)
diff --git a/git-annex.cabal b/git-annex.cabal
index d5a066cdf..f7a2bde85 100644
--- a/git-annex.cabal
+++ b/git-annex.cabal
@@ -30,14 +30,14 @@ Executable git-annex
Main-Is: git-annex.hs
Build-Depends: haskell98, MissingH, hslogger, directory, filepath,
unix, containers, utf8-string, network, mtl, bytestring, old-locale, time,
- pcre-light, extensible-exceptions, dataenc, SHA, process, hS3, curl,
+ pcre-light, extensible-exceptions, dataenc, SHA, process, hS3, HTTP
base < 5
Executable git-annex-shell
Main-Is: git-annex-shell.hs
Build-Depends: haskell98, MissingH, hslogger, directory, filepath,
unix, containers, utf8-string, network, mtl, bytestring, old-locale, time,
- pcre-light, extensible-exceptions, dataenc, SHA, process, hS3, curl,
+ pcre-light, extensible-exceptions, dataenc, SHA, process, hS3, HTTP
base < 5
Executable git-union-merge